如何垂直对齐无序 html 列表中的项目?

发布于 2024-08-16 02:03:51 字数 988 浏览 4 评论 0原文

如何垂直对齐无序列表中的项目以在 IE6 和 7 中工作?

我不能只将行高设置为完整高度,因为我同时有 1 行项目和 2 行项目。

我的代码是:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title></title>
        <style type="text/css">
            ul {
                list-style: none;
                border: 1px solid black;
                height: 40px;
            }
            li {
                float: left;
                margin-right: 10px;
                height: 40px;
                width: 46px;
            }
            a {

            }
        </style>
    </head>
    <body>
        <ul>
            <li>
                <a href="/">item1</a>
            </li>
            <li>
                <a href="/">two lines</a>
            </li>
        </ul> 
    </body>
</html>

How can I vertically align items in an unordered list to work in IE6 and 7?

I can't just set line-height to the full height because I have both 1 row items and 2 row items.

My code is:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title></title>
        <style type="text/css">
            ul {
                list-style: none;
                border: 1px solid black;
                height: 40px;
            }
            li {
                float: left;
                margin-right: 10px;
                height: 40px;
                width: 46px;
            }
            a {

            }
        </style>
    </head>
    <body>
        <ul>
            <li>
                <a href="/">item1</a>
            </li>
            <li>
                <a href="/">two lines</a>
            </li>
        </ul> 
    </body>
</html>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(5

烟沫凡尘 2024-08-23 02:03:52

如果我理解正确,您需要一个水平显示的列表,其中每个项目都有设定的宽度和高度,但内部的文本垂直居中,并且可能有些项目有两行文本。

如果您知道预渲染哪些项目将是两行,则可以仅在那些具有单行的项目上应用设置 line-height: 40px; 的 CSS 类。通常情况并非如此,因此最好的方法是在列表渲染后使用 JS 动态更改行高。

请参阅此 jsfiddle: http://jsfiddle.net/UEsAS/2/

本质上,改变你的 CSS不要在 li 上设置高度(如果它们是单行,这将导致它们具有较低的高度,这就是您可以检测要更改哪些行的方式)。然后运行以下命令(假设是 jQuery):

$(function() {
    var maxHeight = 40;
    $('li').each(function(i, el) {
        if ($(el).height() < maxHeight) {
            $(el).css('line-height', maxHeight + 'px');
        }
    });
});​

If I understand correctly, you want a horizontally displayed list where each item has a set width and height, but the text inside is vertically centred, and there may be items that have two lines of text.

If you know pre-rendering which items will be two lines you can apply the a CSS class that sets the line-height: 40px; only on those items with a single line. This is not normally the case thought, so the best way to go is to use JS to dinamically alter the line-height after the list has been rendered.

See this jsfiddle: http://jsfiddle.net/UEsAS/2/

In essence, alter your CSS to not set a height on the lis (this will cause them to be have a lower height if they are one-line, which is how you can detect which ones to alter). Then run the following (assuming jQuery):

$(function() {
    var maxHeight = 40;
    $('li').each(function(i, el) {
        if ($(el).height() < maxHeight) {
            $(el).css('line-height', maxHeight + 'px');
        }
    });
});​
你怎么敢 2024-08-23 02:03:51

您不能将项目浮动到左侧并期望它们垂直排列...

删除...

float: left;

从 LI 样式中

You cannot float your items to the left and expect them to vertically line up....

Remove

float: left;

From the LI style...

鹊巢 2024-08-23 02:03:51

如果我理解正确的话,你想用浮子来收缩包裹李吗?

如果是这种情况,您需要设置

li {clear:left;}

“所以 lis 位于彼此下方,而不是彼此相邻”。如果您希望 li 收缩换行到内容,您也可以使用 inline-block。

此外,根据其目标,使用表格可能是合适的,具体取决于它的用途。

if i understand correctly you want to use the float to shrink wrap the li?

If thats the case you need to set

li {clear:left;}

So the lis are below each other, not next to each other. You can also use inline-block if you want the li to shrink wrap to the content.

Also, depending on the goal of this, it might be approproate to use a table, depending on what it will be used for.

辞旧 2024-08-23 02:03:51

抱歉,如果这不是正确的答案,但它可能有助于澄清问题:

为什么您的列表项使用浮动而不是 display: inline

Sorry if this isn't a proper answer, but it may help clear things up:

Why are you using floats instead of display: inline for your list items?

骷髅 2024-08-23 02:03:51

这些行基本上具有相同的高度。所以在表格语言中没有办法有效地“合并单元格”。您应该将行高设置为“两行”项目的高度,然后使用vertical-align属性来对齐它们。

The rows essentially be the same height. So there is no way to effectively "merge cells" in table speak. You should set the line height to the height of the "two line" items and then use the vertical-align property to align them.

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