【问题标题】:element.height returns visible height - I want total?element.height 返回可见高度 - 我想要总高度?
【发布时间】:2013-02-22 22:11:50
【问题描述】:

所以显然这只是发生在我身上 - 我想不出为什么,但如果它有效,我很高兴 :)

我有一个全屏幻灯片,我创建了一个函数,可以垂直居中任何太大的图像。

    function fixImages(){
    maxheight = $('.index-slide-container').height();
    $('.index-slide-container img').each( function(index, ele){
        if (ele.height > maxheight){
            offset = ( maxheight - ele.height ) / 2;
            $(ele).css('top', offset + 'px');
        }
    });
}
fixImages();

然而,ele.height 返回图像可见部分的高度(它的容器的高度,因为它有overflow:hidden,即使当我console.log(ele) 并展开元素时,“高度”显然是正确的值。

我也试过$(ele).height()$(ele).css('height')$(ele).outerHeight()ele.clientHeight;所有这些都返回相同的。

谢谢

【问题讨论】:

  • height() 不起作用?请更具体或给我们一点小提琴,我不明白这是怎么回事......
  • 我添加了一些console.log。在这里找到它:65.39.128.45/~apretty

标签: javascript jquery height image


【解决方案1】:

我做了一些测试,$('img').height();正在给我正确的图片高度。

如果您希望图片垂直居中,为什么不使用 css 的绝对定位,例如:

.index-slide-container img {
    position:absolute;
    top:50%;
}

然后,您可以使用 jQuery 以编程方式设置负边距:

 $('.index-slide-container img').each( function(i, e){
     var height = $(e).height() / 2;
     $(e).css({'margin-top':'-'+height});
 });

【讨论】:

  • 用我的方法,我只在必要时将图像居中,如果用户没有启用js,那么图像仍然有效。如果我们按照你的方式做,顶部有 50% 的空白。有趣的是,我看不出这些方法对我不起作用的任何原因:/
  • 这不是一个真正的解决方案,因为我已经尝试过$(ele).height(),它返回的结果与ele.height 和其余部分相同
  • 所以?它是图像元素的高度,它应该是你想要的。请试着用一个具体的例子来摆弄。
  • 转到65.39.128.45/~apretty 并查看控制台。在.each(function(ele) 里面我放了console.log(ele)console.log(ele.height)。请记住 $(ele).height() 返回相同的值
  • 啊,我们看到了所有的高度和偏移量。好像效果不错,问题出在哪里?
猜你喜欢
  • 2014-04-17
  • 2016-05-16
  • 2015-09-02
  • 2014-02-11
  • 1970-01-01
  • 1970-01-01
  • 2013-06-28
  • 2013-07-29
  • 1970-01-01
相关资源
最近更新 更多