垂直居中块 在IE7中

发布于 2024-12-07 15:22:45 字数 590 浏览 1 评论 0原文

我试图在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

谜兔 2024-12-14 15:22:45

使用带有占位符元素的 display:inline-block 来垂直居中块超链接:

    <style type="text/css">
    #blockbox { width: 500px; height: 500px; border: 1px solid black;}
    #container, #placeholder { height: 100%; }
 
    #content, #placeholder { display:inline-block; vertical-align: middle; }
    </style>
    <div id="blockbox">
      <div id="container">
        <a id="content">
        Vertically centered content in a block box of fixed dimensions
        </a>
        <span id="placeholder"></span>
      </div>
    </div>

参考

Use display:inline-block with a placeholder element to vertically center the block hyperlink:

    <style type="text/css">
    #blockbox { width: 500px; height: 500px; border: 1px solid black;}
    #container, #placeholder { height: 100%; }
 
    #content, #placeholder { display:inline-block; vertical-align: middle; }
    </style>
    <div id="blockbox">
      <div id="container">
        <a id="content">
        Vertically centered content in a block box of fixed dimensions
        </a>
        <span id="placeholder"></span>
      </div>
    </div>

References

一页 2024-12-14 15:22:45

如果您知道这只是一行文本,请使用行高。

它远不是单个元素,但您可以只使用实际的表格单元格。它很丑陋,但支持 IE6 是一件丑陋的事情。

table {
    border: 0;
    border-collapse: collapse;
    height: 54px;
    width: 100px;
}
td {
    vertical-align: middle;
}
a {
    background: black;
    color: white;
    display: block;
    height: 100%;
    text-align: center;
    text-decoration: none;
}

<table><tr><td><a href="#">Hello superlongword</a></td></td></table>

如果您知道链接将有一定行数,则可以使用一个额外的元素和边距居中。 (例如 锚文本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.

table {
    border: 0;
    border-collapse: collapse;
    height: 54px;
    width: 100px;
}
td {
    vertical-align: middle;
}
a {
    background: black;
    color: white;
    display: block;
    height: 100%;
    text-align: center;
    text-decoration: none;
}

<table><tr><td><a href="#">Hello superlongword</a></td></td></table>

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.

子栖 2024-12-14 15:22:45

这是一个已知的错误。解决这个问题的方法(可能不适用于您的情况)是向元素添加一个 Float 并将其显示为内联块,以使 hasLayout 在 IE 中工作。我还将提供 FF2 的 hack 来解决那里的问题。

固定代码:

a { 
    display: inline-block;
    display: -moz-inline-stack; /*FF2 Hack*/
    zoom: 1; /*IE inline-block star hack*/
    *display: inline; /*IE inline-block star hack*/
    float: left; 
    width: 100px;
    _height: 54px; /*FF2 Hack*/
    background: black;
    color: white;
    text-align: center; 
    text-decoration: none; 
    margin: 0px auto;
}

<a href="#">Hello superlongword</a> 

编辑

我没有添加浮动,因为我认为使用其他黑客,这并不重要。

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:

a { 
    display: inline-block;
    display: -moz-inline-stack; /*FF2 Hack*/
    zoom: 1; /*IE inline-block star hack*/
    *display: inline; /*IE inline-block star hack*/
    float: left; 
    width: 100px;
    _height: 54px; /*FF2 Hack*/
    background: black;
    color: white;
    text-align: center; 
    text-decoration: none; 
    margin: 0px auto;
}

<a href="#">Hello superlongword</a> 

EDIT

I didn't add a float, because I figured with the other hacks being used, it wouldn't matter.

生死何惧 2024-12-14 15:22:45

为什么不尝试一下填充呢?

a {
    display: inline-block;
    overflow: hidden;
    padding: 20px;
    background: black;
    color: white;
    text-align: center;
    text-decoration: none;
}

<a>Hello superlongword</a>

这肯定至少适用于 IE7 的跨浏览器(无法在 IE6 上测试),示例

Why don't you try a padding?

a {
    display: inline-block;
    overflow: hidden;
    padding: 20px;
    background: black;
    color: white;
    text-align: center;
    text-decoration: none;
}

<a>Hello superlongword</a>

That sure works crossbrowser atleast for IE7 (couldn't test on IE6), example

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文