垂直居中块 在IE7中
我试图在 IE7 中垂直居中一个块(如果可能的话,也可以在 IE6 中),让我弄清楚一件事 - 我不是垂直居中实际元素,而是元素内的文本。这是我的 CSS 和 HTML,适用于 IE8 及以上版本,但不适用于以下版本。
a {
display: table-cell;
width: 100px;
height: 54px;
background: black;
color: white;
text-align: center;
text-decoration: none;
vertical-align: middle;
}
<a href="#">Hello superlongword</a>
现在我知道 IE6 几乎已经死了,如果可能的话我仍然想支持它,但如果不支持的话 IE7 就可以了。我想尝试尽可能地将其保留为单个元素 - 它用于导航器,所以我不希望元素上的元素仅用于一个链接。
编辑
我决定使用精灵,这对于导航员来说会更容易 - 这不是最好的解决方案,但我会对结果感到满意。如果任何发布的解决方案确实有效,我将切换到它们。 :)
I'm trying to get vertical centering a block in IE7 (IE6 if possible too), let me get one thing clear - I'm not vertically centering the actual element, but the text within the element. This is my CSS and HTML which works on IE8 and above, but not below.
a {
display: table-cell;
width: 100px;
height: 54px;
background: black;
color: white;
text-align: center;
text-decoration: none;
vertical-align: middle;
}
<a href="#">Hello superlongword</a>
Now I know IE6 is virtually dead, I'd still like to support it if possible but if not then IE7 is fine. I want to try keep it with a single element as much as possible - it's for a navigator, so I don't want elements upon elements just for one link.
EDIT
I've decided to go with sprites, it'll be much easier for a navigator - not the best solution, but I'll be happy with the outcome. If any posted solutions do work, I'll swap over to them. :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用带有占位符元素的
display:inline-block
来垂直居中块超链接:参考
CSS 垂直居中
IE7-/Win img,垂直居中
Use
display:inline-block
with a placeholder element to vertically center the block hyperlink:References
CSS Vertical Centering
IE7-/Win img, vertical-align middle
如果您知道这只是一行文本,请使用行高。
它远不是单个元素,但您可以只使用实际的表格单元格。它很丑陋,但支持 IE6 是一件丑陋的事情。
如果您知道链接将有一定行数,则可以使用一个额外的元素和边距居中。 (例如
锚文本
、em { margin-top:12px }
)如果您不这样做知道要居中的元素的高度,您需要表格单元格布局行为。在 IE6 中获得此信息的唯一方法是使用实际的表格单元格或 JavaScript。对不起。
If you know it will be just one line of text, use line-height.
It is far from a single element, but you could just use an actual table cell. It's ugly, but supporting IE6 is an ugly affair.
If you know the link will be a certain number of lines, you can center using one extra element and a margin. (e.g.
<a><em>anchor text</em></a>
,em { margin-top:12px }
)If you don't know the height of the element to be centered, you need table-cell layout behavior. The only way to get this in IE6 is with an actual table cell or JavaScript. Sorry.
这是一个已知的错误。解决这个问题的方法(可能不适用于您的情况)是向元素添加一个 Float 并将其显示为内联块,以使 hasLayout 在 IE 中工作。我还将提供 FF2 的 hack 来解决那里的问题。
固定代码:
编辑
我没有添加浮动,因为我认为使用其他黑客,这并不重要。
This is a known bug. The way to fix this, which may not be applicable in your situation, is to add a Float to the element and have it display as inline-block to make hasLayout work in IE. I will also supply FF2 hacks to get around issues there too.
Fixed code:
EDIT
I didn't add a float, because I figured with the other hacks being used, it wouldn't matter.
为什么不尝试一下填充呢?
这肯定至少适用于 IE7 的跨浏览器(无法在 IE6 上测试),示例
Why don't you try a padding?
That sure works crossbrowser atleast for IE7 (couldn't test on IE6), example