web299.com
全部
教育
语言/资格考试
法律
互联网
政务民生
Word模板
Excel模板
PPT模板
网页特效
小程序模板
网站模板
首页
教育
语言/资格考试
法律
互联网
政务民生
Word模板
Excel模板
PPT模板
网页特效
小程序模板
网站模板
当前位置:
首页
>
网页特效
>
按钮特效
4种基于SVG的Material Design风格按钮点击波特效
分类:
按钮特效
日期:
2024-05-14
点击(0)
评论(0)
演 示
免费下载
简介
##### HTML结构 该按钮点击波使用的SVG元素的代码非常简单。SVG中使用了symbol元素-它用于定义可重复使用的符号。并在symbol元素放置需要的SVG图形。 ```html
``` 为了使用上面定义的symbol元素,在按钮上使用了use元素-它可以在SVG图像中多次重用一个预定义的SVG图形。它通过xlink:href属性来指向前面定义的symbol元素的ID。 ```html
Click for Ripple
``` 关于SVG symbol元素和use元素详细的使用方法可以参考:SVG defs元素、symbol元素和use元素 ##### CSS样式 点击波的主要CSS样式只有两句: ```html .ripple-obj { height: 100%; pointer-events: none; position: absolute; top: 0; left: 0; z-index: 0; width: 100%; fill: #0c7cd5; } .ripple-obj use { opacity: 0; } ``` 由于只需要在.ripple-obj的父元素上产生点击波效果,所以使用pointer-events: none;来阻止SVG上产生点击波。 点击波在开始的时候是不可见的,所以设置它的透明度为0。另外还将波形对象放置在按钮的左上角位置。 ##### JAVASCRIPT 为了制作动态按钮点击波效果,特效中使用GreenSock的TweenMax库来制作SVG动画。rippleAnimation()函数是整个点击波效果的主要动画函数。 ```html function rippleAnimation(event, timing) { var tl = new TimelineMax(); x = event.offsetX, y = event.offsetY, w = event.target.offsetWidth, h = event.target.offsetHeight, offsetX = Math.abs( (w / 2) - x ), offsetY = Math.abs( (h / 2) - y ), deltaX = (w / 2) + offsetX, deltaY = (h / 2) + offsetY, scale_ratio = Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2)); tl.fromTo(ripple, timing, { x: x, y: y, transformOrigin: '50% 50%', scale: 0, opacity: 1, ease: Linear.easeIn },{ scale: scale_ratio, opacity: 0 }); return tl; } return { init: function(target, timing) { var button = document.getElementById(target); button.addEventListener('click', function(event) { rippleAnimation.call(this, event, timing); }); } }; })(); ```
相关推荐
html5浪漫粒子表白文字特效
SlidesJS幻灯片特效
html5瀑布流相册特效
css3 svg实现的情人节表白鲜花动画特效
t-scroll.js基于ES6的DOM元素,过渡动画库插件
纯js写省市区三级联动效果
广告
广告