这篇文章将为大家详细讲解有关CSS实现粒子动态按钮效果的示例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
按钮(按钮)可能是网页中最常见的组件之一了,大部分都平淡无奇,如果你碰到的是一个这样的按钮,会不会忍不住多点几次呢?
通常这类效果第一反应可能就是借助画布<代码> 代码>了,比如下面这个案例
效果就更加震撼了,当然画布<代码> 代码>实现也有一定的门槛,而且实际使用起来也略微麻烦(所有<代码> js代码>实现的通病),这里尝试一下<代码> CSS> 代码的实现方式。
<强>生成粒子强>
抛开<代码> js代码>方案,还有<代码> 代码> HTML和CSS <代码> 代码>实现方式。<代码> HTML> 代码就不用说了,直接写上大量的标签
& lt; button> ,,,按钮 ,,,& lt; i> & lt;/i> ,,,& lt; i> & lt;/i> ,,,& lt; i> & lt;/i> ,,,& lt; i> & lt;/i> ,,,& lt; i> & lt;/i> ,,,… & lt;/button>
一般情况下我不是很喜欢这种方式,标签太多,结构不美观,而且有可能对现有的页面造成其他影响(很多情况下并不方便修改原始<代码> HTML 代码>结构)
那么来看看<代码> CSS代码>实现方式,主要也是两种方式,其实就是想一下有哪些属性可以无限叠加,一个是<代码>不必> 代码,还有一个是<代码>背景图像> 代码(CSS3支持无限叠加)。
<强> 1。不必强>
我们先看看<代码>不必代码>方式,为了避免使用额外标签,这里采用伪元素生成。
.button::{之前 位置:才能,绝对; ,,内容:& # 39;& # 39;; ,,宽度:5 px; ,,身高:5 px; ,,这个特性:50%; ,,背景颜色:# ff0081; ,,不必:10 px 10 px # ff0081, 15 px 0 px 0, 2 px # ff0081, 20 px 15 px 0, 3 px # ff0081,……;/*无限叠加*/}
效果还是有的,主要就是多花点时间来调试,这里主要根据偏移量和扩展来决定粒子的位置和大小。
不过这里的偏移量只能是<代码> px 代码>单位,无法很好的自适应按钮的大小,所以这里采用第二种方式来实现
2。背景图片
CSS3中<代码>背景图像> 代码是可以无限叠加的,类似于
.myclass { 背景:,background1,才能,background2,,/*…*/, backgroundN; }
这里我们可以采用径向渐变<代码>径向渐变> 代码来实现多个小圆点。
.button::{之前 位置:才能,绝对; ,,内容:& # 39;& # 39;; ,,左:2 em; ,,右:2 em; ,,:2 em; 底才能:2 em; pointer-events才能:没有; 平铺方式:,才能不再重演; ,,背景图片:径向渐变(圆,,# ff0081 20%, transparent 0),, 径向渐变才能(圆,,# ff0081 20%, transparent 0), 径向渐变才能(圆,,# ff0081 20%, transparent 0),, 径向渐变才能(圆,,# ff0081 20%, transparent 0),, ,,……; ,,background-size: 10%, 10%, 20%, 20%, 15%, 15%,…; ,,背景位置:18%,40%,20%,31%,30%,30%,…; }
这里主要通过<代码> background-size 代码>和<代码>背景位置> 代码来控制原点的尺寸与位置,看着好像挺复杂,其实只要<代码> background-size 代码>和<代码>背景位置代码>与<代码>背景图像> 代码位置一一对应就行了。实际开发中可能有点难调试,可以直接在控制台中通过键盘上下左右键微调实时预览效果(可以考虑做一个可视化工具)。
这样就做出了一个简单的粒子效果。
动起来
虽然<代码>背景图像> 代码不支持<代码> CSS代码>动画,但是另外两个<代码> background-size 代码>和<代码>背景位置代码>支持呀,所以,CSS转换<代码> 代码>和<代码> CSS动画> 代码都可以用起来。
动画效果很简单,就是粒子从中心往外扩散,并且逐渐消失的过程。
我过渡们先看看<代码>:代码>徘徊交互
.button::{之前 过渡:才能.75s background-position  ease-in-out, 75 s background-size ease-in-out; } {前.button:徘徊:: ,,背景位置:5%,44%,-5%,20%,7%,5%……; ,,background-size: 0%, 0%; }CSS实现粒子动态按钮效果的示例