在 HTML/CSS 中组织列表

发布于 2024-07-20 10:26:39 字数 423 浏览 6 评论 0原文

我有一个列表,每个项目都需要两个部分。 我还需要第一部分具有固定宽度。 我应该如何编码?

我尝试过使用定义列表:

    <dl>
      <dt style="width: 2em;">foo</dt><dd>bar</dd>
    ...

    </dl>

... 和带有跨度的用户列表:

    <ul>
      <li><span style="width: 2em;">foo<span>bar</li>
    ...

    </ul>

两者都不起作用。 有没有规范的方法可以做到这一点?

I have a list and I need two sections in each item. I also need the first section to be of fixed width. How should I code it?

I've tried using definition lists:

    <dl>
      <dt style="width: 2em;">foo</dt><dd>bar</dd>
    ...

    </dl>

... and user lists with span:

    <ul>
      <li><span style="width: 2em;">foo<span>bar</li>
    ...

    </ul>

Neither worked. Are there any canonical ways to do that?

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

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

发布评论

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

评论(6

南街九尾狐 2024-07-27 10:26:39

就像艾伦说的,但如果你只放一个 div ,它不会按你想要的方式工作,试试这个:(

<ul>
  <li><div style="width: 200px; display: inline-block;">foo</div>bar</li>
  <li><div style="width: 200px; display: inline-block;">foo12</div>bar</li>
  <li><div style="width: 200px; display: inline-block;">foo12345</div>bar</li>
  <li><div style="width: 200px; display: inline-block;">foo12345678</div>bar</li>
</ul>

也许你想使用一个类,而不是重复每个列表项的样式属性)

Like Alan said but if you just put a div it won't work the way you want, try this:

<ul>
  <li><div style="width: 200px; display: inline-block;">foo</div>bar</li>
  <li><div style="width: 200px; display: inline-block;">foo12</div>bar</li>
  <li><div style="width: 200px; display: inline-block;">foo12345</div>bar</li>
  <li><div style="width: 200px; display: inline-block;">foo12345678</div>bar</li>
</ul>

(maybe you'd like to use a class instead of repeating the style attribute each list item)

满栀 2024-07-27 10:26:39

我想出的方法也许不是规范的(但只是因为我不相信有一个“规范”的实现方法),但它确实有效:

    <style type="text/css" media="screen">

        #container
            {width: 50%;
            margin: 0 auto;
            }

        ol,
        ul  {border: 1px solid #ccc;
            width: 90%;
            padding: 1.4em 0;
            }

        ol li,
        ul li   {background-color: #ccc;
            margin-left: 20%;
            }

        ol li span.list-head,
        ul li span.list-head
            {background-color: #ffa;
            float: left;
            display: block;
            width: 6em;
            }

        dl  {border: 1px solid #ccc;
            line-height: 1.4em;
            padding: 1.4em 0 0 0;
            }

        dl dt   {background-color: #ffa;
            display: block;
            margin: 0;
            width: 10%;
            }

        dl dd   {background-color: #fc0;
            display: block;
            margin: 0;
            width: 88%;
            margin-left: 11%;
            position: relative;
            top: -1.4em;
            }       

    </style>
...
    <div id="container">

        <ol>

            <li><span class="list-head">Foo:</span> bar.</li>

            <li><span class="list-head">Bar:</span> baz.</li>

            <li><span class="list-head">Baz:</span> foo.</li>

        </ol>

        <ul>

            <li><span class="list-head">Foo:</span> bar.</li>

            <li><span class="list-head">Bar:</span> baz.</li>

            <li><span class="list-head">Baz:</span> foo.</li>

        </ul>

        <dl>

            <dt>Foo:</dt>
            <dd>bar.</dd>

            <dt>Bar:</dt>
            <dd>baz.</dd>

            <dt>Baz:</dt>
            <dd>foo.</dd>

        </dl>

    </div>

有一个工作演示:http://www.davidrhysthomas.co.uk/so/lists.html

The way I came up with is, perhaps, not canonical (but only because I'm not convinced that there is a 'canonical' means of implementing it), but it does work:

    <style type="text/css" media="screen">

        #container
            {width: 50%;
            margin: 0 auto;
            }

        ol,
        ul  {border: 1px solid #ccc;
            width: 90%;
            padding: 1.4em 0;
            }

        ol li,
        ul li   {background-color: #ccc;
            margin-left: 20%;
            }

        ol li span.list-head,
        ul li span.list-head
            {background-color: #ffa;
            float: left;
            display: block;
            width: 6em;
            }

        dl  {border: 1px solid #ccc;
            line-height: 1.4em;
            padding: 1.4em 0 0 0;
            }

        dl dt   {background-color: #ffa;
            display: block;
            margin: 0;
            width: 10%;
            }

        dl dd   {background-color: #fc0;
            display: block;
            margin: 0;
            width: 88%;
            margin-left: 11%;
            position: relative;
            top: -1.4em;
            }       

    </style>
...
    <div id="container">

        <ol>

            <li><span class="list-head">Foo:</span> bar.</li>

            <li><span class="list-head">Bar:</span> baz.</li>

            <li><span class="list-head">Baz:</span> foo.</li>

        </ol>

        <ul>

            <li><span class="list-head">Foo:</span> bar.</li>

            <li><span class="list-head">Bar:</span> baz.</li>

            <li><span class="list-head">Baz:</span> foo.</li>

        </ul>

        <dl>

            <dt>Foo:</dt>
            <dd>bar.</dd>

            <dt>Bar:</dt>
            <dd>baz.</dd>

            <dt>Baz:</dt>
            <dd>foo.</dd>

        </dl>

    </div>

There's a working demo over at: http://www.davidrhysthomas.co.uk/so/lists.html.

南风起 2024-07-27 10:26:39

宽度不适用于 标记,因为它们是内联的。 尝试用

或任何其他块元素替换标签。

Width does not apply to <span> tags as they are inline. Try replacing the tag with a <div> or <p> or any other block element.

风柔一江水 2024-07-27 10:26:39

使用 dl 并将 dt 向左浮动。

<style type="text/css">
dt {clear:left; float:left; width: 8em;}
</style>

<dl>
     <dt>foo<dt>
     <dd>bar</dd>
     <dt>foo1<dt>
     <dd>bar1</dd>
     <dt>foo12345<dt>
     <dd>bar</dd>
 </dl>

Use a dl and float the dt to the left.

<style type="text/css">
dt {clear:left; float:left; width: 8em;}
</style>

<dl>
     <dt>foo<dt>
     <dd>bar</dd>
     <dt>foo1<dt>
     <dd>bar1</dd>
     <dt>foo12345<dt>
     <dd>bar</dd>
 </dl>
情独悲 2024-07-27 10:26:39

尝试为第一部分使用标签或内联 div

try either a label for the first portion or an inline div

洒一地阳光 2024-07-27 10:26:39

我想问:这是为了表示表格数据吗? 我们一直被灌输这样的观念:HTML 表格是邪恶的,但对于显示数据表格来说,它们是完美的。 我见过不止一位编码人员尝试使用

和 CSS 复制 标记的功能。

当然,如果不是,那么请继续。 :-)

I'd like to ask: is this for representing tabular data? We've been indoctrinated into thinking that HTML tables are evil, but for showing, well, a table of data, they're perfect. I've seen more than one coder try and duplicate the functionality of the <table> tag using <div>s and CSS.

Of course, if it's not, then please, carry on. :-)

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