为什么使用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 ,你应该在表单中使用类似label
和form
等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
dt
, dd
表单只是另一种构造表单的方式,以及ul
li
, div
和table
。 你总是可以把一个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标签列表数据,如下所示: –