您现在的位置是:网站首页> 编程资料编程资料
css3的focus-within选择器的使用详解如何使用CSS3中的结构伪类选择器和伪元素选择器CSS3 新增选择器的实例css3 伪类选择器快速复习小结CSS3 :default伪类选择器使用简介css3之UI元素状态伪类选择器实例演示CSS3选择器新增问题的实现
2021-08-29
1710人已围观
简介 这篇文章主要介绍了css3的focus-within选择器的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
伪元素和伪类
说到这个,我们先回顾一下,伪类选择器和伪元素选择器,老版的浏览器没有严格区分下面 2 种写法。
a:after{} a::after{}在新的标准中,单冒号(:)用于 CSS3 伪类,双冒号(::)用于 CSS3 伪元素,我们平时开发时可以注意一下,当然大多数浏览器两种写法都能识别。
常见伪元素和伪类
伪类
:link, :visited, :hover, :active, :focus, :first-child, :last-child, :nth-child, :nth-last-child, :not()
伪类一般用于一个元素的某个状态,比如说鼠标悬浮,按钮点击,链接已经访问,输入框聚焦等,还用于选择某个特殊元素,比如说多个元素中的第一个,最后一个,偶数,奇数等。其作用是对某个符合以上条件的元素添加一些样式。
a:hover{ text-decoration: underline; } a:active { color: blue; } a:link { color: red; } a:visited { color: green; }上面的例子展示了一个a标签在不同状态下的不同样式,在未点击链接之前,a标签呈现红色字体(link),在鼠标移到a标签上是,a标签出现下划线(hover),在鼠标按下的时候,a标签变为蓝色(active),点击完了之后,a标签变为绿色(visited)。可以看到,伪类的作用是为了给不同状态的标签添加样式。
伪元素
::first-letter, ::first-line, ::before, ::after
在内容模块中提到,伪元素如果没有设置“content”属性,伪元素是无用的。使用伪元素插入的内容在页面的源码里是不可见的,只能在 css 里可见。插入的元素在默认情况下是内联元素(或者,在 html5 中,在文本语义的类别里)。因此,为了给插入的元素赋予高度,填充,边距等等,你通常必须显式地定义它是一个块级元素。还要注意的是典型的 CSS 继承规则适用于插入的元素。例如,你有字体系列黑体,宋体,无衬线字体应用到 body 元素里,然后伪元素会像其他元素一样继承这些字体系列。伪元素不会自然继承自父元素(如 padding margins)的样式。你的直觉是 :before 和 :after 伪元素可能是插入的内容会被注入到目标元素的前或后注入。其实不是这样的,注入的内容将是有关联的目标元素的子元素,但它会被置于这个元素的任何内容的“前”或“后”。
Other content.
运行效果:

可以看到,我们html部分只写了一个元素,但是我们利用伪元素渲染出来 3 个部分,前中后,这里我们可以认为,伪元素一般用来辅助html的元素。但在内容页面的源码又看不到,利用伪元素可以实现很多神奇的功能,这里不做具体讲解,后面再出具体教程。
神奇的伪类:focus-within
言归正传,回到我们的主角focus-within,我们知道,伪类focus是指一个元素获得焦点时,为其添加样式。focus-within的范围更广,它表示一个元素获得焦点,或该元素的后代元素获得焦点。划重点,它或它的后代获得焦点。这也就意味着,它或它的后代获得焦点,都可以触发:focus-within。
这个属性有点类似Javascript的事件冒泡,从可获焦元素开始一直冒泡到根元素html,都可以接收触发:focus-within事件,类似下面这个简单的例子这样:
HTML
运行结果:

可以看到,在button获得焦点时,因为冒泡的原因,它的父级元素全部应用了:focus-within的样式。这里值得注意的是,正常的div是不能获得焦点的,设置 tabindex 属性才能获取焦点,同时按键盘 Tab 键也可让其获取焦点,其中 tabindex 的值越小在 tab 键切换的时候就会首先聚焦。根据:focus-within的特性,我们在不利用 js 的情况下,实现很多实用性的功能。
感应用户聚焦区域
利用focus-within可以增加用户的感知区域,让用户获得更好的视觉反馈。

可以看到在没有任何javascript逻辑控制情况下,用focus-within就实现了上面的效果。
实现离屏导航
我们先看一下效果:

可以看到是一个很棒的导航效果,而且真个实现没有使用javascript控制,这无疑在性能和体验上都有不少提升。具体源码可以看下面的地址:地址
实现 B 站,掘金等网站登录动效切换
我们平时可能注意到了,B 站和掘金在用户输入密码的时候,上面的图片是捂着眼睛的,这里我们也可以用focus-within来实现。

登录
可以看到,在不适用js的情况下,也能实现动态切换图片的效果,但是还是有一些局限,dom排列只能是父级向上,不能把元素放在focus元素的子元素里面。所以没有js灵活,但是代码量更少。
focus-within 兼容性
因为 css3 的新增特性一直存在兼容问题,这里查询了一下它的兼容性,看到红色区域还是不算太惨淡,出来 ie,其他浏览器基本都支持了。

所有的源码都可以在我的仓库地址:地址
到此这篇关于css3的focus-within选择器的使用的文章就介绍到这了,更多相关css3的focus-within选择器内容请搜索以前的文章或继续浏览下面的相关文章,希望大家以后多多支持!
相关内容
- 深度理解CSS clear:both的使用CSS——float属性及Clear:both备忘笔记清除浮动clear:both的应用详解-CSS教程-网页制作-网页教学网
- CSS实现元素浮动和清除浮动的方法CSS 清除浮动与BFC的方法css overflow: hidden 的用法(溢出隐藏及清除浮动)Css实现清除浮动的方法汇总什么是BFC? CSS 使用伪元素清除浮动的方法轻松搞懂CSS浮动与清除浮动图文详解css 如何清除浮动的示例代码CSS清楚浮动clear:both的实例代码
- CSS flex-basis 文本溢出问题的解决css多行文本溢出时出现省略号的示例纯CSS定制文本省略的方法大全CSS实现单行、多行文本溢出显示省略号的实现方法css实现文本溢出显示省略号CSS实现限制字数功能当对象内文本溢出时显示省略标记用css截取字符实现文字自动截断隐藏溢出文本css实现li中文本超出行宽自动隐藏兼容IE和FF的单行溢出文本显示省略号-CSS教程-网页制作-网页教学网
- 纯CSS实现数字加减按钮的最佳方案CSS3实现紫色发光按钮悬停特效基于CSS 属性实现按钮悬停边框和背景动画集合CSS实现鼠标移动到图片或按钮上改变大小的方法示例CSS实现菜单按钮动画css 单选按钮图标替换的方法纯css实现Material Design中的水滴动画按钮
- postcss-pxtorem移动端适配的实现吃透移动端 1px的具体用法移动端适配 使px自动转换remHtml5移动端适配IphoneX等机型的方法浅谈移动端适配大法html5实现移动端适配完美写法详解如何使用rem或viewport进行移动端适配
- 详解八种方法实现CSS页面底部固定css实现背景渐变与底部固定的蓝天白云示例div footer标签css实现位于页面底部固定
- 用css完成根据子元素不同书写样式的方法CSS Transition通过改变Height实现展开收起元素从QQtabBar看css命名规范BEM的详细介绍css实现两栏布局,左侧固定宽,右侧自适应的多种方法CSS 实现Chrome标签栏的技巧CSS实现两列布局的N种方法CSS实现隐藏搜索框功能(动画正反向序列)CSS3中Animation实现简单的手指点击动画的示例详解CSS中的特指度和层叠问题详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)关于CSS浮动与取消浮动的问题
- CSS3改变浏览器滚动条样式详解css3自定义滚动条样式写法CSS3自定义滚动条样式的示例代码CSS3自定义滚动条样式 ::webkit-scrollbar的示例代码详解
- 浅谈CSS3 动画卡顿解决方案CSS3实现超慢速移动动画效果非常流畅无卡顿
- 纯CSS3实现漂亮的input输入框动画样式库(Text input love)HTML中利用div+CSS实现简单的箭头图标的代码css 11种方法实现一个tips带有描边的小箭头css实现带箭头和圆点的轮播可自定义箭头样式的CSS3气泡提示框CSS3制作可自定义配置箭头的气泡提示框效果源码基于CSS实现带阴影和小箭头的黑色风格下拉菜单效果CSS实现让同一行文字和输入框对齐的方法利用HTML、CSS 实现带表情的评论框的制作教程CSS实现带箭头的提示框效果【示例代码】



