写在前面
不知道是谁先发现filter:blur和filter:contrast能发生如此奇妙的化学反应的,但这不重要,重要的是你如果学会了这种特效的使用方法,就可以为你的网页添加酷炫的效果! 那么请先看两个小小的demo
demo
怎么做?
仔细看,网页上的元素似乎都有了粘度,当元素靠的足够近时,会发生融合的效果,当元素远离时又会有一种黏住的效果,这又如何完成?
很简单你只需在子元素添加filter:blur(模糊),而在它的父级元素上增加contrast对比度即可
他们看起来就像这样(接下来以一个更简单的demo举例):
代码部分:
<div class="wrapper"> <div class="container"> <div class="box"></div> </div> </div>
.wrapper{ width: 100%; height: 100vh; position: absolute; background-color: #333; filter:contrast(50) } .container { position: absolute; top:50%; left:50%; width: 200px; height: 100px; background-color: #00eeff; filter: blur(10px) ; } .box{ width:25px; height:25px; background-color: #00eeff; border-radius: 50%; position: absolute; left:50%; transition: 1s; filter: blur(1px); animation: move 1s linear infinite; } @keyframes move { 0%{ transform: translateY(0); } 100%{ transform: translateY(-100px); } }
你永远可以把代码copy下来自己尝试!
原理:
在元素都有blur属性的情况下,上为父级无contrast(下文称1图),下为父级有contrast(下文称2图),当元素融合时,发现了吗1图也有融合的效果在里面!只是很不清晰,这都是blur(模糊)带来的,而contrast属性便能很好的对抗模糊,已达到2图的效果。
见下图