你可以使用 HTML select 标签创建下拉菜单,以便用户可以选择他们想要的值。它是收集要发送到服务器的数据的重要功能。

select 标签通常位于一个表单元素中,要选择的项目编码在另一个标签 <option> 中。它也可以是一个独立的元素,通过 form 属性与一个表单相关联。

在本教程中,我将向你介绍如何使用 select 标签创建下拉菜单,以便你可以开始使用它来收集编码项目中的数据。我还将介绍如何设置 select 标签的样式。

select 标签的属性

在深入研究如何使用 select 标签创建下拉菜单之前,我们需要讨论 select 标签所具有的属性。

这些是它的属性:

  • name:你需要将 name 附加到每个表单控件,因为它用于在提交到服务器后引用数据。
  • multiple:此属性允许用户从下拉菜单中选择多个选项。
  • required:这通常用于验证。有了它,除非用户从下拉列表中选择至少一个选项,否则表单不会提交。
  • disabled:此属性禁止用户使用下拉列表。
  • size:以数字表示,用于指定下拉列表中可见的选项数。
  • autofocus:规定在页面加载后文本区域自动获得焦点。

如何使用 select 标签创建下拉菜单

要使用 select 标签创建下拉菜单,你首先需要一个 form 元素。这是因为其中还有一个 submit 按钮(表单元素),以便将数据提交到服务器。

<form action="#">
      <label for="lang">Language</label>
      <select name="languages" id="lang">
        <option value="javascript">JavaScript</option>
        <option value="php">PHP</option>
        <option value="java">Java</option>
        <option value="golang">Golang</option>
        <option value="python">Python</option>
        <option value="c#">C#</option>
        <option value="C++">C++</option>
        <option value="erlang">Erlang</option>
      </select>
      <input type="submit" value="Submit" />
</form>

我添加了一些简单的 CSS 来使下拉菜单和按钮居中,并为正文设置浅灰色背景:

body {
     display: flex;
     align-items: center;
     justify-content: center;
     margin: 0 auto;
     height: 100vh;
     background-color: #f1f1f1;
   }

input {
     display: flex;
     align-items: center;
     justify-content: center;
     margin: 0 auto;
   }

为了使其更加精细和易于访问,你还可以将选择框附加到标签元素,以便在单击标签文本时获得焦点。你可以使用以下代码执行此操作:

<form action="#">
      <label for="lang">Language</label>
      <select name="languages" id="lang">
        <option value="javascript">JavaScript</option>
        <option value="php">PHP</option>
        <option value="java">Java</option>
        <option value="golang">Golang</option>
        <option value="python">Python</option>
        <option value="c#">C#</option>
        <option value="C++">C++</option>
        <option value="erlang">Erlang</option>
      </select>
      <input type="submit" value="Submit" />
</form>

我把一个数字符号 (#) 作为 action 属性的值,所以当你点击提交按钮时你不会得到 404。

但是现在我们必须对 CSS 做一些改动:

 body {
     display: flex;
     align-items: center;
     justify-content: center;
     margin: 0 auto;
     height: 100vh; 
     background-color: #f1f1f1;
   }

input {
     display: flex;
     align-items: center;
     justify-content: center;
     margin: 0 auto;
   }

label {
     display: flex;
     align-items: center;
     justify-content: center;
     margin: 0 auto;
   }

select {
     margin-bottom: 10px;
     margin-top: 10px;
   }

结果显示如下:

select-one

它并没有就此结束。默认情况下会显示其中一个下拉项,如果用户在登陆页面时立即单击 submit 按钮,则将选择该下拉项。

但这不是一个好的用户体验。你可以通过将 “select a language” 作为下拉列表的第一项来避免它。

 <form action="#">
      <label for="lang">Language</label>
      <select name="languages" id="lang">
        <option value="javascript">Select a language</option>
        <option value="javascript">JavaScript</option>
        <option value="php">PHP</option>
        <option value="java">Java</option>
        <option value="golang">Golang</option>
        <option value="python">Python</option>
        <option value="c#">C#</option>
        <option value="C++">C++</option>
        <option value="erlang">Erlang</option>
      </select>
      <input type="submit" value="Submit" />
</form>

当用户点击选择框来选择一个项目时,下拉菜单也覆盖了提交按钮——这也影响了用户体验。

你可以使用 size 属性更改此设置,默认情况下将显示一定数量的项目,并在下拉列表中显示其他项目的滚动条。

这也可以让你摆脱虚拟的第一个项目,因为某些项目将自动对用户可见。

 <form action="#">
      <label for="lang">Language</label>
      <select name="languages" id="lang" size="4">
        <option value="javascript">JavaScript</option>
        <option value="php">PHP</option>
        <option value="java">Java</option>
        <option value="golang">Golang</option>
        <option value="python">Python</option>
        <option value="c#">C#</option>
        <option value="C++">C++</option>
        <option value="erlang">Erlang</option>
      </select>
      <input type="submit" value="Submit" />
</form>
select-two

有了 multiple 属性,用户可以从下拉列表中选择多个项目。

 <form action="#">
      <label for="lang">Language</label>
      <select name="languages" id="lang" multiple>
        <option value="javascript">JavaScript</option>
        <option value="php">PHP</option>
        <option value="java">Java</option>
        <option value="golang">Golang</option>
        <option value="python">Python</option>
        <option value="c#">C#</option>
        <option value="C++">C++</option>
        <option value="erlang">Erlang</option>
      </select>
      <input type="submit" value="Submit" />
</form>

这使 4 个项目默认可见。要选择多个项目,用户必须按住 shift 或 ctrl 键,然后用鼠标选择。

select-three

使用 select 和 <option> 标签可以做的还不止这些。你还可以使用 <select> 标签内的 <optgroup> 元素制作多层选择框。

你可以将已经制作好的下拉菜单转换为多层选择框,如下所示:

<form action="#">
      <label for="lang">Language</label>
      <select name="languages" id="lang">
        <optgroup label="first-choice">
          <option value="select">Select a language</option>
          <option value="javascript">JavaScript</option>
          <option value="php">PHP</option>
          <option value="java">Java</option>
          <option value="golang">Golang</option>
        </optgroup>
        <optgroup label="second-choice">
          <option value="python">Python</option>
          <option value="c#">C#</option>
          <option value="C++">C++</option>
          <option value="erlang">Erlang</option>
        </optgroup>
      </select>
      <input type="submit" value="Submit" />
</form>
multi-select

如何设置 select 元素的样式

select 元素的样式通常令人困惑,并且在浏览器中呈现不一致。但你可以尝试以下操作:

 <form action="#">
      <label for="lang">Language</label>
      <select name="languages" id="lang">
        <option value="select">Select a Language</option>
        <option value="javascript">JavaScript</option>
        <option value="php">PHP</option>
        <option value="java">Java</option>
        <option value="golang">Golang</option>
        <option value="python">Python</option>
        <option value="c#">C#</option>
        <option value="C++">C++</option>
        <option value="erlang">Erlang</option>
      </select>
      <input type="submit" value="Submit" />
</form>
 select {
        margin-bottom: 10px;
        margin-top: 10px;
        font-family: cursive, sans-serif;
        outline: 0;
        background: #2ecc71;
        color: #fff;
        border: 1px solid crimson;
        padding: 4px;
        border-radius: 9px;
      }

在上面的 CSS 代码片段中,我为选择框中的文本设置了以下外观:

  • 草书字体和白色
  • 轮廓为 0 以去除聚焦时的丑陋轮廓
  • 绿色的背景
  • 一个 1 像素刻度的深红色边框
  • 边框半径为 4 像素,以在所有边上获得略微圆润的边框
  • 4 像素的 padding

选择框现在看起来更好:

select-styled

总结

当你在 HTML 中创建下拉列表和组合列表时,select 标签非常有用。

请记住,使用单选按钮,你只能从列表中选择一个项目——但使用复选框,你可以选择多个项目。select 更灵活,因为你可以将其设置为可选择单个项目或多个项目。

select 标签的一个问题是很难设置样式。一个合理的解决方案是使用一个 CSS 库,它提供了很好的实用程序类来设置表单和 select 元素的样式。

我希望本教程让你更加熟悉 select 标签,以便你可以开始在你的项目中使用它。

感谢你阅读本文!

原文:HTML Select Tag – How to Make a Dropdown Menu or Combo List,作者:Kolade Chris