从语义上构建表单的最佳方法是什么?

2023-11-24

我见过几个关于开发人员如何使用表格、div 和列表构建表单的示例;所有这些都不是很语义化。构建 HTML 文档的最佳方法是什么,以便它将每个标签和输入组分解到下一行并且可以轻松阅读 -不使用 CSS?

(我觉得 ol 和 ul 只是 tr 和 td 的替代品。在我看来,表单不是内容或定义列表)

我几乎觉得 div 是最好的格式,因为 div 是一个明确的“划分”或项目分组,但我不确定。

示例 HTML

<form>  
    <fieldset>  
        <legend>Your Favorites</legend>  
        <label for="color">Color</label>  
        <input id="color" name="color" type="text" />  
        <label for="food">Food</label>  
        <input id="food" name="food" type="text" />  
        <button type="submit">Submit</button>  
    </fieldset>  
</form>

小心不要混淆语义和结构。 HTML 元素的存在主要是为了表达结构。语义是赋予结构意义。虽然有一个some中的语义意义someHTML标记,是非常通用的意思。所以我的回答是这样的:

语义学

为什么通过形式表达语义对您来说很重要?标记是否应该由标准浏览器以外的客户端使用?这是一个特殊的用例吗?

如果您需要向表单元素注入语义,请通过使用适当的类和 id 装饰结构标记来实现 - 无论您使用哪种元素类型,您都不可能从表单中的 HTML 元素获得任何语义。对您的输入进行分组/分离。

结构

  • 如果您只是想提供输入的视觉分离并希望使用尽可能少的标记,那么使用<br />输入后的标签。
  • 如果您想在结构上将输入分组到其标签,然后使用<div>, <ul>, <ol>, or <dl>- 所有这些标签都可以与其他标签一样实现此目标。
  • 如果在结构上暗示表单元素作为一个集合属于在一起很重要,那么不要使用<div>表示独特性或分离性的元素。列表元素表明不同的子项是一个集合,并且,就像 @bookcasey 在他的评论中所说,在大多数情况下,表单是一个输入列表它们在逻辑上属于一起。

这是我的2c。

对于它的价值,如果不能使用 CSS,我会使用<ul> (or <ol>如果顺序很重要)在这种情况下。当我有 CSS 时我会使用<dl>这给了我更多的风格控制。

UPDATE:

为了回应 Alohci 的论点,我改变了不使用的立场<div>元素。通过将它们包裹在form or fieldset它们已经在逻辑上分组在一起 - 这与适当的类的使用一起(即。<div class="field">正如 Alohci 在评论中所建议的那样)将提供结构和适当的语义。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从语义上构建表单的最佳方法是什么? 的相关文章

随机推荐

  • 配置安全 SSL Apache 反向代理

    我正在尝试使用 apache 建立一个反向代理设置 该设置始终安全地支持 SSL Client lt gt Proxy somehostname com lt gt Server 123 45 67 89 请注意 我的代理服务器有主机名 但
  • IOS取消本地通知

    我不喜欢问模糊的问题 但我无法准确说出问题是什么 在我的应用程序中 我设置了一些每日本地通知 每天下午200点拍摄 后来我删除了设置本地通知的代码 并添加了推送通知功能 我测试了推送并且它有效 只要我愿意 但我仍然收到旧的通知 可能是因为我
  • 从本地文本文件读取到 C# 中? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我已经搜索并只找到了控制台的此信息 但我想知道是否可以将本地计算机上的文件中的文本读取到代码中 格式化它并显示在屏幕上 我们有一个包含一些法律术语的文本文件 可以定期更新 而不是让用
  • 如何在CUDA中使用多态性

    我正在将一些物理模拟代码从 C 移植到 CUDA 基本算法可以理解为 对向量的每个元素应用一个运算符 在伪代码中 模拟可能包括以下内核调用 apply Operator o Vector v 例如 apply add three opera
  • 编译后从类路径中删除条目

    我有一个遗留的战争项目 它依赖于一个jar项目 该jar项目需要添加一些非托管jar到类路径用于编译 但这些罐子不应该在战争中打包 所以我的问题是如何从完整类路径 以下内容将不起作用 val excludeFilter servlet ap
  • 从服务器端调用Javascript函数[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 单击按钮时 我正在调用服务器端函数 其中我正在调用 Javascript 函数 例如 Page ClientScript RegisterStartupScript this Get
  • Django 迁移错误 - NodeNotFoundError

    Django 版本 1 8 尝试迁移我的项目中新添加的应用程序 这是回溯错误 Traceback most recent call last File manage py line 10 in
  • 如何融化Spark DataFrame?

    PySpark 或至少 Scala 中的 Apache Spark 中是否有等效的 Pandas Melt 函数 到目前为止 我一直在 Python 中运行示例数据集 现在我想对整个数据集使用 Spark 火花 gt 3 4 在 Spark
  • 如何在 Eclipse 中更新 Maven 存储库?

    假设您已经在使用m2eclipse 插件 当它没有将您的存储库中的依赖项更新为最新版本时 您该怎么办 例如 在命令行上 您只需添加 U标志如 mvn clean install U 强制更新依赖项 Eclipse中有类似的东西吗 它似乎并不
  • Google Charts:饼图标题位置

    我被分配去实现一些图表 老板要求我将图表的标题与图表分开 我尝试将图表的区域从顶部移动一点 但标题也随着图表移动 如下所示 我尝试使用 chartArea top 80 结果就是 在屏幕截图上 我确信该财产只移动标题 这是另一个 但我还找不
  • Tensorflow 仅针对变量的某些元素进行最小化

    是否可以通过仅更改变量的某些元素来最小化损失函数 换句话说 如果我有一个变量X长度为2 如何通过改变来最小化我的损失函数X 0 并保持X 1 持续的 希望我尝试过的这段代码能够描述我的问题 import tensorflow as tf i
  • 如何使用 C# 清理 html 页面上的输入?

    是否有一个库或可接受的方法来清理 html 页面的输入 在本例中 我有一个只有姓名 电话号码和电子邮件地址的表单 代码必须是 C 例如 应该成为 John Doe 我们正在使用Html消毒剂 Net 库 其中 是开源的 麻省理工学院 Git
  • 如何解决h2数据库和spring boot中的错误用户名和密码错误?

    application properties 中使用的属性 server port 8085 spring datasource url jdbc h2 test spring datasource driverClassName org
  • VB.NET 存储货币值的最佳数据类型

    在 VB NET 中存储货币值最合适的数据类型是什么 Decimal 别名为System Decimal结构BCL 中 旨在存储货币价值 它是 128 位十进制浮点类型 与二进制浮点相反 对于存储具有高十进制精度的 真实世界 值非常有用 在
  • JavaScript 数组切片与删除

    有什么理由应该使用其中一种而不是另一种吗 e g var arData a b c arData slice 1 1 removes b var arData a b c delete arData 1 removes b delete留给
  • Python,并行处理大型文本文件

    数据文件 SAM 文件 中的样本记录 M01383 0 chr4 66439384 255 31M 0 0 AAGAGGA GFAFHGD MD Z 31 NM i 0 M01382 0 chr1 241995435 255 31M 0 0
  • 不同国家不同价格

    我看到有些应用程序在不同的 iTunes 商店 根据位置 有不同的价格 他们是怎么做到的 我在 iTunes Connect 中没有看到任何可以实现这一点的地方 不同的国家不能有不同的价格 唯一的问题是 当您选择等级时 根据国家 地区货币
  • Typescript 接口可以表达属性的共现约束吗

    在整体 Typescript 接口或类型定义中是否有一个标准模式来断言属性要么一起出现 要么根本不出现 例如 如果一个项目看起来像这样 那么它可能是有效的 id ljklkj spellcheck true spellcheckModel
  • 无法在 ggplot2 的 geom_text 表达式中连接超过 3 个元素

    我有一个数据框 正在为其计算线性模型 并希望使用 geom text 包含相关系数及其重要性 structure list ppno c 1L 1L 1L 10L 10L 10L 2L 2L 2L 3L 3L 3L 4L 4L 4L 5L
  • 从语义上构建表单的最佳方法是什么?

    我见过几个关于开发人员如何使用表格 div 和列表构建表单的示例 所有这些都不是很语义化 构建 HTML 文档的最佳方法是什么 以便它将每个标签和输入组分解到下一行并且可以轻松阅读 不使用 CSS 我觉得 ol 和 ul 只是 tr 和 t