CSS实现粒子动态按钮效果

2020-05-16 07:10:49易采站长站整理


.myclass {
background: background1, background2, /*...*/ backgroundN;
}

这里我们可以采用径向渐变

radial-gradient
来实现多个小圆点。


.button::before{
position: absolute;
content: '';
left: -2em;
right: -2em;
top: -2em;
bottom: -2em;
pointer-events: none;
background-repeat: no-repeat;
background-image: radial-gradient(circle, #ff0081 20%, transparent 0),
radial-gradient(circle, #ff0081 20%, transparent 0),
radial-gradient(circle, #ff0081 20%, transparent 0),
radial-gradient(circle, #ff0081 20%, transparent 0),
...;
background-size: 10% 10%, 20% 20%, 15% 15%,...;
background-position: 18% 40%, 20% 31%, 30% 30%,...;
}

这里主要通过

background-size
background-position
来控制原点的尺寸与位置,看着好像挺复杂,其实只要
background-size
background-position
background-image
位置一一对应就行了。实际开发中可能有点难调试,可以直接在控制台中通过键盘上下左右键微调实时预览效果(可以考虑做一个可视化工具)。

这样就做出了一个简单的粒子效果。

动起来

虽然

background-image
不支持
CSS
动画,但是另外两个
background-size
background-position
支持呀,所以,
CSS transition
CSS animation
都可以用起来。

动画效果很简单,就是粒子从中心往外扩散,并且逐渐消失的过程。

transition

我们先看看

:hover
交互


.button::before{
transition:.75s background-position ease-in-out,75s background-size ease-in-out;
}
.button:hover::before{
background-position: 5% 44%, -5% 20%, 7% 5%...;
background-size: 0% 0%;
}

当然直接这样设置肯定是不理想,鼠标离开时会收缩回去,效果如下

我们需要是鼠标离开时不收缩回去,如何实现呢?

很简单,把

transition
设置在
:hover
下就可以了,表示只有当鼠标经过时才有过渡,离开时没有