【问题标题】:Evenly spaced list items均匀分布的列表项
【发布时间】:2011-11-30 14:58:22
【问题描述】:

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

关键是项目需要从绝对左到右单独间隔。

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

任何建议将不胜感激!


遵循@Dean 的建议,我发现自己有以下问题——这非常正确。我唯一在想的是左边的两个元素很短,因此差距很大。我希望客户会对文本对齐感到满意;以所有元素为中心,侧面有一点填充!

【问题讨论】:

    标签: html css navigation


    【解决方案1】:

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

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

    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&amp;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;
    }
    

    我根据这个帖子中的三十点的回答...

    Fluid width with equally spaced DIVs

    【讨论】:

    • 很高兴我能帮上忙...但不要忘记thirtydot's original answer 是这样做的基础。
    • @Mahdi.Montgomery,当我去年测试它时,它在 IE 6 和 7 中工作。但是,当 IE 6 和 7 的使用率如此之低且不断缩小时,我认为这不再重要了。
    • 如果我统治世界,每个人都会使用 Chrome,而我的客户不会都使用 IE7。很难说服某人放弃对他们使用的浏览器的支持。
    • @Mahdi.Montgomery,在未来的某一天,您的客户将成为地球上最后一个 IE 7 用户,但是,cmets 部分不讨论这个问题...如果您有特定的您的代码在 IE 中无法运行的问题,只需将其作为新问题发布即可。
    • 另一个想法:我在实际浏览器版本中验证了这个工作; 不在“IE 7 模式”下,不在模拟器中,也不在模拟器中。
    【解决方案2】:

    您将无法在 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: 离开你的第一个列表项, text-align: right 最后一个。

    【讨论】:

    • 以上对我有用,只是我使用了 table-layout: auto;
    【解决方案3】:

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

    【讨论】:

    • 是的,我在想这个 - 使用不间断空格作为带有空格的导航元素,但它在语义上并不是很有代表性。如果我找不到设置列表样式的方法,那么我会求助于这个!
    • 如果文本小于该行则不起作用:jsfiddle.net/hYxvj
    猜你喜欢
    • 1970-01-01
    • 2017-06-28
    • 2012-12-20
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 2011-04-04
    • 1970-01-01
    相关资源
    最近更新 更多