使用纯css怎么实现材料设计中按钮的水滴动画效果

  介绍

这篇文章给大家分享的是有关使用纯css怎么实现材料设计中按钮的水滴动画效果的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

大家平时应该经常见到这种特效,很炫酷不是吗

这是谷歌材料设计中最常见的特效了,市面上也有很多现成的js库,用来模拟这一特效。但是往往要引入一大堆js和css,其实在已有的项目中,可能只是想加一个这样的按钮,来增强用户体验,这些js库就显得有些过于庞大了,同时由于是js实现,很多时候还要注意加载问题。

那么,有没有办法用css来实现这一特效呢

思路

其实就是一个动画,一个正圆从小变大,用<代码> css3>

示例代码

@keyframes涟漪{   从{   变换:规模(0);   透明度:1;   }   , {   变换:规模(1);   透明度:0;   }   }

通常用<代码> js代码来实现的方式很简单,就是给点击元素添加一个<代码>类>

示例代码

的var btn=. getelementbyid (& # 39; btn # 39;);   btn.addeventlistener(& # 39;点击# 39;,函数(){   addClass (btn & # 39;动画# 39;)   },假)   btn.addeventlistener (& # 39; transitionend& # 39;,函数(){//监听css3动画结束   removeClass (btn & # 39;动画# 39;)   },false)

那么如何通过css来实现动画的触发呢?

css实现

<代码> css代码中与鼠标交互的伪类主要有

<李>

<代码> 徘徊鼠标经过

<李>

<代码>:活跃的鼠标按下

<李>

<代码>:焦点鼠标聚焦

<李>

<代码>:检查鼠标选中

很多情况下,我们页面中的效果都是通过<代码> 徘徊来实现的,鼠标放上去触发一个效果,离开还原,但是如果放上去马上离开,那么动画也会马上结束。

我们先试一下。

结构

这是我们写好的页面结构和样式

& lt; style>   .btn {   显示:块;   宽度:300 px;   大纲:0;   溢出:隐藏;   位置:相对;   过渡:3;   光标:指针;   用户选择:没有;   身高:100 px;   text-align:中心;   行高:100 px;   字体大小:50 px;   背景:番茄;   颜色:# fff;   border - radius: 10 px;   }   & lt;/style>   & lt;一个类=癰tn"祝辞button

很简单,就是一个普通的按钮样式

下面我们在按钮中添加我们需要的正圆。

我们用伪元素来实现

.btn:{后   内容:& # 39;& # 39;;   位置:绝对的;   宽度:100%;   padding-top: 100%;   背景:透明;   这个特性:50%;   左:50%;   上图:50%;   变换:翻译(-50%,-50%)   }

我们把上面的溢出:去隐藏掉,把这个圆缩小一点看看效果

然后,我们写个缩放的动画

@keyframes涟漪{   从{   变换:翻译(-50%、-50%)范围(0);/* *由于我们默认写了变换属性,所以这里要补上翻译(-50%,-50%),不然就会被替换了* */背景:rgba (0, 0, 0, .25);   }   , {   变换:翻译(-50%、-50%)规模(1);   背景:透明;   }   }

盘旋小交互体验

鼠标经过试试?

.btn:徘徊:{后   动画:波纹1;   }

效果还是不错的,就是如果鼠标离开的太快,那么刚刚扩大的圆马上就缩回去了,有点违和

但是这不是我们想要的效果呀。我们希望的是点击一次触发一次,而不是这样放上去就完的了,再也不会触发了。

活跃尝试

平时工作中,<代码> 用活跃到的也比较多,通常是用在点击的效果上,那么拿来试试?

.btn:活跃:{后   动画:波纹1;   }

效果也是差强人意,有点类似<强>鼠标按住强的意思,你必须一直按住鼠标,才能完整的触发,比如说上面的例子,动画的运行实现是<代码> 1> 1>

集中体验

如果需要让任意一个元素获焦,你可以给太指定一个<代码> tabindex 属性

& lt;一个类=癰tn"tabindex=?“祝辞button

使用纯css怎么实现材料设计中按钮的水滴动画效果