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

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

 <form action="/service/user" method="post">
<label for="userName">User Name:</label>
<input type="text" id="userName" name="userName" />
<label for="password">Password:</label>
<input type="text" id="password"  name="password" />
<input type="checkbox" id="staySigned" name="staySigned" />
<label for="staySigned">Stay signed in</label>
<input type="submit" value="Login" />
</form>

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

 <form action="/service/user" method="post">
<fieldset>
<legend>Sign in to begin.</legend>
<label for="userName">User Name:</label>
<input type="text" id="userName" name="userName" />
<label for="password">Password:</label>
<input type="text" id="password"  name="password" />
<input type="checkbox" id="staySigned" name="staySigned" />
<label for="staySigned">Stay signed in</label>
</fieldset>
<input type="submit" value="Login" />
</form>

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

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

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

 

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

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

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

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

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

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

  

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

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

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

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

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

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

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

WEB学习笔记12-高可读性的HTML之如何正确设计表单的更多相关文章

  1. [原创]java WEB学习笔记12:一个简单的serlet连接数据库实验

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  2. jQuery学习笔记(一)——基础选择器、过滤选择器、表单选择器

    $()就是jQuery中的函数,它的功能是获得()中指定的标签元素.如演示样例中$("p")会得到一组P标签元素,当中"p"表示CSS中的标签选择器.$()中的 ...

  3. Javaweb学习笔记——(十四)—————— 服务器端验证注册登入表单项目

    项目:https://download.csdn.net/download/qq_40223688/10463436 项目 功能: *注册 *登录--------------------------- ...

  4. 学习笔记_springmvc返回值、数据写到页面、表单提交、ajax、重定向

    数据写到页面 后台往前台传数据 TestController添加 /** * 方法的返回值采用ModelAndView, new ModelAndView("index", map ...

  5. Spring源码学习笔记12——总结篇,IOC,Bean的生命周期,三大扩展点

    Spring源码学习笔记12--总结篇,IOC,Bean的生命周期,三大扩展点 参考了Spring 官网文档 https://docs.spring.io/spring-framework/docs/ ...

  6. [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  7. Java Web 学习笔记 1

    Java Web 学习笔记 1 一.Web开发基础 1-1 Java Web 应用开发概述 1.1.1 C/S C/S(Client/Server)服务器通常采用高性能的PC机或工作站,并采用大型数据 ...

  8. Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建

    Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...

  9. matlab学习笔记12单元数组和元胞数组 cell,celldisp,iscell,isa,deal,cellfun,num2cell,size

    一起来学matlab-matlab学习笔记12 12_1 单元数组和元胞数组 cell array --cell,celldisp,iscell,isa,deal,cellfun,num2cell,s ...

随机推荐

  1. jquery 判断浏览器版本

    如果你也是Jquery最初的使用者,那么你一定经历过这样判断浏览器的时代:$.browser.msie && $.browser.version,你目前使用的组件里可能还有应用.但是J ...

  2. hadoop HA学习

    一 HDFS HA架构图 二 HDFS HA组件 Active NameNode和Standby NameNode 在NameNode的HA方案中有两个不同状态的NameNode,分别为活跃态(Act ...

  3. 移动端最强适配(rem适配之px2rem)&& 移动端结合Vuex实现简单loading加载效果

    一.rem之px2rem适配 前言:相信许多小伙伴上手移动端时面对各式各样的适配方案,挑选出一个自己觉得简便.实用.高效的适配方案是件很纠结的事情. 深有体会... 经过多个移动端项目从最初的 vie ...

  4. 微信小程序页面跳转导航wx.navigateTo和wx.redirectTo

    }) wx.redirectTo(OBJECT) 关闭当前页面,跳转到应用内的某个页面. 还是用上面的三张图示作为例子,当使用wx.redirctTo接口跳转页面时,原来的页面将被删除掉,当然,这是小 ...

  5. html布局(盒子)

    在body里面放置两个盒子,里面盒子设置margin-top,外层盒子生效?在里面盒子上面加一个块元素,设置高度 表单 form action="地址" method=" ...

  6. Mac上实现Python用HTMLTestRunner生成html测试报告

    一.导入HTMLTestRunnerNew文件 首先,我们要知道如果要利用HTMLTestRunnerNew生成测试报告的话,就需要对其进行导入: HTMLTestRunnerNew下载地址:链接:h ...

  7. my goal

    I want to get a good command of a programming language at the university, and I have to pass the tes ...

  8. Python收发邮件

    发送邮件使用SMTP协议,接受POP3或IMAP: 创建邮件内容email模块,发送邮件smtplib模块.发送邮件比较简单,只需先创建SMTP对象,登录服务器后根据发收邮箱地址发送即可: POP3接 ...

  9. 页面通过Jquery取值然后传值到后台显示underfined是怎么回事?

    页面通过Jquery取值然后传值到后台显示underfined是怎么回事? 一般情况下第一个如果用jQuery取值的,末尾要用val(),如果用$符号取值的,末尾要加上val. eg: busines ...

  10. Python常用数据类型

    一 .列表 name = ['zhangshan', 'lishi', 'wangwu']# 列表赋值 name.append('liujun')# 增,默认增加到最后位置 name.insert(1 ...