如何在包含div内对齐图像?
实例
在我的示例中,我需要使用class=“frame”将<img>垂直居中放置在<div>中:
<div class="frame" style="height: 25px;">
<img src="http://jsfiddle.net/img/logo.png" />
</div>
.frame的高度是固定的,图像的高度是未知的。如果这是唯一的解决方案,我可以在.frame中添加新元素。我正在尝试在Internet Explorer 7和更高版本WebKit、Gecko上执行此操作。
看到这里的jsfiddle。
.框架{高度:25px;/*等于最大图像高度*/线条高度:25px;宽度:160px;边框:1px纯红色;文本对齐:居中;边距:1em 0;}国际货币基金组织{背景:#3A6F9A;垂直对齐:中间;最大高度:25px;最大宽度:160px;}<div class=frame><img src=“http://jsfiddle.net/img/logo.png“高度=250/></div><div class=frame><img src=“http://jsfiddle.net/img/logo.png“高度=25/></div><div class=frame><img src=“http://jsfiddle.net/img/logo.png“高度=23/></div><div class=frame><img src=“http://jsfiddle.net/img/logo.png“高度=21/></div><div class=frame><img src=“http://jsfiddle.net/img/logo.png“高度=19/></div><div class=frame><img src=“http://jsfiddle.net/img/logo.png“高度=17/></div><div class=frame><img src=“http://jsfiddle.net/img/logo.png“高度=15/></div><div class=frame><img src=“http://jsfiddle.net/img/logo.png“高度=13/></div><div class=frame><img src=“http://jsfiddle.net/img/logo.png“高度=11/></div><div class=frame><img src=“http://jsfiddle.net/img/logo.png“高度=9/></div><div class=frame><img src=“http://jsfiddle.net/img/logo.png“高度=7/></div><div class=frame><img src=“http://jsfiddle.net/img/logo.png“高度=5/></div><div class=frame><img src=“http://jsfiddle.net/img/logo.png“高度=3/></div>
对于更现代的解决方案,如果不需要支持旧版浏览器,您可以这样做:
.框架{显示:柔性;/**取消注释下面的“对齐内容”,使其水平居中。✪ 阅读以下内容,了解垂直和水平居中的更好方法。**//*对齐内容:中心*/对齐项目:居中;}国际货币基金组织{高度:自动;/**✪ 为了使该图像垂直和水平居中,在上面的.frame规则中,注释“justify content”和“对齐项目”声明,然后取消注释“margin:auto;”在下面**//*边距:自动*/}/*演示不需要的造型材料*/.框架{最大宽度:900px;高度:200px;边距:自动;背景:#222;}p型{最大宽度:900px;边距:20px自动0;}国际货币基金组织{宽度:150px;}<div class=“frame”><img src=“https://s3-us-west-2.amazonaws.com/s.cdpn.io/9988/hand-pointing.png"></div>
这是一支使用Flexbox的钢笔:http://codepen.io/ricardozea/pen/aa0ee8e6021087b6e2460664a0fa3f3e
编辑1/13/22
有一种更好的方法可以使用CSS网格和地方内容速记来实现这一点:
.frame文本网格{显示:栅格;放置内容:中心;/**✪ “放置内容”是“对齐内容”和“调整内容”的缩写。✪ “放置内容”速记需要两个值,第一个用于“对齐内容”,第二个用于“调整内容”。如果仅存在一个值(如本演示中所示),则该值将应用于两个方向。✪ 注释上面的“place content:center;”声明,以查看元素如何沿着容器的高度分布。**/}<div class=“ctnr框架文本网格”><h2>使用Grid和<code>放置内容</code></h2><p>垂直和水平居中只需要两条线</p></div>
这是一支使用CSS网格的钢笔:https://codepen.io/ricardozea/pen/c4e27f1e74542618d73e21f7c2276272?editors=0100
背景图像解决方案
我完全删除了image元素,并使用.frame类将其设置为div的背景
http://jsfiddle.net/URVKa/2/
这至少在Internet Explorer 8、Firefox 6和Chrome 13上运行良好。
我检查过了,这个解决方案无法缩小超过25像素高度的图像。有一个名为backgroundsize的属性可以设置元素的大小,但CSS 3会与Internet Explorer 7的要求相冲突。
我建议你要么重做你的浏览器优先级,为最好的可用浏览器设计,要么获取一些服务器端代码来调整图像大小,如果你想使用这个解决方案。
想要对齐文本/标题之后且两者都在div中的图像吗?
请参阅JSfiddle或运行代码段。
只需确保所有元素(div、img、title等)都有ID或类。
对于我来说,这个解决方案适用于所有浏览器(对于移动设备,您必须使用@media调整代码)。
h2.h2红色{颜色:红色;字体大小:14px;}.mydiv类{页边空白:30px;显示:块;}img.mydesired类{右边距:10px;显示:块;float:左;/*如果要将文本与同一行上的图像对齐*/宽度:100px;高度:100px;margin-top:-40px/*更改此值以适应页面*/;}<div class=“mydivclass”><br/><img class=“mydesiredclass”src=“https://upload.wikimedia.org/wikipedia/commons/thumb/b/b3/Wikipedia-logo-v2-en.svg/2000px-Wikipedia-logo-v2-en.svg.png"><h2 class=“h2red”>通过负操作img位置在div中的图像后对齐文本</h2></div>