如何使用 jQuery 垂直对齐多个不同高度的图像?
我创建了一个滑动图像的脚本。每个图像都包含在一个“幻灯片”div 中。我想要做的是使用 jquery 垂直对齐每个单独的图像。目前我正在使用:
$('.slide img').each(function() {
var image_height = $(this).height();
var height_margin = (image_height/2)*-1;
$('.slide img').css('margin-top', height_margin);
$('.slide img').css('top', 50%);
$('.slide img').css('height', image_height);
});
我注意到它将第一张图像的第一个高度和边距应用于所有 标签。另外:
的高度恒定为 600px。
并非每张图像都是相同的,我希望它是动态的......有什么想法吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您不应在
.each
循环内使用$('.slide img')
,因为此选择器将更改所有样式。目前,您正在将最后一个图像的设置应用于所有图像。代码中的另一个错误:您忘记引用50%
。您的代码可以进一步优化:
You shouldn't use
$('.slide img')
inside the.each
loop, because this selector will change all styles. Currently, you're applying the settings of the last image to all images. Another error in your code: You have forgotten to quote50%
.Your code can be optimized even more:
如果
.slide
容器具有恒定的高度,您可以将display:block
和margin:auto 0;
应用于.slide img< /code> 在 CSS 中实现相同的效果...不需要 JS 计算。
If the
.slide
container has a constant height you could applydisplay:block
andmargin:auto 0;
to.slide img
in CSS to achieve the same effect...no JS calculations required.好的,我有一个解决方案,首先使包含 DIV 的
line-height
与最高图像的高度匹配,然后在您应用的类中使用vertical-align:middle
所有图像,请确保图像设置为display:inline
否则它将无法工作。OK I have a solution, first make the containing DIV's
line-height
matches the height of your tallest image, then usevertical-align:middle
in a class which you apply to all images, make sure the images are set todisplay:inline
though or it wont work.