我是 CSS 动画的新手,最近几个小时一直在尝试让动画正常工作。试图理解代码Material Design,但还不能让它工作。
我说的是这个效果:https ://angular.io/ (菜单效果)。基本上,这是一个点击动画,从鼠标光标开始呈圆形展开。
似乎可以归结为这两行:
transition: box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1),-webkit-transform .4s cubic-bezier(.25,.8,.25,1);
transition: box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1),transform .4s cubic-bezier(.25,.8,.25,1);
PS:也许有一些代码jQuery实现了这个动画。
免费翻译问题How to create Ripple effect on Click - Material Design by @Antonin Cezard。
Вариант с CSS-переменными, которые используются для раздельного использования свойства
transform. Разделять это свойство понадобилось для того, чтобы правильно перемещать элемент (translate3d) и независимо от перемещения масштабировать (scale). Через JS так можно очень удобно управлять этими параметрами.С точки зрения производительности это достаточно хорошая анимация такого эффекта, поскольку не делаются вставки и удаления узлов в DOM и вся работа происходит исключительно со свойствами
transformиopacity, которые не влияют на композитный слой, а значит не вызывают множество перерисовок страницы.使用 jQuery 和 CSS3 在 Material Design 中实现波纹效果
jsBin演示
要创建UI 波纹效果,您需要:
oveflow:hidden以限制波纹圈(因为您不想更改原始元素,所以使用overflow不会看到波纹效果超出所需容器)overflow半透明径向元素ripple waveCSS3动画缩放和不透明度ripple element主要代码:
基本上添加
data-ripple(默认为白色波纹)或data-ripple="# 000"为您想要的元素:CSS:
查询
这是一个功能齐全的演示:
来自 @andRoko C. Buljan的答案的松散翻译 。
我以前在我的几个项目中使用过这段代码。
使用
jQuery,我们不仅可以静态地对其施加影响,还可以将其添加到元素spanonclick。我添加了注释以便更容易理解代码。
演示点这里
查询
CSS
来自成员 @Ruddy的答案的松散翻译 。
На чистом
js+babel-javascript-css-использовать так -
html-javascript-Живой пример с
Impulse.install( импульс создается в координатах клика, навешивается слушатель событияclick) -现场示例
Impulse.applyToElement(手动设置动量坐标,click未附加事件侦听器)-这样的动画可以用
box-shadows. 将圆圈的起点放在鼠标光标下,单击鼠标时需要JS.来自 @web-tiki贡献者的答案的松散翻译 。