通用按钮点击特效

4 篇文章 1 订阅

网站中的按钮常用按钮通用特效,
首先按钮可以随意自己写样式

<div class="box waves">
			<p>按钮特效</p>
</div>
	.box {
				width: 300px;
				height:100px;
				background: darkblue;
				margin: 200px auto;
				border-radius: 20px;
			}
			.box p{
				text-align: center;
				line-height: 60px;
				color: #fff;	
			}

不管你这么写 只要你加上 waves这个类 然后又添加js

document.addEventListener("DOMContentLoaded", function() {
			var duration = 600;//显示特效时间 
			var forStyle = function(position) {
				var cssStr = "";
				for(var key in position) {
					if(position.hasOwnProperty(key)) {
						cssStr += key + ":" + position[key] + ";"
					}
				}
				return cssStr
			};
			var forRect = function(target) {
				var position = {
						top: 0,
						left: 0
					},
					ele = document.documentElement;
				"undefined" != typeof target.getBoundingClientRect && (position = target.getBoundingClientRect());
				return {
					top: position.top + window.pageYOffset - ele.clientTop,
					left: position.left + window.pageXOffset - ele.clientLeft
				}
			};
			var show = function(event) {
				var pDiv = event.target,
					cDiv = document.createElement("div");
				pDiv.appendChild(cDiv);
				var rectObj = forRect(pDiv),
					_height = event.pageY - rectObj.top,
					_left = event.pageX - rectObj.left,
					_scale = "scale(" + pDiv.clientWidth / 100 * 10 + ")";
				var position = {
					top: _height + "px",
					left: _left + "px"
				};
				cDiv.className = cDiv.className + " waves-animation", cDiv.setAttribute("style", forStyle(position)), position["-webkit-transform"] = _scale, position["-moz-transform"] = _scale, position["-ms-transform"] = _scale, position["-o-transform"] = _scale, position.transform = _scale, position.opacity = "1", position["-webkit-transition-duration"] = duration + "ms", position["-moz-transition-duration"] = duration + "ms", position["-o-transition-duration"] = duration + "ms", position["transition-duration"] = duration + "ms", position["-webkit-transition-timing-function"] = "cubic-bezier(0.250, 0.460, 0.450, 0.940)", position["-moz-transition-timing-function"] = "cubic-bezier(0.250, 0.460, 0.450, 0.940)", position["-o-transition-timing-function"] = "cubic-bezier(0.250, 0.460, 0.450, 0.940)", position["transition-timing-function"] = "cubic-bezier(0.250, 0.460, 0.450, 0.940)", cDiv.setAttribute("style", forStyle(position));
				var finishStyle = {
					opacity: 0,
					"-webkit-transition-duration": duration + "ms",
					"-moz-transition-duration": duration + "ms",
					"-o-transition-duration": duration + "ms",
					"transition-duration": duration + "ms",
					"-webkit-transform": _scale,
					"-moz-transform": _scale,
					"-ms-transform": _scale,
					"-o-transform": _scale,
					top: _height + "px",
					left: _left + "px",
				};
				setTimeout(function() {
					cDiv.setAttribute("style", forStyle(finishStyle));
					setTimeout(function() {
						pDiv.removeChild(cDiv)
					}, duration)
				}, 100)
			};
			document.querySelector(".waves").addEventListener("click", function(e) {
				show(e)
			}, !1)
		}, !1);

完整案例

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8" />
		<title></title>
		<style type="text/css">
			.box {
				width: 300px;
				height:100px;
				background: darkblue;
				margin: 200px auto;
				border-radius: 20px;
			}
			.box p{
				text-align: center;
				line-height: 60px;
				color: #fff;
				
			}
			.waves {
				position: relative;
				cursor: pointer;
				overflow: hidden;
				text-align: center;
				-webkit-tap-highlight-color: transparent;
				z-index: 1;
			}
			
			.waves .waves-animation {
				position: absolute;
				border-radius: 50%;
				width: 25px;
				height: 25px;
				opacity: 0;
				background-image: linear-gradient(to bottom , #7A88FF, #7AFFAF);
				transition: all 0.7s ease-out;
				transition-property: transform, opacity, -webkit-transform;
				-webkit-transform: scale(0);
				transform: scale(0);
				pointer-events: none;
			}
		</style>
	</head>

	<body>
		<div class="box waves">
			<p>按钮特效</p>
		</div>
	</body>
	<script type="text/javascript">
		document.addEventListener("DOMContentLoaded", function() {
			var duration = 600;//显示特效时间 
			var forStyle = function(position) {
				var cssStr = "";
				for(var key in position) {
					if(position.hasOwnProperty(key)) {
						cssStr += key + ":" + position[key] + ";"
					}
				}
				return cssStr
			};
			var forRect = function(target) {
				var position = {
						top: 0,
						left: 0
					},
					ele = document.documentElement;
				"undefined" != typeof target.getBoundingClientRect && (position = target.getBoundingClientRect());
				return {
					top: position.top + window.pageYOffset - ele.clientTop,
					left: position.left + window.pageXOffset - ele.clientLeft
				}
			};
			var show = function(event) {
				var pDiv = event.target,
					cDiv = document.createElement("div");
				pDiv.appendChild(cDiv);
				var rectObj = forRect(pDiv),
					_height = event.pageY - rectObj.top,
					_left = event.pageX - rectObj.left,
					_scale = "scale(" + pDiv.clientWidth / 100 * 10 + ")";
				var position = {
					top: _height + "px",
					left: _left + "px"
				};
				cDiv.className = cDiv.className + " waves-animation", cDiv.setAttribute("style", forStyle(position)), position["-webkit-transform"] = _scale, position["-moz-transform"] = _scale, position["-ms-transform"] = _scale, position["-o-transform"] = _scale, position.transform = _scale, position.opacity = "1", position["-webkit-transition-duration"] = duration + "ms", position["-moz-transition-duration"] = duration + "ms", position["-o-transition-duration"] = duration + "ms", position["transition-duration"] = duration + "ms", position["-webkit-transition-timing-function"] = "cubic-bezier(0.250, 0.460, 0.450, 0.940)", position["-moz-transition-timing-function"] = "cubic-bezier(0.250, 0.460, 0.450, 0.940)", position["-o-transition-timing-function"] = "cubic-bezier(0.250, 0.460, 0.450, 0.940)", position["transition-timing-function"] = "cubic-bezier(0.250, 0.460, 0.450, 0.940)", cDiv.setAttribute("style", forStyle(position));
				var finishStyle = {
					opacity: 0,
					"-webkit-transition-duration": duration + "ms",
					"-moz-transition-duration": duration + "ms",
					"-o-transition-duration": duration + "ms",
					"transition-duration": duration + "ms",
					"-webkit-transform": _scale,
					"-moz-transform": _scale,
					"-ms-transform": _scale,
					"-o-transform": _scale,
					top: _height + "px",
					left: _left + "px",
				};
				setTimeout(function() {
					cDiv.setAttribute("style", forStyle(finishStyle));
					setTimeout(function() {
						pDiv.removeChild(cDiv)
					}, duration)
				}, 100)
			};
			document.querySelector(".waves").addEventListener("click", function(e) {
				show(e)
			}, !1)
		}, !1);
	</script>

</html>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1登峰造极

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值