Html CSS垂直对齐问题
考虑以下示例:() HTML: 输出为:Html CSS垂直对齐问题,html,css,Html,Css,考虑以下示例:() HTML: 输出为: 为什么黑色的wrappers没有垂直对齐?我怎样才能解决这个问题 图像在红色框中水平居中。我怎样才能使它们垂直居中 如果可能,请不要更改HTML .wrapper { float: left; } 看看这个: 基本上,您可以使用float:left将方框内联,并使用背景图像来代替img标记。因为您使用的是浮动,所以需要在之后清除,以取消对其他元素的浮动效果 我将DIV标记更改为A标记,这样您就可以在孔块上有一个链接并保持简单。但您可以将其保留
wrapper
s没有垂直对齐?我怎样才能解决这个问题如果可能,请不要更改HTML
.wrapper {
float: left;
}
看看这个:
基本上,您可以使用float:left
将方框内联,并使用背景图像来代替img标记。因为您使用的是浮动,所以需要在之后清除,以取消对其他元素的浮动效果
我将DIV标记更改为A标记,这样您就可以在孔块上有一个链接并保持简单。但您可以将其保留为DIV标记,并在其内部放置一个a块(或使用JavaScript)请看以下内容:
基本上,您可以使用float:left
将方框内联,并使用背景图像来代替img标记。因为您使用的是浮动,所以需要在之后清除,以取消对其他元素的浮动效果
我将DIV标记更改为A标记,这样您就可以在孔块上有一个链接并保持简单。但是您可以将其保留为DIV标记,并在其内部放置一个a块(或使用JavaScript)注意,它是对齐图像的基础。这与
垂直对齐有关
;如果在.wrapper
上使用垂直对齐
的值,而不是基线
,如顶部
、中部
或底部
,它将修复该值。(只有在div
中放入一些文本,它们之间的差异才会明显。)
然后,您需要将图像置于其80x80点的中心。您可以使用a
上的display:table cell
和vertical align:middle
(并添加行高:0
以解决更多问题)。然后,您可以进一步在a
标记、.wrapper
中混合这些样式组,甚至在不需要的情况下丢弃.wrapper
(如果需要的话,只需要添加文本)
结果,没有比我在这里提到的更多的调整:
这将适用于所有体面的浏览器,甚至在IE8/9上,但在IE6/7上不起作用。在IE6/7中解决此问题的一种技术是:在
A
上,将显示设置为块
,并将行高度从0
更改为78px
(我不完全清楚为什么80px
会使它向下移动一个像素,但确实如此;如果我想得足够久,我可能会找出原因),并将垂直对齐:中间
移动到img
子项。最终结果:观察它是对齐图像的基础。这与垂直对齐有关;如果在上为垂直对齐
使用值,则包装器
而不是基线
,如顶部
,middle
或bottom
,它将修复它。(只有在div
中放入一些文本,它们之间的差异才会明显。)
然后,您希望将图像置于80x80点的中心位置。您可以使用a
上的display:table cell
和vertical align:middle
(并添加行高:0
,以解决更多问题)。然后,您可以在a
标记、.wrapper
中进一步混合这些样式组,甚至在不需要的情况下扔掉.wrapper
(只有在需要的情况下,如果您将文本放入其中,才需要)
结果,没有比我在这里提到的更多的调整:
这将适用于所有体面的浏览器,甚至适用于IE8/9,但不适用于IE6/7。解决这一问题的一种技术应该适用于IE6/7:在A
上,将display
设置为block
,并将行高从0
更改为78px
(我不完全清楚为什么80px
会使它向下移动一个像素,但确实如此;如果我想得足够久,我可能会找出原因),并将垂直对齐:中间
移动到img
子项。最终结果:您可以尝试在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 */
}
.您可以尝试在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 */
}
.您可以查看此信息:您可以查看此信息:这可能会对您有所帮助
它帮助了我:)也许这会帮助你
它帮助了我:)可能重复的???可能重复的???关于浏览器兼容性的注意:IE6或IE7()不支持CSS表显示。感谢第一部分!关于第二部分:我真的需要它在IE7中工作:)有什么想法吗?关于浏览器兼容性的注意:在IE6或IE7()中不支持CSS表显示。感谢第一部分!关于第二部分:我真的需要它在IE7中工作:)有什么想法吗?“请不要更改HTML,如果可能的话。”-我们如何确保图像只是装饰而不是内容?切换到背景可能不合适,“如果可能”。我同意换成背景可能不合适。但我想给他举个例子,现在他可以决定这是否合适。虽然这不符合要求
#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 */
}