网站首页 > 技术文章 正文
下面看看这些选择器是如何应用的:
一、active
对于:active
这个选择器,MDN上是这样定义的:
:active
CSS伪类匹配被用户激活的元素。它让页面能在浏览器监测到激活时给出反馈。当用鼠标交互时,它代表的是用户按下按键和松开按键之间的时间。
现在我们知道了,通过这个属性,可以获得一个元素上,鼠标左键按下/松开两个状态
button { /* 鼠标松开 */}button:active { /* 鼠标按下 */} 那么,拿到了这个状态后,你就不想做点什么吗?
应用场景
简单应用
最简单的应用呢,就是在Button按下时改变一些样式,在视觉上给用户一些反馈,比如这样
button { background-color: rgb(77, 181, 255, 0); }button:active { background-color: rgb(77, 181, 255, 1); color: #fff; }
如果觉得动画太生硬,还可以使用 transition 来过渡,使动画看起来更加‘顺滑’
效果如下:
变颜色这种最基础的操作,肯定是无法满足大家滴,我们可以玩的花一点,比如给他定义一个animation
button:active { animation: shake 0.1s ease infinite; }
效果如图(依旧是录制帧数过低):
再多想一下
以上的两个例子,都是在两个状态之间切换,说白了只是改个样式,并没有很强的交互性,我们就只能做到这种程度吗?
二、emmmmm.....??
在等外卖的无聊时间里,我骚动不已的心终于蹦出来了一个想法!我们可以自己定义动画,就意味着多掌握了一项关键属性,那就是时间,现在我有了按下、松开和时间三个要素,我可以做一个计时的操作啊
效果没有,图片太大了,下面有源码~~
这个demo做的呢,是在按钮被按住2s后发起一个操作,不到2s松开就会取消
这里光用css肯定不行的啦,我加了一点点js进来,这里用到了animationend这个事件
document.getElementById('ring').addEventListener('animationend', function () { alert('结束啦') }, false)
对的,只是用js写的alert,动画部分还是纯css实现的,代码有点长,就不放这里了,有兴趣的同学可以戳‘阅读原文’自取, 这里只谈一下思路
注意事项
1.active和:hover这两个状态会同时活动,所以如果你在同一个元素上定义了这两个状态的话,请注意一下css的书写顺序
2.在button元素上,:active生效的同时,会出发:focus状态,需要先重置浏览器的默认:focus样式
三、checked
TODO
简单应用 => 开灯/关灯效果
深入联想 => 评分组件
+ 和 ~ 这两个选择器
TODO
上面的例子中都用用到,简单介绍下概念就好了,主要用来扩大css选择器的控制范围,实现更复杂的效果
猜你喜欢
- 2024-10-24 初探animation中steps()属性(animation steps属性)
- 2024-10-24 HTML5(九)——超强的 SVG 动画(htmlsvg动画代码)
- 2024-10-24 自定义日历(二)(自定义日历控件)
- 2024-10-24 Flutter简单动画Animation运用(flutter 视频教程)
- 2024-10-24 css3中动画animation中的steps()函数
- 2024-10-24 移动端渲染原理浅析(移动端渲染原理浅析设计)
- 2024-10-24 iOS 事件处理机制与图像渲染过程(简述ios中的事件响应机制)
- 2024-10-24 Android 开机问题分析(android无法开机)
- 2024-10-24 GoogleCTF + zer0ptsCTF + ImaginaryCTF 2023 笔记
- 2024-10-24 决战“金三银四”,中高级Web前端大厂面试秘籍:CSS篇
- 1507℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 506℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 486℃MySQL service启动脚本浅析(r12笔记第59天)
- 466℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 464℃启用MySQL查询缓存(mysql8.0查询缓存)
- 444℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 423℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 419℃MySQL server PID file could not be found!失败
- 最近发表
-
- netty系列之:搭建HTTP上传文件服务器
- 让deepseek教我将deepseek接入word
- 前端大文件分片上传断点续传(前端大文件分片上传断点续传怎么操作)
- POST 为什么会发送两次请求?(post+为什么会发送两次请求?怎么回答)
- Jmeter之HTTP请求与响应(jmeter运行http请求没反应)
- WAF-Bypass之SQL注入绕过思路总结
- 用户疯狂点击上传按钮,如何确保只有一个上传任务在执行?
- 二 计算机网络 前端学习 物理层 链路层 网络层 传输层 应用层 HTTP
- HTTP请求的完全过程(http请求的基本过程)
- dart系列之:浏览器中的舞者,用dart发送HTTP请求
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)