均匀分布的列表项

发布于 2024-12-07 20:11:53 字数 392 浏览 0 评论 0原文

我的任务是生成一个水平导航列表,如下所示:

在此处输入图像描述

要点是这些项目需要从绝对左到右单独间隔。

设置宽度是一件痛苦的事情,因为不同的浏览器对它们的解释似乎不同。此外,该列表中的项目数量将根据用户的不同而变化。

任何建议将不胜感激!


根据@Dean的建议,我发现自己有以下内容 - 这几乎是正确的。我唯一想到的是,不幸的是,左边的两个元素很短,因此差距很大。我希望客户会对文本对齐感到满意;以所有元素为中心,并在侧面添加一些填充!

在此处输入图像描述

I've been tasked with generating a horizontal nav list that looks like this:

enter image description here

the point being that the items need to be individually spaced from absolute left to right.

Setting widths is a pain because different browsers appear to interpret them differently. Also, the number of items in this list will change depending on the user.

Any advice would be appreciated!


Following @Dean advice, I've found myself with the below - which is pretty much correct. The only thing I'm thinking is that the left two elements are unfortunately short, hence the large gap. I'm hoping the client will be happy with text-align; center on all the elements with a touch of padding at the side!

enter image description here

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

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

发布评论

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

评论(3

哭泣的笑容 2024-12-14 20:11:53

我为你的菜单制作了一个 jsFiddle...一切都完美间隔、动态,并且它一直到左/右边缘,没有 JavaScript 或奇怪/丑陋的 HTML 语义问题。 (如果重要的话,它应该在 IE 6 中工作。)

http://jsfiddle.net/bXKFA/2 /

jpg demo

HTML:

<div id="menuwrapper">
    <div class="menuitem">CAREERS</div>
    <div class="menuitem">TRADE</div>
    <div class="menuitem">CONTACT US</div>
    <div class="menuitem">PRIVACY POLICY</div>
    <div class="menuitem">T&CS</div>
    <div class="menuitem">SITEMAP</div>
    <div class="menuitem">CORPORATE</div>
    <div class="menuitem">ACCESSIBILITY</div>
    <span class="stretcher"></span>
</div>

CSS:

#menuwrapper {
    height: auto;
    background: #000;
    text-align: justify;
    -ms-text-justify: distribute-all-lines;
    text-justify: distribute-all-lines;
}

.menuitem {
    width: auto;
    height: 40px;
    vertical-align: top;
    display: inline-block;
    *display: inline;
    zoom: 1
    background: #000;
    color: yellow;
}

.stretcher {
    width: 100%;
    display: inline-block;
    font-size: 0;
    line-height: 0;
}

我基于它三十点在此线程中的答案...

具有等距 DIV 的流体宽度

I made a jsFiddle of your menu... everything is perfectly spaced, dynamic, and it goes all the way to the left/right edges without JavaScript or weird/ugly HTML semantic issues. (And it should work in IE 6, if it matters.)

http://jsfiddle.net/bXKFA/2/

jpg demo

HTML:

<div id="menuwrapper">
    <div class="menuitem">CAREERS</div>
    <div class="menuitem">TRADE</div>
    <div class="menuitem">CONTACT US</div>
    <div class="menuitem">PRIVACY POLICY</div>
    <div class="menuitem">T&CS</div>
    <div class="menuitem">SITEMAP</div>
    <div class="menuitem">CORPORATE</div>
    <div class="menuitem">ACCESSIBILITY</div>
    <span class="stretcher"></span>
</div>

CSS:

#menuwrapper {
    height: auto;
    background: #000;
    text-align: justify;
    -ms-text-justify: distribute-all-lines;
    text-justify: distribute-all-lines;
}

.menuitem {
    width: auto;
    height: 40px;
    vertical-align: top;
    display: inline-block;
    *display: inline;
    zoom: 1
    background: #000;
    color: yellow;
}

.stretcher {
    width: 100%;
    display: inline-block;
    font-size: 0;
    line-height: 0;
}

I based it on thirtydot's answer in this thread...

Fluid width with equally spaced DIVs

琉璃梦幻 2024-12-14 20:11:53

您无法在 IE6 中很好地实现此功能,但您可以将其用于所有主要浏览器:

ul {
display: table; 
table-layout: fixed; /* the magic dust that ensure equal width */  
}
li { display: table-cell; text-align: center; }

对于 IE6(可能是 7),您将需要使用 Javascript 动态计算宽度。

另外,不要忘记将第一个列表项设置为 text-align: left,将最后一个列表项设置为 text-align: right。

You won't be able to get this working well in IE6, but you can use this for all major browsers:

ul {
display: table; 
table-layout: fixed; /* the magic dust that ensure equal width */  
}
li { display: table-cell; text-align: center; }

For IE6 (possibly 7) you will need to use Javascript to calculate the widths dynamically.

Also don't forget to text-align: left your first list item, and text-align: right the last.

野鹿林 2024-12-14 20:11:53

我认为这不需要一个清单。难道您不能使用 text-align: justify 在 div 中创建一系列单词吗?

I don't think this needs a list. Couldn't you just create a series of words in a div with text-align: justify?

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