【问题标题】:Jquery - Vertical centering using the parent height works. Sort ofJquery - 使用父高度垂直居中。有点
【发布时间】:2012-04-13 22:01:19
【问题描述】:

所以,我在<ul><li><a> <img> </a></li></ul> 中有X 个图像要垂直居中(下面jquery 中的类名是实际的<img>)。 这工作得很好,但是......它只取第一个值并将其应用于其余图像,导致第一个被居中而其他不是。

我可能会补充一点,所有图像的高度和宽度都不同。到目前为止,宽度已经得到处理,只需在锚标签上使用text-align: center;

$(window).load(function(){
    var parent_height = $('.tv-list-channel-logo').parent().height();
    var image_height = $('.tv-list-channel-logo').height();
    var top_margin = (parent_height - image_height)/2;
    $('.tv-list-channel-logo').css( 'margin-top' , top_margin);
});

我已经盯着这个看了很长一段时间了,我肯定错过了一些明显的东西。

【问题讨论】:

  • 您是否尝试过将它们绝对定位在相关容器内?
  • 是的,但我应该在第一篇文章中提到图像具有不同的高度和宽度。
  • 使用我的建议以及下面Ryan P 的答案。循环遍历每个图像并使用 each 执行此计算

标签: jquery css image center


【解决方案1】:

如果图像需要不同的值,您需要遍历它们。尝试使用$('.tv-list-channel-logo').each( function... )。在.each里面,this指的是当前元素。

编辑:这是.each 的示例:

// `.each` takes each selected element and calls the callback on each one
$('.tv-list-channel-logo').each( function( ) {
    // `this` refers to the current .tv-list-channel-logo element
    var parent_height = $(this).parent().height();
    var image_height = $(this).height();
    var top_margin = (parent_height - image_height)/2;
    $(this).css( 'margin-top' , top_margin);
    // I just replaced all instances of `'.tv-list-channel-logo'` with `this`
} );

【讨论】:

  • 我不太确定这是否是您的意思,但它不起作用。 var image_height = $('.tv-list-channel-logo').each().height();
  • 我的大脑中确实有一些有价值的东西被拉紧了。这个我想不出来...
  • 今天早上我在手机上回答了这个问题……现在正在工作,所以我为你打了一个例子。
猜你喜欢
  • 2016-02-24
  • 1970-01-01
  • 2013-03-01
  • 2013-06-15
  • 2015-03-03
  • 1970-01-01
  • 2012-10-06
  • 2014-05-26
  • 1970-01-01
相关资源
最近更新 更多