Jquery 使用javascript计算以克服垂直对齐:中间对齐

Jquery 使用javascript计算以克服垂直对齐:中间对齐,jquery,html,css,if-statement,Jquery,Html,Css,If Statement,我正试图写一个函数来 找到图像的高度 执行计算(200px-图像高度) 为每个不同的缩略图添加css样式(.imgk{margin top:“计算值”}) 我无法为页边距顶部设置固定值,因为图像大小不同。它们被放置在一个单独的div中,我已经将max width和max height设置为200x200 px。我想如果我能计算并将css添加到每个图像中 注意:我试图克服垂直对齐:中间,因为div是display:block。(对于显示:表格单元格,垂直对齐将起作用,但图像(div)不会改变行以适

我正试图写一个函数来

  • 找到图像的高度
  • 执行计算(200px-图像高度)
  • 为每个不同的缩略图添加css样式(
    .imgk{margin top:“计算值”}
  • 我无法为
    页边距顶部设置固定值,因为图像大小不同。它们被放置在一个单独的
    div
    中,我已经将
    max width
    max height
    设置为200x200 px。我想如果我能计算并将css添加到每个图像中

    注意:我试图克服
    垂直对齐:中间
    ,因为div是
    display:block
    。(对于
    显示:表格单元格
    ,垂直对齐将起作用,但图像(div)不会改变行以适应窗口。)

    这就是我现在看到的,chrome说“img”没有定义

    <div id="container_imgk">
        <div><a href="image-1.jpg"><img src="image-1.jpg" class="imgk"></a></div>
        <div><a href="image-2.jpg"><img src="image-2.jpg" class="imgk"></a></div>
    </div>
    
    <script>
    var img_th = 0;//define the variable to 0 for each new image?
    
    if ($("img").hasClass('imgk')) {//only apply the follow to img with class imgk
    var img_th = $((200-$("img").height())/2);//the caluation
        $("img").css('margin-top',img_th);//add css to class imgk
    });
    </script>
    
    
    var img_th=0//为每个新图像将变量定义为0?
    if($((“img”).hasglass('imgk')){//仅将以下内容应用于具有imgk类的img
    var img_th=$((200-$(“img”).height())/2);//计算
    $(“img”).css('margin-top',img_th);//将css添加到类imgk中
    });
    
    非常感谢。

    使用

    $('img.imgk').each(function(){
        var self = $(this),
            height  = self.height();
    
        self.css({
           'margin-top': (200 - height)/2
        });
    });
    
    jQuery方法接受函数作为参数,您可以使用:

    $('img.imgk').css('margin-top', function(){
         return (200 - $(this).height()) / 2;
    });
    
    您可以尝试以下位置:

    例如:

    $('img.imgk').each(function(){
      $(this).position({
       my: "center",
       at: "center",
       of: "#targetElement"
      });
    });
    

    您有多个
    img
    元素,因此必须在循环中执行该操作。除此之外,我怀疑你是否真的需要JS;您应该描述真正的问题,并显示导致问题的确切代码。您应该提供一个在线示例,因为JSFIDLE复制了您的问题,听起来很像XY问题:谢谢Gaby、CBroe、Wolff。我将尝试建议的代码,如果不起作用。我将尝试简化html以向大家展示。请问,这段代码与Gaby的主要区别是什么?(我不是故意粗鲁。只是我对jquery和javascript的知识不多。)这与Gaby的行为相同,只是稍微紧凑一点。我发布它的原因是为了展示如何使用jQuery
    .css()
    方法