WEB学习笔记12-高可读性的HTML之如何正确设计表单

 

网站中的用户登录、注册、用户调查等都是通过页面中的表单提交到网站服务器的。假设要实现让用户设置个人信息的一个表单。

该表格为两栏布局,第一栏中的文本左对齐,第二栏的表单控件右对齐,构成了最容易实现的表单布局设计。<label>用于为输入控件定义文本标签(label)——即显示在输入控件旁边的说明性文字。要为<label>指定关联的输入控件,只需把相关控件的id赋值给<label>标签的for属性。for属性的作用是:不仅把<label>元素上的触发事件指向了for属性指代的表单元素,也从语义上绑定了label元素和此表单元素。

1 <form action="/service/user" method="post">
2 <label for="userName">User Name:</label>
3 <input type="text" id="userName" name="userName" />
4 <label for="password">Password:</label>
5 <input type="text" id="password"  name="password" />
6 <input type="checkbox" id="staySigned" name="staySigned" />
7 <label for="staySigned">Stay signed in</label>
8 <input type="submit" value="Login" />
9 </form>

此外,还可以使用<fieldset>元素给表单控件分组。和<fieldset>相关的一个元素是<legend>元素,<legend>元素用来定义控件组的标题。表单使用<label>标签、<fieldset>标签和<legend>标签后的代码如下:

 1 <form action="/service/user" method="post">
 2 <fieldset>
 3 <legend>Sign in to begin.</legend>
 4 <label for="userName">User Name:</label>
 5 <input type="text" id="userName" name="userName" />
 6 <label for="password">Password:</label>
 7 <input type="text" id="password"  name="password" />
 8 <input type="checkbox" id="staySigned" name="staySigned" />
 9 <label for="staySigned">Stay signed in</label>
10 </fieldset>
11 <input type="submit" value="Login" />
12 </form>

下面介绍一下提高表单易用性的手段:

(1)使用<label>标签,并设置<label>标签的for属性.

  <label>元素上的鼠标事件会转移到其关联的输入控件上,这一特性为鼠标用户增强了可用性,尤其是对单选框和复选框等使用鼠标操作的输入控件来说。

 

1 <input type="checkbox" id="keepSigned" name="keepSigned" value="" />
2 <label for="keepSigned">Keep Me Signed In For 30 Days.</label>
3 // 省略for属性,把输入控件作为label的子元素
4 <label><input type="checkbox" id="keepSigned" name="keepSigned" value="" /> Keep Me Signed In For 30 Days.</label>

(2)给输入控件设置合适的水印提示

  推荐使用HTML5中引入的placeholder属性.

1 <input type="text" name="email" id="email" placeholder="user@lifeway.com" />

(3)如有必要,给输入控件设置tab顺序

  如果实际的顺序并不是期望的顺序,则需要给输入控件设置tabindex属性来设置输入控件的切换顺序,示例代码如下:

  

1 <input type="text" tabindex="2" />

(4)使用HTML5中引入的表单控件

 

结合以上所述的易用性表单设计原则,给相关表单控件设置placeholder属性、tabindex属性和require属性,并更改用户名输入框的类型为email。最终的HTML代码为:

 1 <form action="/service/user" method="post">
 2 <fieldset>
 3 <legend>Sign in to begin.</legend>
 4 <label for="userName">User Name:</label>
 5 <input type="email" id="userName" name="userName" placeholder=user@lifeway.com" tabindex="1" required="true" />
 6 <label for="password">Password:</label>
 7 <input type="text" id="password"  name="password" placeholder="
 8 password" tabindex="2" required="true" />
 9 <label for="staySigned">
10 <input type="checkbox" id="staySigned" name="staySigned" tabindex=
11 "3" />
12 Stay signed in
13 </label>
14 </fieldset>
15 <input type="submit" value="Login" tabindex="4" />
16 </form>

为了检验HTML是否符合语义,尝试去掉作用于表单上的CSS样式,此时在Chrome浏览器中显示的效果如图

因为设置了用户名和密码输入框的require属性,即输入不允许为空,所以当单击“Login”按钮时,会出现默认的错误提示框。

在Firefox浏览器中显示的效果和Chrome浏览器中显示的效果类似,只是外观稍有不同

 

posted @ 2018-07-10 14:35  努力的喵喵喵  阅读(296)  评论(0编辑  收藏  举报