具有不同列宽的 XHTML 严格表

发布于 2024-08-06 03:22:22 字数 371 浏览 4 评论 0原文

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

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

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

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

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

I'm trying to put together a navigation bar using a table:

  • There are n links to different parts of the website
  • There is one "logout" link, which is an icon of fixed size

What I'd like to do is the following. The available width for the whole bar (which is known in advance) minus the required width of the icon should be divided equally among the cells containing the n links for navigation (ignoring the size of the links inside, this is not a problem).

Currently, I'm performing this computation in PHP and use to achieve this. However, this does not comply with the XHTML 1.0 Strict standards. According to the W3C validator, I should use CSS to set the width of the column. Problem is: I don't know how to do this, and if it is at all possible. Probably this problem is a hint that I shouldn't be using tables for this, but I have no other ideas at the time.

How can I achieve the effect, using tables or something else, in an XHTML Strict and CSS compliant way?

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

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

发布评论

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

评论(2

云之铃。 2024-08-13 03:22:22

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

基础知识

从这里开始:

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 应该紧贴右边缘。现在,有几种方法可以实现相等的间距。一种方法是使用 php 或 jquery 获取这些类,并将它们应用到 ul

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)+"%");
});

First off, scrap the tables. Your links are not tabular data.

Basics

Start off with this:

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>

Equal width

The icon li should be hugging the right edge. Now, there are a few ways you can acheive the equal spacing. One way would be to have these classes, and apply them to the ul, with either php or 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);
});

Alternatively, you could just directly modify the width with jQuery or PHP. Up to you. Either way, you should use percentages.

$(function()
{
    var n = $("ul.navbar").children().length-1;
    //Get the number of links: -1 because of logout
    $("ul.navbar").width((100/n)+"%");
});
夜访吸血鬼 2024-08-13 03:22:22

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

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

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

The easiest way would be to put the links into little boxes (all the same size). Since CSS has no way to make calculations, you must still set the width of the boxes but by using CSS, you can do this once. Use DIV for the boxes. The class for the boxes must say display: inline; so they behave like words in text (the browser will place them next to each other on a line).

After that, you just calculate the width per box in PHP and send this width in a little piece of inline CSS in the header of the HTML page. That way, all boxes will have the same width and they will all be in the same line.

For an example how to create a navigation bar with CSS, look at the source code of the page you're reading just now.

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