html5表单实例(使用HTML5和CSS3表单验证功能)
html5表单实例
使用HTML5和CSS3表单验证功能客户端验证是网页客户端程序最常用的功能之一,我们之前使用了各种各样的js库来进行表单的验证。HTML5其实早已为我们提供了表单验证的功能。至于为啥没有流行起来估计是兼容性的问题还有就是样式太丑陋了吧。
下面我们将来一步一步创造一个HTML5和CSS3的表单验证,只使用HTML和CSS。
完成后的如下:
第一步:整理验证字段和类型
首先我们需要如下几个字段:
- 姓名(full name)
- 电话号码(phone number)
- 邮箱地址(email address)
- 网址(website)
在用户输入一些信息后,我们需要校验用户的信息是否正确,避免错误数据和欺骗性的数据传递到服务器。
在HTML5的新规范中,input输入框提供了多种输入类型比如:tel、email、number、range、color等,这些类型在桌面客户端中一般体现不是很明显,如果在移动端键盘上面体现的会更明显。比如number在移动端键盘会自动切换为纯数字,email键盘会自动切换带有@的键盘。
第二步:确定表单样式
我们还需要确定表单最终的样式风格,一般这个工作来至于设计师。这里我在dribbble上面找了一个表单的样式作为这次的demo风格。
第三步:模板代码
使用标准的HTML5申明代码
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>HTML5 Form Validation</title> </head> <body> </body> </html>
第四步:创建表单
创建一个基本的form表单元素,这里我们不提交任何数据只是一个演示,所以form不会进行提交。
<form action="" onsubmit="return false"> </form>
第五步:创建表单元素
表单元素一共有如下元素组成:
- ul
- li
- label
- input
- span
ul和li元素用于排版布局,用于分割表单元素和布局。label用于表单的字段提示文字。input用于用户输入数据。span用于使用emoji提示用户字段是否填写正确。
<ul> <li> <label for="name">FULL NAME</label> <input type="text" id="name" name=" name" placeholder="请输入姓名"/> <span class="icon-name"></span> </li> </ul>
form表单html代码完成代码如下:
第六步:增加样式
完成form元素的编写,紧着着完善一下它的样式,让它看起来更美一些。
body { display: flex; } form { padding: 0 10%; width: 100%; margin: auto; } ul { list-style-type: none; padding: 0; margin: 0; } li { position: relative; margin-bottom: 20px; } label { color: #333; display: block; font-size: 12px; } input { width: 100%; outline: none; border: none; padding: 0.5em 0; font-size: 14px; color: black; position: relative; border-bottom: 1px solid #d4d4d4; } input:-moz-placeholder { color: #d4d4d4; } input::-webkit-input-placeholder { color: #d4d4d4; } li span { display: block; position: absolute; right: 0; top: 10px; font-size: 28px; } button { cursor: pointer; border: 1px solid #999; border-radius: 4px; padding: 10px 20px; margin-top: 10px; background: #fff; }
css代码完成代码如下:
第七步:增加EMOJI提示
在每个form表单结构中,我们已经增加了一个span标签,比如name字段中我们增加了一个<span class="icon-name"></span>标签。现在给他加上样式用于显示校验字段的状态。
li span { display: block; position: absolute; right: 0; top: 10px; font-size: 28px; } /*默认的是一个微笑的表情*/ li span::before { content: '😐'; } /*我们也可根据类名定义一些其他的表情*/ .icon-name::before { content: '😐'; } .icon-phone::before { content: '📞'; } .icon-email::before { content: '📨'; } .icon-website::before { content: '🌐'; }
增加emoji提示样式如下
第八步::invalid和:valid伪类
:valid伪类会匹配满足校验规则的表单元素,:invalid伪类会匹配不满足规则的表单元素。
根据这两个规则我们可以修改满足和不满足规则对应的emoji表情。
/*不满足规则增样式*/ input:focus:invalid { border-bottom: 1px solid red; } input:focus:invalid + span::before { content: '😟'; } /*满足规则样式*/ input:valid, input:focus:valid { border-bottom: 1px solid #11b51d; } input:focus:valid + span::before, input:valid + span::before { content: '😀'; }
完成代码如下
总结:
HTML5提供了css钩子为表单元素,也提供了一些js的接口跟进一步详细的控制表单的校验和错误提示。如果需要更个性化的校验和提示方式可以使用js接口。
- 前端表单验证(AmazeUI的JS表单验证框架实战示例分享)
- wordpress如何在文章中自定义html(wordpress添加Html5的表单验证required方法小结)
- laravelqq邮箱发送失败(解决laravel 表单提交-POST 异常的问题)
- dedecms后台内链如何制作(dedecms自定义表单增加验证码的方法分享)
- laravel数据绑定(laravel-admin表单提交隐藏一些数据,回调时获取数据的方法)
- laravel 表单验证图片(Laravel 自动生成验证的实例讲解:login / logout)
- 如何用jquery进行表单验证(jQuery实现发送验证码控制按钮禁用功能)
- js获取子表单所有数据(JavaScript实现异步提交表单数据)
- 怎么调用dede自定义表单(DEDE实现转跳属性文档在模板上调用出转跳地址)
- php数据库怎么获得表单(php如何把表单内容提交到数据库)
- react动态添加组件属性(react使用antd的上传组件实现文件表单一起提交功能完整代码)
- laravel怎么返回指定列(laravel-admin解决表单select联动时,编辑默认没选上的问题)
- 如何获取html5表单中的元素的值(html5 datalist 选中option选项后的触发事件)
- php 处理html表单(PHP使用HTML5 FormData对象提交表单操作示例)
- thinkphp5表单系统(thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例)
- 织梦自定义表单怎么设置数据(让织梦artlist标签增加notypeid属性实现栏目过滤)
- 各地出招烘 热 旅游(各地出招烘热旅游)
- 2021款起亚霸锐到店了 更换车标,竞争宝马X5有戏吗(2021款起亚霸锐到店了)
- 新款起亚霸锐实拍,比普拉多气派,配3.0T V6,引入国内或许能大卖(新款起亚霸锐实拍)
- ()
- 张勇 阿里新任掌门人(阿里新任掌门人)
- 毛戈平全国第一柜花落银泰 高端国货迎来 高光 时刻(毛戈平全国第一柜花落银泰)
热门推荐
- thinkphp微信开发教程(微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解)
- lnmp环境配置要多大空间(LNMP系列教程之 设置404错误页面)
- vue引入axios(vue封装axios的几种方法)
- 移动端web字体
- python中创建类的方法(Python中如何导入类示例详解)
- php不能用mysql(php写入mysql中文乱码的实例解决方法)
- phpmysql完全学习手册教程(Windows下搭建PHP开发环境Apache+PHP+MySQL)
- 关于mysql性能优化的描述(Mysql性能优化之索引下推)
- apache配置详解(apache2.2和php5.2.17在windows下整合过程的错误解决方法)
- vue弹窗模板(Vue登录页面的动态粒子背景插件实现)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9