0

我正在尝试使用表格组合一个导航栏:

  • 有n个链接到网站的不同部分
  • 有一个“注销”链接,这是一个固定大小的图标

我想做的是以下。整个栏的可用宽度(预先知道)减去所需的图标宽度,应该在包含导航的 n 个链接的单元格之间平均分配(忽略内部链接的大小,这不是问题)。

目前,我正在 PHP 中执行此计算并用于实现此目的。但是,这不符合 XHTML 1.0 Strict 标准。根据 W3C 验证器,我应该使用 CSS 来设置列的宽度。问题是:我不知道该怎么做,如果有可能的话。可能这个问题暗示我不应该为此使用表格,但当时我没有其他想法。

如何以符合 XHTML Strict 和 CSS 的方式使用表格或其他东西来实现效果?

4

2 回答 2

2

首先,报废桌子。您的链接不是表格数据。

基本

从这个开始:

CSS

ul.navbar
{
    padding-right: 25px;
    list-style:none;
}
ul.navbar li
{
    margin: 0px;
    padding: 0px;
    border: 0px;
    display: block;
    float: left;
}

ul.navbar li.icon
{
    margin-right: -25px;
    width: 25px;
    float:right
}

HTML

<ul class="navbar">
    <li>Home</li>
    <li>FAQ</li>
    <li>Contact</li>

    <li class="icon"></li>
</ul>

等宽

图标li应该紧贴右边缘。现在,有几种方法可以实现等间距。一种方法是拥有这些类,并将它们应用于ulphp 或 jquery:

CSS

ul.navbar.links1 li
{
    width:100%;
}

ul.navbar.links2 li
{
    width:50%;
}

ul.navbar.links3 li
{
    width:33%;
}

ul.navbar.links4 li
{
    width:25%;
}

ul.navbar.links5 li
{
    width:20%;
}

jQuery

$(function()
{
    var n = $("ul.navbar").children().length-1;
    //Get the number of links: -1 because of logout
    $("ul.navbar").addClass("links"+n);
});

或者,您可以直接使用 jQuery 或 PHP 修改宽度。由你决定。无论哪种方式,您都应该使用百分比。

$(function()
{
    var n = $("ul.navbar").children().length-1;
    //Get the number of links: -1 because of logout
    $("ul.navbar").width((100/n)+"%");
});
于 2009-10-01T07:30:44.363 回答
1

最简单的方法是将链接放入小盒子(大小相同)。由于 CSS 无法进行计算,您仍然必须设置框的宽度,但使用 CSS,您可以这样做一次。用于DIV盒子。框的类必须说明display: inline;它们的行为类似于文本中的单词(浏览器会将它们彼此相邻放置在一行上)。

之后,您只需在 PHP 中计算每个框的宽度,并将该宽度发送到 HTML 页面标题中的一小段内联 CSS 中。这样,所有的盒子都将具有相同的宽度,并且它们都将位于同一行。

关于如何使用 CSS 创建导航栏的示例,请查看您刚才正在阅读的页面的源代码。

于 2009-10-01T07:29:22.320 回答