【问题标题】:Vertically align different img sizes in different div sizes where the img is larger than the div在img大于div的不同div大小的地方垂直对齐不同的img大小
【发布时间】:2011-10-09 04:24:58
【问题描述】:

我正在尝试垂直对齐 div 内的图像...没问题。

我的问题与这些条件有关。

  1. 图像将不确定且大小不同。
  2. 图片比div大,需要用div遮挡。
  3. 使用它的网站是建立在 320 & up 模板上的,调用媒体查询来呈现 不同屏幕尺寸的页面,因此包含的 div 因屏幕尺寸而异。
  4. 在智能手机/平板电脑设备上查看时,包含的 div 会在设备转动时改变大小(不刷新页面)——图像需要保持居中。

我不能使用 display:table-cell,因为图像比 div 大,所以使用此选项时,div 和 overflow:hidden 的高度不起作用。

我尝试了 jQuery vAlign,效果很好。如果您不更改屏幕尺寸(例如转动设备)。因为它在(document).ready 上被调用,所以页面需要刷新以更新图像的对齐方式。

有没有办法通过媒体查询触发 vAlign? 如果没有,表格单元方法是否有破解/修复,这将允许较小的div 用overfolw:hidden 掩盖较大的img?

更新: 一直在玩纯 CSS (working example here) 但仍然无法让它工作:(

【问题讨论】:

  • 肯定有一种方法可以在元素内屏蔽/裁剪过大的图像并将其垂直居中!!!!!!!!!

标签: javascript jquery css vertical-alignment


【解决方案1】:

我不确定你的意思,但如果我理解正确,请使用以下结构

<div class="vertical">
    <div class="wrapper"><img src="image.jpg"></div>
</div>

还有下面的 CSS

div.vertical { display:table-cell } 
div.wrapper { display:block;position:relative;overflow:hidden; }
div.wrapper img { position:absolute; }

您应该能够屏蔽(如裁剪?)图片并能够垂直对齐它们。请注意,div.vertical 类只是一个虚拟 div,用于显示当前哪个 div 将垂直对齐,您应该只替换应用程序中该 div 的内容。

【讨论】:

  • 这是一个关于添加额外 div 的神点,但仍然无法让它工作。我现在正在研究类似的东西,它开始工作得更好但仍然有错误$(window).resize(function() { $(".img-wrapper").vAlign(); });
  • 您绝对不需要 javascript 来修复您的布局。尝试将 div.wrapper 显示属性设置为 inline、inline-block 等。
  • 我认为这种方法行不通...jsfiddle.net/jwoodcreative/TvH3t
  • 也许w3schools.com/cssref/pr_pos_clip.asp 会帮助你?这应该剪辑多余的
猜你喜欢
  • 2014-10-22
  • 1970-01-01
  • 2014-07-24
  • 2013-08-27
  • 2011-09-26
  • 2011-11-04
  • 2015-03-08
  • 1970-01-01
  • 2015-06-12
相关资源
最近更新 更多