UI状态伪类选择器,用于选择处于某种状态下的UI元素,主要用于HTML表单上,根据表单元素的不同状态,定义不同的样式,来增强用户体验。

表单元素的状态包括获得焦点、失去焦点、选中、未选中、可用、不可用、有效、无效、必填、选填、只读等等。

表 2-10 UI状态伪类选择器
选择器 功能描述 版本
E:focused 选择表单中获得焦点的元素 3
E:checked 选择表单中被选中的radio或者checkbox元素 3
E:enabled 选择表单中可用的元素 3
E:disabled 选择表单中不可用(即被禁用)的元素 3
E:valid 选择表单中填写的内容符合要求的元素 3
E:invalid 选择表单中填写的内容不符合要求的元素,如非法的URL或E-Mail,或与 pattern 属性给出的模式不匹配 3
E:in-range 选择表单中输入的数字在有效范围内的元素 3
E:out-of-range 选择表单中输入的数字超出有效范围的元素 3
E:required 选择表单中必填的元素 3
E:optional 选择表单中允许使用required属性,且未指定为required的元素 3
E:read-only 选择表单中状态为只读的元素 3
E:read-write 选择表单中状态为非只读的元素 3
E:default 选择表单中默认处于选取状态的单选框或复选框,即使用户将该单选框或复选框控件的选取状态设定为非选取状态,E:default选择器中指定的样式仍然有效 3
E:indeterminate 选择器表单中一组单选框中没有任何一个单选框被选取时整组单选框的样式,如果用户选取了其中任何一个单选框,则该样式被取消指定 3

在使用UI状态伪类选择器时,可以结合属性选择器,来限定特定元素的类型,甚至将UI状态伪类结合在一起使用,来创造更丰富的样式。如果不限定元素的类型,则对任何元素均有效。

E:focused

E:focused伪类选择器选择获得的元素。如,以下规则可以为任何获得焦点的 input 元素添加 1px 的橙色边框,而不管它的类型:

  1. input:focus {
  2. border: 1px solid #f60;
  3. }

运行结果如图 2‑23 所示:

图2-23 获得焦点状态

E:checked

E:checked伪类选择器选择表单中被选中的 radio 或 checkbox 元素。假设在注册用户的页面上,有一个复选框和同意注册的文本:

  1. <input type="checkbox" value="1" /><label> 我已经阅读并同意网站注册条款</label>

以下规则为选中的单选按钮或复选框紧邻的 label 元素添加样式:

  1. input:checked + label {
  2. color: green;
  3. }

当用户选中复选框后,紧邻复选框的 label 元素中的文本将变成绿色。运行结果如图 2‑24 所示:

图2-24 复选框选中状态

E:enabled/E:disenabled

E:enabled伪类选择器选择处于可用状态的元素,E:disenabled伪类选择器选择处于不可用状态的元素。假设页面上有两个元素,一个可用,一个不可用:

  1. <label> enabled: </label><input type="text" />
  2. <label>disabled: </label><input type="text" disabled />

就可以针对元素的可用、不可用状态,应用不同的样式。如,对不可用的元素,可以禁用鼠标,并设置灰色背景和边框:

  1. input[type="text"] {
  2. width: 200px;
  3. height: 20px;
  4. background: #fff;
  5. border: 1px solid #cbcbcb;
  6. }
  7. input[type="text"]:disabled {
  8. cursor: not-allowed;
  9. background: #eee;
  10. border-color: #ddd;
  11. }

运行结果如图 2‑25 所示:

图2-25 可用、不可用状态

如果一个表单元素经常在可用和不可用状态之间进行切换,通常将这两个选择器结合使用,来改变元素的样式,增加表单的易用性。

E:valid/E:invalid

E:valid 伪类选择器选择输入数据有效的元素,E:invalid 伪类选择器选择输入数据无效的元素。如,对于获得焦点的 email 输入框,就可以根据用户的输入是否为有效的邮箱地址,来应用不同的样式:

  1. <label>E-Mail: </label><input type="email" name="email" />

此时,就可以根据用户的输入,来应用不同的样式。如果输入有效的邮箱地址,文本框的边框颜色为绿色,如果输入无效的邮箱地址,文本框的边框颜色为红色:

  1. input[type="email"]:focus:valid {
  2. border: 1px solid green;
  3. }
  4. input[type="email"]:focus:invalid {
  5. border: 1px solid red;
  6. }

这样的话,在页面初始加载时,由于用户还没有进行输入,邮箱邮箱地址一定是非法值,文本框就会显示红色警示边框。运行结果如图 2‑26 所示:

图2-26 输入非法的邮箱地址

随着用户不断输入,当邮箱地址合法的时候,文本框就会由红色边框,自动变成安全的绿色边框。运行结果如图 2‑27 所示:

图2-27 输入合法的邮箱地址

E:in-range/E:out-of-range

E:in-range伪类选择器选择输入数据在有效范围的元素,E:out-of-range伪类选择器选择输入数据超出有效范围的元素。如,对于 input 类型为 number 的文本输入框,其输入的值必须在 min 和 max 的范围内。

  1. <label>请输入数字(0~10): </label><input type="number" min=0 max=10 />

此时,就可以根据用户的输入,来应用不同的样式。如果输入的数值未超出范围,文本框的边框颜色为绿色,一旦输入的数值超出范围,文本框的边框颜色就变为红色:

  1. input[type="number"]:focus:in-range {
  2. border: 1px solid green;
  3. }
  4. input[type="number"]:focus:out-of-range {
  5. border: 1px solid red;
  6. }

这样的话,在用户输入数值的过程中,当输入的数值在有效范围内,文本框就是安全的绿色边框。运行结果如图 2‑28 所示:

图2-28 输入合法的数值

随着用户的不断输入,当输入的数值超出有效范围时,文本框就会由安全的绿色边框,自动变成红色警示边框。运行结果如图 2‑29 所示:

图2-29 输入非法的数值

关于作者

歪脖先生,十五年以上软件开发经验,酷爱Web开发,精通 HTML、CSS、JavaScript、jQuery、JSON、Python、Less、Bootstrap等,著有《HTML宝典》、《揭秘CSS》、《Less简明教程》、《JSON教程》、《Bootstrap2用户指南》、《Bootstrap3实用教程》,并全部在 GitHub 上开源。

CSS UI状态伪类选择器相关推荐

  1. CSS鼠标动作的五种状态[伪类选择器]

    CSS鼠标动作的五种状态[伪类选择器] 注意事项 设置的样式失效的情况 直接跳过就行了 别纠结 如果发现鼠标互动没反应 你要检查一下 css定义超链接是要有先后顺序的.否则,可能会出现某个或某几个样式 ...

  2. 【第四篇】CSS选择器之伪类选择器

    利用组合选择器虽然可以选择子类和兄弟元素,但是无法做到特殊的选择.例如无法选择第几个子类,或者和其同标签的兄弟元素.为此CSS诞生了伪类选择器,用来进行更加灵活的元素选择. 伪类选择器 伪类选择器根据 ...

  3. 第一章:第三课 选择器-状态伪类选择器[四]

    前三节我们学习了form元素的状态伪类选择器,今天我们再来学习一下复选框和单选框的选择器,以下选择器Opera支持最好! :default选择器.:checked选择器和:indeterminate选 ...

  4. 前端 CSS:锚伪类选择器:hover,:active,:visited;等用法总结

    前端 CSS:锚伪类选择器:hover,:active,:visited;等用法总结 锚伪类选择器:hover,:active,:visited;等用法总结 一.什么是锚伪类 在支持 CSS 的浏览器 ...

  5. CSS :before :after 伪类选择器

    CSS :before :after 伪类选择器 所有主流浏览器都支持 :after 选择器. 注释:对于 IE8 及更早版本中的 :after,必须声明 <!DOCTYPE>. :bef ...

  6. css中的伪类选择器有哪些

    1 伪类选择器 ① 动态伪类选择器(5个) :link 选择地址没有被访问过的超链接元素 :visited 选择地址被访问过的超链接元素 :hover 选择鼠标悬停在上面的元素. :active 选择 ...

  7. 【CSS 教程系列第 12 篇】什么是 CSS 中的伪类选择器

    这是[CSS 教程系列第 12 篇],如果觉得有用的话,欢迎关注专栏. CSS 的选择器有很多,常用的有 元素选择器.id 选择器.class 选择器.后代选择器.子代选择器.并集选择器.交集选择器. ...

  8. CSS定位+装饰+伪类选择器拓展

    文章目录 CSS定位 定位能解决的解决问题: 定位的使用 静态定位 相对定位 绝对定位 绝对定位特点 子绝父相 子绝父相vs子绝父绝 子绝父相案例 子绝父相水平居中案例 子绝父相水平垂直都居中案例 导 ...

  9. HTML与CSS基础之伪类选择器(三)

    <!DOCTYPE html> <html><head><meta charset="UTF-8"><title>伪类选 ...

最新文章

  1. 对程序错误的处理——Windows核心编程学习手札之一
  2. 【探索PowerShell 】【六】脚本基础简要
  3. JAVA 串口编程 (一)
  4. 超级计算机清华,从清华到华科 名校为何主办超级计算机大赛?
  5. 在Linux上将视频转换成动态gif图片 (附:ffmpeg和ImageMagick安装方法)
  6. node.js JavaScript 严格模式
  7. Php数组面包屑导航,thinkphp实现面包屑导航(当前位置)例子分享
  8. mysql查询耗时_一种数据库高耗时查询的自动取消方法与流程
  9. 如何编写杂项设备驱动
  10. 1 linux网络诊断命令工具
  11. SAP FICO模块
  12. 江西财经大学计算机类含物联网专业,江西财经大学计算机类(02含物联网工程)专业2016年在湖北理科高考录取最低分数线...
  13. Ultra Fractal(分形艺术软件)官方正式版V6.04 | 含ultra fractal教程 | 最新ultra fractal下载
  14. 研究生学习生活日记——slow down
  15. 九月十月百度人搜,阿里巴巴,腾讯华为小米搜狗笔试面试八十题
  16. OSChina 周日乱弹 —— 十大人艰不拆的网络真相!
  17. virtualbox安装mac os x雪豹
  18. window.print();去除页眉页脚及网址。
  19. CSDN【精品专栏】第28期
  20. 体验管理,猪飞不起来的风口

热门文章

  1. Hibernate 原汁原味的四种抓取策略(转)
  2. [书目20170308]卓有成效的管理者
  3. java 将list按指定大小等分,最后多余的单独一份
  4. 手机浏览器中屏蔽img的系统右键菜单context menu
  5. Qt下libusb-win32的使用(一)打印设备描述符
  6. 最重要的 Java EE 最佳实践
  7. 部署Vista需要了解的十大事项
  8. 操作系统(15)-Linux的用户权限
  9. mysql5.1修改登陆密码_mysql 5.1版本 修改密码,及远程登录mysql数据库
  10. springSecurity 登录以及用户账号密码解析原理