【CSS 选择器世界】 :focus-within 实现无障碍访问的输入框

简介: focus-within 实现无障碍访问的输入框

前言


整体聚焦伪类 :focus-within 非常实用,且兼容性不错,目前已经可以在实际项目中实用,包括移动端项目和无须兼容 IE 浏览器的桌面端项目。


0.webp.jpg


正文


一、 :focus-within 和 :focus 伪类的区别

CSS:focus-within 伪类和 :focus 伪类的有很多相似之处,那就是伪类样式的匹配离不开元素聚焦行为的触发。区别在于 :focus 伪类样式只有当前元素处于聚焦状态的时候才匹配,而 :focus-within 伪类样式在当前元素或者是当前元素的任意子元素处于聚焦状态的时候都会匹配。

举个例子:


form:focus {
  outline: solid;
}


表示当  处于聚焦状态的时候, 元素的 outline(轮廓)才会出现。


form:focus-within {
  outline: solid;
}


表示  元素自身,或者  内部的任意子元素处于聚焦状态时, 元素的 outline (轮廓)都会出现。换句话说,子元素聚焦,可以让父级元素的样式发生变化。


这是 CSS 选择器世界中很了不起的革新,因为 :focus-within 伪类的行为本质上是一种“父选择器”行为,子元素的状态会影响父元素的样式。由于这种“父选择器”行为需要借助用户的行为触发,属于“后渲染”,不会与现有的渲染机制相互冲突,因此浏览器在规范出现后不久就快速支持了。


二、实现无障碍访问的输入框


:focus-within 伪类非常实用,一方面它可以用在表单控件元素上(无论是样式自定义还是交互布局)。例如输入框聚焦时高亮显示前面的描述文字,我们可以不用把描述文字放在输入框的后面,正常的 DOM 顺序即可:


<!-- html 代码 -->
<div className={"cs-normal"}>
  <label className={"cs-label"}>用户名:</label><input className={'cs-input'}/>
</div>


//css 代码
.cs-normal:focus-within .cs-label {
  color: darkblue;
  text-shadow: 0 0 1px;
}


1.webp.jpg

输入框聚焦前


2.webp.jpg

输入框聚焦后

目录
相关文章
|
2月前
|
前端开发
CSS:高级选择器
CSS:高级选择器
38 1
|
2月前
|
前端开发 JavaScript
CSS:基础选择器
CSS:基础选择器
47 1
|
21天前
|
前端开发 JavaScript UED
深入理解与应用 CSS 伪类选择器
【10月更文挑战第23天】通过以上对 CSS 伪类选择器的深入探讨,我们可以更好地理解和应用它们,为网页设计和开发带来更丰富、更灵活的样式效果。同时,要注意在实际应用中根据具体情况合理选择和使用伪类选择器,以达到最佳的设计效果和用户体验。
30 2
|
2月前
|
前端开发 JavaScript 容器
谁动了我的选择器?深入理解CSS选择器优先级
该文章详细解释了CSS选择器的工作原理,包括不同种类选择器的权重计算规则,并通过实例说明了如何解决样式冲突问题,确保所需的样式能够正确应用到目标元素上。
|
2月前
|
前端开发
前端基础(四)_CSS层叠样式表_什么是css_css样式的引入方式_样式表的优先级_样式选择器
本文详细介绍了CSS(层叠样式表)的基本概念、语法规则、引入方式、样式表的优先级和样式选择器。文章解释了CSS的作用,展示了如何在HTML中通过行内样式、内部样式和外部样式引入CSS,讨论了不同CSS选择器的优先级和如何确定最终的样式应用。此外,还强调了使用`!important`规则时的优先级高于行内样式。
85 1
|
1月前
|
前端开发
CSS常见的选择器
CSS常见的选择器
18 0
|
2月前
|
前端开发 JavaScript
【CSS】选择器
【CSS】选择器
|
3月前
|
前端开发
CSS3选择器
【8月更文挑战第23天】CSS3选择器。
32 1
|
3月前
|
前端开发
CSS中的层级选择器&伪类选择器和伪元素选择器
CSS中的层级选择器&伪类选择器和伪元素选择器
|
3月前
|
前端开发
解锁CSS神秘面纱:深度剖析类选择器,掌握前端设计的绝密武器!
解锁CSS神秘面纱:深度剖析类选择器,掌握前端设计的绝密武器!