我一直试图解决如何仅使用css将div中的超大图像居中 .
我们使用流体布局,因此图像容器的宽度随页面宽度而变化(div的高度是固定的) . 图像位于div内,其值为插入框阴影,以便看起来好像是在图像中查看页面 .
图像本身已经调整大小以尽可能广泛地填充周围的div(设计具有 max-width
值) .
如果图像小于周围的div,则很容易做到:
margin-left: auto;
margin-right: auto;
display: block;
但是当图像大于div时,它只是从左边缘开始,偏离右边中心(我们使用 overflow: hidden
) .
我们可以分配 width=100%
,但是浏览器在调整图像大小方面做得很糟糕,而网页设计则围绕着高质量的图像 .
关于图像居中的任何想法,以便 overflow:hidden
均匀地切断两个边缘?
8 回答
宽度和高度仅用于举例:
如果父div的左侧和顶部不是屏幕窗口的顶部和左侧,它必须适合您 . 这个对我有用 .
我发现这是一个更优雅的解决方案,没有flex:
尝试这样的事情 . 无论两者的大小如何,这都应该使中间的任何大元素垂直和水平地相对于其父元素居中 .
这是一个古老的Q,但没有flexbox或者绝对位置的现代解决方案就像这样 .
那它为什么有效呢?
乍一看,我们似乎向右移动了50%,然后又向左移动了50% . 这会导致零班,那么呢?
但50%不一样,因为背景很重要 . 如果计算相对边距,则边距计算为 parent 元素的百分比,而在变换中,50%相对于 same 元素 . 两者的宽度 .
在添加CSS之前我们有这种情况
随着我们的添加风格
margin-left: 50%
并且
transform: translateX(-50%)
向左移动不幸的是,这仅适用于水平居中,因为边际百分比计算始终相对于宽度 . 即不仅
margin-left
和margin-right
,而且margin-top
和margin-bottom
是根据宽度计算的 .浏览器兼容性应该没问题:https://caniuse.com/#feat=transforms2d
在div中放置一个大div,将div放在中心,并将图像放在div中 .
它以水平为中心:
HTML:
CSS:
演示:http://jsfiddle.net/Guffa/L9BnL/
为了使它垂直居中,你也可以使用相同的内部div,但你需要将图像的高度放在它内部 .
不要对图像标记使用固定或明确的宽度或高度 . 相反,编码:
例如:http://jsfiddle.net/xwrvxser/1/
游戏后期,但我发现这种方法非常直观 . https://codepen.io/adamchenwei/pen/BRNxJr
CSS
HTML
我非常喜欢将图像作为div /节点的背景 - 然后你可以使用
background-position: center
属性将其居中,而不管屏幕尺寸如何