为什么使用HTML表单的定义列表(DL,DD,DT)标签而不是表格?

我最近遇到了一些例子,如:

<dl> <dt>Full Name:</dt> <dd><input type="text" name="fullname"></dd> <dt>Email Address:</dt> <dd><input type="text" name="email"></dd> </dl> 

用于做HTML表单。 这是为什么? 与使用表格相比有什么优势?

我想这是由你来确定的语义,但在我看来:

应该使用与表单相关的属性,而不是定义列表。

 <form> <label for="fullname">Full Name:</label> <input type="text" name="fullname" id="fullname"> <label for="email">Email Address:</label> <input type="text" name="email" id="email"> </form> 

<label>标签中的“for”属性应引用<input>标签的“id”属性。 请注意,当标签与字段相关联时,单击标签将关联字段。

您还可以使用<fieldset>之类的标签将表格的各个部分聚合在一起,并使用<legend>来标记字段集。

我已经多次成功地使用了本文中概述的技术。

我同意sjstrutt ,你应该在表单中使用类似labelform等forms相关的标签,但是在他的例子中列出的HTML通常会缺less一些代码,你可以使用它作为“CSS”样式的“钩子”。

作为这个的结果我标记我的forms是这样的:

 <form name="LoginForm" action="thispage"> <fieldset> <legend>Form header</legend> <ul> <li> <label for="UserName">Username: </label> <input id="UserName" name="UserName" type="text" /> </li> <li> <label for="Password">Password: </label> <input id="Password" name="Password" type="text" /> </li> </ul> </fieldset> <fieldset class="buttons"> <input class="submit" type="submit" value="Login" /> </fieldset> </form> 

这种方法给我留下了一套易于理解的标签,它包含了足够的钩子来以很多不同的方式来devise表单。

这是语义与格式问题的一个子集。 定义列表说明它们是什么,相关的键/值属性的列表,但没有说明如何显示它。 一个表格说的更多关于布局,以及如何显示数据,然后是内部的数据。 它限制了如何通过过分指定格式和不明确它是什么来格式化列表。

历史上,HTML将语义和格式混淆了。 字体标签和表格是最差的例子。 为了从XHTML格式化和剥离许多纯粹的格式化标签,CSS转向了格式化的意义分离。 通过将格式分隔到CSS中,您可以以多种不同的方式显示相同的HTML格式,从而可以为广泛的浏览器,小型移动浏览器,打印,纯文本等格式化它。

为了启发,请访问CSS Zen Garden 。

定义列表具有语义。 它们是列表项(<dt>)及其关联的定义(<dd>)。 因此,在这种情况下,<dl>比表格更精确地刻画了内容的语义。

在这种情况下,标签和input你的语义,并且它们是独立的。

想象一下,你必须阅读网页,出门,盲人。 你不会说“好的,我在这里有一个定义列表,第一个是'名字'。 相反,你可能会说:“好吧,我们在这里有一个表单 ,它看起来像有一组字段 ,第一个input标记为 ”名称“。

这就是为什么语义网很重要。 它允许页面的内容准确地代表人类和技术。 例如,有许多 浏览器 插件可以帮助用户快速填写标准信息(姓名,电话号码等)。 如果input没有相关的标签,这些很less工作。

希望有所帮助。

使用dl dtdd表单只是另一种构造表单的方式,以及ul lidivtable 。 你总是可以把一个label放入dt 。 这样你就可以保持表单特定的元素label

 <form action="/login" method="post"> <dl> <dt><label for="login">Login</label></dt> <dd><input type="text" name="login" id="login"/></dd> <dt><label for="password">Password</label></dt> <dd><input type="password" name="password" id="password"/></dd> <dd><input type="submit" value="Add"/></dd> </dl> </form> 

定义列表几乎从不使用,因为从语义上讲,它们很less出现在互联网上。

在你的情况下,正确的代码已经发布:

 <form> <label for="fullname">Full Name:</label> <input type="text" name="fullname" id="fullname"> <label for="email">Email Address:</label> <input type="text" name="email" id="email"> </form> 

您正在为input创build一个带有input和标签的表单,而不是列出一个单词列表并定义它们。

如果你正在做一些帮助部分,那么定义列表将是适当的,例如:

 <dl> <dt>HTML</dt> <dd>Hypertext Markup Language</dd> <dt>CSS</dt> <dd>Cascade Stylesheets</dd> <dt>PHP</dt> <dd>Hypertext Preprocessor</dd> </dl> 

使用<dl>标记表单的部分原因是用<dl>比<table>做花哨的CSS布局技巧要容易得多。 另一部分是它比表格更好地反映了表单的语义(标签/字段对列表)。

好的,表讨厌也是它的一部分。

几乎所有的表格都是表格。 你有没有看过不是表格的表格? 我读过的指南build议使用表格标签进行表格显示,这正是表单,日历和电子表格的用途。 而现在他们使用DD和DT而不是表? 什么是Web来? 🙂

有时,定义列表只是以所需的方式呈现信息,而表格却不是。 就个人而言,我可能不会使用表单的定义列表,除非它适合网站的风格。

表格列表数据将如下所示: –

在这里输入图像说明

您可以使用DL,DT,DD标签列表数据,如下所示: –

在这里输入图像说明