9

初始点:

初始点

终点:

终点

我正在尝试拥有一个填充 100% 容器的水平导航栏。在第一个示例中,您将看到所有项目都向左对齐。我试图让它填满容器的整个宽度,如第二个示例所示。我希望所有项目之间的间距是统一的(与显示的方式不同,我只是快速将它们放在一起让您了解我正在尝试做什么)。我需要文本不是图像,并且它进入的容器是流动的而不是固定的。

4

3 回答 3

10

使用静态数量的元素很容易 - http://jsfiddle.net/X56cJ/

然而,如果你想在文本之间有统一的间距,而不是元素本身 - 这变得很棘手。同样,如果元素的数量没有改变,你可以使用 css 类和静态宽度。否则它必须是javascript

编辑:这是在元素之间获取相同空间的 JavaScript 方式。

HTML:

<ul class="menu">
    <li>About Us</li>
    <li>Our Products</li>
    <li>FAQs</li>
    <li>Contact</li>
    <li>Login</li>
</ul>

JS:

function alignMenuItems(){
    var totEltWidth = 0;
    var menuWidth = $('ul.menu')[0].offsetWidth;
    var availableWidth = 0;
    var space = 0;

    var elts = $('.menu li');
    elts.each(function(inx, elt) {
        // reset paddding to 0 to get correct offsetwidth
        $(elt).css('padding-left', '0px');
        $(elt).css('padding-right', '0px');

        totEltWidth += elt.offsetWidth;
    });

    availableWidth = menuWidth - totEltWidth;

    space = availableWidth/(elts.length);

    elts.each(function(inx, elt) {
        $(elt).css('padding-left', (space/2) + 'px');
        $(elt).css('padding-right', (space/2) + 'px');
    });
}

完整的例子在这里

于 2011-10-04T18:49:46.360 回答
3

在你的父母上使用 display: table ,在你的孩子上使用 display: table-cell 就可以了。<= IE7 不支持此功能。

http://codepen.io/simply-simpy/pen/jzski

于 2012-12-03T15:01:56.813 回答
1

如果您知道将拥有多少个元素,则可以将每个元素的宽度指定为百分比。否则,如果不求助于表格或 javascript,就不可能。

于 2011-10-04T18:43:00.523 回答