怎么实现hover_我写CSS的常用套路 (附demo的效果实现与源码)

本文介绍了如何使用CSS实现hover效果,包括用JS分割文本、随机粒子动画、伪类和伪元素的应用,如多重边框、自定义表单元素。此外,还探讨了CSS的各种高级特性,如animation、border-radius、gradient、filter和Houdini等,创造出各种视觉效果。
摘要由CSDN通过智能技术生成

9d1a32c3ed33ae812298737bab1edfb0.png

前端媛猿

读完需要

8 分钟

速读仅需 5 分钟

eb2b216dc97b682c64950531438c112a.gif

26b2310829889b3d3b0a584c08feff5f.png

作者:alphardex

https://juejin.im/post/5e070cd9f265da33f8653f0

前言

本文是笔者写CSS时常用的套路。不论效果再怎么华丽,万变不离其宗。

1、交错动画

5a57fe745a1727849323e0f648c64af7.gif 有时候,我们需要给多个元素添加同一个动画,播放后,不难发现它们会一起运动,一起结束,这样就会显得很平淡无奇。 那么如何将动画变得稍微有趣一点呢?很简单,既然它们都是同一时刻开始运动的,那么让它们不在同一时刻运动不就可以了吗。如何让它们不在同一时刻运动呢?注意到CSS动画有延迟( delay )这一属性。 举个栗子,比如有十个元素播放十个动画,将第二个元素的动画播放时间设定为比第一个元素晚0.5秒(也就是将延迟设为0.5秒),其他元素以此类推,这样它们就会错开来,形成一种独特的视觉效果。 8a2d7d63de7df6c7d2cb100378980640.gif 这就是所谓的交错动画:通过设置不同的延迟时间,达到动画交错播放的效果。 本demo地址: https://codepen.io/alphardex/pen/XWWWBmQ

2、用JS分割文本

还有一种经常用到的玩法:用JS将句子或单词分割成字母,并给每个字母加上不同延时的动画,同样也很华丽。 1961aef2519f54fe167734d62ac193a4.gif 本demo地址: https://codepen.io/alphardex/full/KKwvKGY 一般我们都是从第一个元素开始交错的。但如果要从中间元素开始交错的话,就要给当前元素的延时各加上一个值,这个值就是中间元素的下标到当前元素的下标的距离(也就是下标之差的绝对值)与步长的乘积,即: delay + Math.abs(i - middle) * step ,其中中间元素的下标 middle = letters.filter(e => e !== "").length / 2 696658953883daa7ee5f12a2f525e137.gif 本demo地址: https://codepen.io/alphardex/full/eYYMYXJ 所有有交错特性的动画都在这儿

3、随机粒子动画

说到随机性,我们可以实现一种更疯狂的效果:给几百个粒子添加交错动画,并且交错时间随机,位置大小也都是随机。如此一来我们就能用纯CSS模拟出下雪的效果。 又到了白色相簿的季节呢~为什么你写CSS这么熟练啊? bd025cb2a24114e2a00d368f8ee2e3b5.png 本demo地址: https://codepen.io/alphardex/full/dyPorwJ

伪类和伪元素

4、伪类

b9d6c8e8f15751567bd60d48a0adf7a2.gif HTML元素的状态是可以动态变化的。举个栗子,当你的鼠标悬浮到一个按钮上时,按钮就会变成“悬浮”状态,这时我们就可以利用伪类 :hover 来选中这一状态的按钮,并对其样式进行改变。 :hover 是笔者最最常用的一个伪类。还有一个很常用的伪类是 :nth-child ,用于选中元素的某一个子元素。其他的类似 :focus
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值