27个常见的CSS3进阶案例【附demo】
原文:juejin.im/post/5e070cd9f265da33f8653f0
关注公众号 前端人,回复“加群”
添加无广告优质学习群
前言
1、交错动画
![](https://filescdn.proginn.com/c59cbc3f892977154aa30f6e4aa3abbf/ee84163ac17d57d6a735a050f40197ca.webp)
delay
)这一属性。![](https://filescdn.proginn.com/2e3e567803f2b1a9a8c4fee6e62ea0db/194d7c4a89eda158eabe2f4f40c65791.webp)
2、用JS分割文本
![](https://filescdn.proginn.com/397f92271c0c1fc40b7a5f396d4eac41/1f50a7eeadafa9423cc3a8cfefc37294.webp)
delay + Math.abs(i - middle) * step
,其中中间元素的下标 middle = letters.filter(e => e !== "").length / 2
![](https://filescdn.proginn.com/5fb35e2db23abdc267a9e9d152b06d1e/9f71844a12da5633d3b3c638a5021f1c.webp)
3、随机粒子动画
![](https://filescdn.proginn.com/832e0c10d4a1d8f11d58763f3cc1a6f4/bf023bda9b9d7aec9fc0dec250af33ed.webp)
伪类和伪元素
4、伪类
![](https://filescdn.proginn.com/a134b636f89990cceec206d745cdd6fd/d4467be554987d5a4ce4747527e958d8.webp)
:hover
来选中这一状态的按钮,并对其样式进行改变。:hover
是笔者最最常用的一个伪类。还有一个很常用的伪类是:nth-child
,用于选中元素的某一个子元素。其他的类似:focus
、:focus-within
等也有一定的使用。5、绝对定位实现多重边框
padding
,我们可以给按钮做出3套大小不一的边框来,这样效果更炫了。![](https://filescdn.proginn.com/c03241f9cef95c14773a3e3f549a5941/20986c2fb5729e2c77de125f2be874d9.webp)
6、伪元素
![](https://filescdn.proginn.com/3667e4b91d440485b61c79c876b8c9f5/d53a3b66387839be5cf1c898a6ec0412.webp)
::before
和::after
这两个伪元素,也就是说每个元素都提供了3个矩形(元素本身1个,伪元素2个)来供我们进行形状的绘制。现在又有了clip-path
这个属性,几乎任意的形状都可以被绘制出来,全凭你的想象力7、attr()生成文本内容
data-*
attr()
用于获取元素的这种自定义属性值,并赋值给其伪元素的content
作为其生成的内容![](https://filescdn.proginn.com/87963e6db0533419491427cd3519ee52/b0e8f11d521048a9faed81511cd281d3.webp)
overflow: hidden
,把多余的文本遮住。通过JS分割文本并应用交错动画,就得到了如下的效果,这也是接下来本文要讲的overflow
障眼法。![](https://filescdn.proginn.com/8975b91f28b0c6bdb5344f3ade08e2ed/7f9e26fdcd5c99a3bbe698c58c4c417b.webp)
8、overflow障眼法
transform: translateX()
将其平移至右边。![](https://filescdn.proginn.com/3b37765fec122e05cb212076b32e10ea/72bf334d0572bd0a05350737c359be8a.webp)
overflow: hidden
,光在按钮外的位置时就被隐藏起来了。![](https://filescdn.proginn.com/be54ac543f26fd46d53a42117fd42b67/280930760c5ecdbb01be832fd338c65e.webp)
9、兄弟选择符定制表单元素
input
作为label
的子元素,这样用户点击label
时就能传到input
上input
太丑怎么办?那就把它先抹掉,用appearance: none
或opacity: 0
都可以~
来定制和input
相邻的所有元素(+
号也行,只不过只能选中最近的元素),例如可以用伪元素生成一个新的方框代替原先的input
,利用伪类:checked
和动画来表示它被勾选后的状态,本质上还是障眼法哦~![](https://filescdn.proginn.com/87311c74d71b8b469cf6b79520b1e16c/9c997f9d08d3d67c3853bae02a4b6fc2.webp)
CSS特性
10、animation
transition
和transform
11、border-radius
50%
则是圆形,也很常用不规则的曲边形状
border-radius
可以做出不规则的曲边形状![](https://filescdn.proginn.com/dbda6e080d39e27cecdc1ad1d3fbb9e3/a3d72628b259e8b9304eafacf8550704.webp)
12、box-shadow
![](https://filescdn.proginn.com/b6404cd36357d5cdab8009fc1219a82f/a87f323d024658206c84ecd7aaf6580c.webp)
13、遮罩
box-shadow
的扩张半径设定足够大的值,可以用它来遮住背景,而无需额外的div元素![](https://filescdn.proginn.com/cf296c79a00bc03a4f455ce44830512d/658bbd972882269c9158f5c4a4fc5ae3.webp)
14、内发光
box-shadow
还有个inset
,用于盒子内部发光![](https://filescdn.proginn.com/2a15142690fa24c9d5100288216ba9d0/1e339a55bdb462d3763b3c7fb60382d4.webp)
![](https://filescdn.proginn.com/de455f33beb5aa4085197530b66d0543/db9305cb4e147b0cc8210fab318552fe.webp)
text-shadow
box-shadow
相同,只不过是相对于文本而言,常用于文本发光,也可通过多层叠加来制作霓虹文本和伪3D文本等效果15、发光文本
![](https://filescdn.proginn.com/e8504a21c940275fc9e8178ec9b973dd/eda36e946e6f831dc345096ef2f59a23.webp)
16、霓虹文本
![](https://filescdn.proginn.com/81dc94999eba9e0b6bb1557c8c8aeb7b/7c0d00d6c08a98fcd7b6596cea2bd757.webp)
17、伪3D文本
![](https://filescdn.proginn.com/5120b5a84c3fd89523cf309a72844fce/2c559729b861be897a6a4eb5f545e4a2.webp)
18、background-clip:text
color: transparent
配合生成渐变文本![](https://filescdn.proginn.com/a1fea38a2b808593c40ceb4f29436de8/6ce99f67267f2c4d1a30eb4742a70608.webp)
gradient
19、linear-gradient
![](https://filescdn.proginn.com/b83d8d0b5a4393b32f7629dff1ce4b33/cc72e71b130b0c35f4d3f901ab0147ca.webp)
dialog
标签,渐变背景,动画以及overflow
障眼法,细心的你看出来了吗:)20、radial-gradient
div
元素。![](https://filescdn.proginn.com/6be3961ec0f8b5262454e15bdd85cd02/e98a29de6c18839fb2ea5f6d2a6632ad.webp)
21、conic-gradient
![](https://filescdn.proginn.com/bdf42484fbbfb400ccf2e756cc80bf86/6ab27ad6b47106d2591a4ee7e1bf67a3.webp)
content
设为某个值(这个值通过CSS变量计算出来),就能制作出度量计的效果,障眼法又一次完成了它的使命。![](https://filescdn.proginn.com/63a2e5a7c769d9293cdfc266344104ce/9f49ce3d041943dff7debf96067bf474.webp)
filter
blur
最常用22、backdrop-filter
![](https://filescdn.proginn.com/cf0c88e8e540146ae0c8482af991fe5b/3799bd849358997b469f9ef752714878.webp)
23、mix-blend-mode
screen
)实现文本视频蒙版效果![](https://filescdn.proginn.com/7d0c91b323ea5839c0efa5b944a9a873/9704bb1989806356291d056169b7569e.webp)
24、clip-path
![](https://filescdn.proginn.com/9b9a426d4713c7436d1bc6b1de083bce/e367a35ff86e62b04c0e44e000acdb36.webp)
25、-webkit-box-reflect
![](https://filescdn.proginn.com/400ba7ec5c79b6c2c94c55352ec703f8/afeca58ad3348bd253cdb3196362edf3.webp)
26、web animations
跟踪鼠标的位置
e.clientX
和e.clientY
来获得鼠标当前的位置mouseenter
和mouseleave
事件,来获取鼠标出入一个元素时的位置,并用此坐标来当作鼠标的位移距离,监听mousemove
事件,来获取鼠标在元素上移动时的位置,同样地用此坐标来当作鼠标的位移距离,这样一个跟踪鼠标的效果就实现了。![](https://filescdn.proginn.com/90560ac496abb0d75876f522a842d72f/82867037b79fcf60220eda301265c4b3.webp)
CSS Houdini
让渐变动起来
CSS.registerProperty()
来注册我们的自定义变量,并声明其语法类型(syntax
)为颜色类型<color>
,这样浏览器就能理解并对颜色应用插值方法来进行动画conic-gradient()
吗?既然它可以用来制作饼图,那么我们能不能让饼图动起来呢?答案是肯定的,定义三个变量:--color1
、--color2
和--pos
,其中--pos
的语法类型为长度百分比<length-percentage>
,将其从0
变为100%
,饼图就会顺时针旋转出现。![](https://filescdn.proginn.com/f61a0860155c34d3e1a58ad4bed90605/c9568bb998c71f9676f37dbda254a84e.webp)
![](https://filescdn.proginn.com/6f7d1febcfcede31c2bc0a03ab2c0481/bf6021ff7e6f18bd66ca628fbed4b541.webp)
27、彩蛋![](https://filescdn.proginn.com/0f8e41074e1d91e3b6a4c8290aeca1a1/d376032a810d8f38e529ffe759d7d2f7.webp)
回复 资料包
领取我整理的进阶资料包回复 加群
,加入前端进阶群console.log("文章点赞===文章点在看===你我都快乐")
Bug离我更远了,下班离我更近了
评论