请考虑以下示例:(live demo here)
HTML:
<div id="outer_wrapper">
<div class="wrapper">
<a><img src="http://img.brothersoft.com/icon/softimage/s/smiley.s_challenge-131939.jpeg" /></a>
</div>
<div class="wrapper">
<a><img src="http://assets.test.myyearbook.com/pimp_images/home_page/icon_smiley.gif" /></a>
</div>
<div class="wrapper">
<a><img src="http://thumbs3.ebaystatic.com/m/mvHqVR-GDRQ2AzadtgupdgQ/80.jpg" /></a>
</div>
<div class="wrapper">
<a><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/718smiley.png/60px-718smiley.png" /></a>
</div>
</div>
CSS:
#outer_wrapper {
background-color: #bbb;
width: 350px;
}
.wrapper {
display: inline-block;
border: 1px solid black;
width: 90px;
height: 100px;
text-align: center;
margin-right: 20px;
}
a {
display: inline-block;
width: 80px;
height: 80px;
border: 1px solid red;
}
输出结果为:
wrapper
没有垂直对齐?我怎么能解决这个问题?如果可能,请不要更改HTML。
答案 0 :(得分:2)
观察它是对齐的图像的基础。这与vertical-align
有关;如果您使用vertical-align
以外的.wrapper
上的baseline
值,例如top
,middle
或bottom
,则会解决此问题。 (如果你在div
中加入一些文字,这些差异就会很明显。)
然后,您希望将图像置于80x80的中心位置。您可以使用display: table-cell
上的vertical-align: middle
和a
执行此操作(并添加line-height: 0
以解决更多问题)。然后,您可以在a
标记,.wrapper
中混合使用这些样式组,或者如果不需要,则可以放弃.wrapper
(只需要它 - 如果它完全 - 如果你把文字放在里面。)
结果,没有比我在此处提到的进一步调整:http://jsfiddle.net/jESsA/38/。
这适用于所有体面的浏览器,甚至在IE8 / 9上,但它不适用于IE6 / 7。解决这个问题的技术应该适用于IE6 / 7:在a
上,将display
设置为block
并将line-height
从0
更改为78px
(我不完全清楚为什么80px
让它向下移动一个像素,但它确实如此;如果我考虑的时间足够长,我可能会找出原因),并转移{vertical-align: middle
1}}到img
孩子。最终结果:http://jsfiddle.net/jESsA/44/
答案 1 :(得分:2)
您可以尝试在vertical-align
标记上分配img
属性。垂直对齐相对于线框,这意味着您需要将线框设置为与a
标记的高度一样高。因此,在CSS标记中需要进行这些更改:
#outer_wrapper {
overflow: hidden; /* required when you float everything inside it */
}
.wrapper {
/* display: inline-block is not required */
/* text-align: center is not required -- see below */
float: left; /* float all wrappers left */
}
a {
display: block; /* block display required to make width and height behave as expected */
margin-left: 4px; /* shift the block to make it horizontally centered */
margin-top: 9px; /* shift the block to make it vertically centered */
text-align: center; /* center inline content horizontally */
line-height: 80px; /* line height must be set for next item to work */
}
img {
vertical-align: middle; /* presto */
}
答案 2 :(得分:1)
看看这个:
基本上,您使用float: left
将您的框内联,背景图片而不是 img 标记。因为您正在使用 float ,所以您需要清除以取消对其他元素的浮动效果。
我将DIV标签更改为A标签,因此您可以在孔块上添加链接并保持简单。但是你可以将它保存为DIV标签并在其中放置一个A块(或使用JavaScript)
答案 3 :(得分:0)
.wrapper {
float: left;
}
答案 4 :(得分:0)
答案 5 :(得分:0)