【问题标题】:How do I make a HTML form using <label> <input> and <span>?如何使用 <label> <input> 和 <span> 制作 HTML 表单?
【发布时间】:2013-09-27 22:46:09
【问题描述】:

我使用表格在 HTML 中制作了一个表格,效果很好,但是,我的老师告诉我,从表格制作表格不再是正确的方法,我应该使用:

<form>
 <label></label>
 <input>
</form>

但他也提到了一些关于使用&lt;span&gt;&lt;/span&gt; 的事情,我猜这正是我有点困惑的地方,因为我应该在哪里使用它 - 即。我应该把&lt;label&gt;&lt;input&gt; 放在&lt;span&gt;&lt;/span&gt; 之间吗?

我问的几个原因是:

  1. 我认为自己在 HTML 方面不是很精通
  2. 我会使用&lt;div&gt;&lt;/div&gt; 包裹&lt;label&gt;&lt;input&gt;,然后使用css 将其放在我希望它出现在网页上的位置。

关于我要创建的表单,我希望它看起来像这样:

[Firstname] [lastname]
[textfield] [textfield]
[Street]    [zip-code]  [city]
[textfield] [textfield] [textfield]
[E-mail]    [Phone]
[textfield] [textfield]
[message]
[textarea]

我希望我的表单布局对你们大多数人来说都有意义!

【问题讨论】:

    标签: forms input label html


    【解决方案1】:

    试试这样的:

    <form action="action.php">
      <label for="firstName">First Name</label>
      <input type="text" name="fname" id="firstName"><br>
    
      <label for="lastName">First Name</label>
      <input type="text" name="lname" id="lastName"><br>
      ....
    </form>
    

    你可以使用一些像这样的css来排列它:

    label{
          width: 100px;
          text-align:left;
    }
    

    【讨论】:

      【解决方案2】:

      虽然从技术上讲您可以使用 SPAN.. 因为它是一个内联元素,LABEL 和 INPUT 也是如此,但它不太适合。内联元素并不是真正设计为容器,因此使用块级元素(如 DIV)将是一种更好的结构化方式。

      除此之外,为了使其对齐,您将进入 CSS 的 relms 以浮动您的元素。

      所以只有以下几行:

      <form action="">
          <fieldset>
              <div class="left">
                  <label for="FirstName">First Name</label>
                  <input type="text" name="FirstName" id="FirstName">
              </div>
              <div class="right">
                  <label for="LastName">Last Name</label>
                  <input type="text" name="LastName" id="LastName">
              </div>
          </fieldset>
      </form>
      
      <style type="text/css">
      
      fieldset {
          width:500px;
          overflow:hidden;
      }
      
      fieldset .left {
          float:left;
          width:50%;
      }
      fieldset .right {
          float:right;
          width:50%;
      }
      fieldset label {
          display:block;
      }
      fieldset block {
          display:block;
      }
      </style>
      

      【讨论】:

      • 你的例子确实和我自己做的非常相似,这让我得出结论,我误解了老师告诉我的内容。
      【解决方案3】:

      您的老师可能的意思是您应该将每对inputlabel 包装在span 中。您认为应该使用 div 而不是 span 是完全正确的。只需告诉您的老师在禁用样式表时查看页面即可。基于类似的理由,你应该证明他/她说不应该使用 table 是完全错误的。

      要在不使用table 标记的情况下编写表单(本质上是表格数据),只需使用div 方法并使用CSS 的表格布局功能:在form 上设置display: tabledisplay: table-rowdiv 元素上,display: table-cellinputlabel 元素上。根据需要添加填充和水平对齐。不要忘记告诉您的老师,这仅适用于足够现代的浏览器,而使用 HTML table 的逻辑方法适用于所有浏览器。

      【讨论】:

      • [quote]您老师的意思可能是您应该将每对输入和标签包装在一个跨度中[/quote] 是的,我记得,这正是他告诉我的!然而,正如我在我的评论@Ricky S(你上面的帖子)中写的那样,这让我得出了类似的结论,所以我想我需要让我的老师再次向我解释,所以我不会浪费你的和其他用户的时间。我的老师还提到了通过在输入字段之后显示绿色的“ok”文本来向用户显示表单字段是否正确填写的能力 - 也许这是span 发挥作用?
      • @NeoFox1972,你的老师完全错了。你可以从他的错误中吸取教训,但这是要求解释的唯一原因。使用span(与divtable 标记相比)与显示字段是否已正确填写无关 - 此类事情取决于客户端JavaScript,或者(如果提交表单然后出错报告)在服务器端表单处理程序上。添加错误/正确性信号的方式取决于所使用的标记,但只是一种微不足道的方式。
      • @Jukka我必须承认,虽然他在解释使用 labelinputinputspan 制作表格的有用性,但对我来说很有意义,这让我得出结论,我'我只是没有告诉你他所说的一切,就像他对我所说的那样(我为此道歉)。我一回到学校就和他谈谈,让他再解释一遍(必要时做笔记),然后我会把他说的话贴出来。除了教我的老师还有一家开发移动应用程序的小公司,我知道他有网络开发学士学位,所以他一定知道他在说什么
      • "@Jukka",我和我的老师谈过了,让他解释为什么我们使用
      • 解释毫无意义。 div的使用和label的使用是独立的选择; div 与分组有关,label 功能上 将标签与控件连接起来。其余的则更加晦涩难懂,只是试图用“移动应用”之类的流行语来说服您。
      猜你喜欢
      相关资源
      最近更新 更多
      热门标签