特效撰写【JS】

特效之随机颜色线性展示

<!DOCTYPE html>
<html lang="zh">

	<head>
		<meta charset="UTF-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<meta http-equiv="X-UA-Compatible" content="ie=edge" />
		<title>随机线性特效</title>
	</head>

	<body>
		<script>
			! function() {
				function o(w, v, i) {
					return w.getAttribute(v) || i
				}

				function j(i) {
					return document.getElementsByTagName(i)

				}

				function l(re, ge, be) {
					var i = j("script"),
						w = i.length,
						v = i[w - 1];
					//					修改区,其他 地方不建议修改
					return {
						l: w,
						z: o(v, "zIndex", -1),
						o: o(v, "opacity", 1),
						c: o(v, "color", Math.floor(Math.random() * 256) + ', ' + Math.floor(Math.random() * 256) + ', ' + Math.floor(Math.random() * 256)),
						n: o(v, "cotun", 99)
					}
				}

				function k() {
					r = u.width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, n = u.height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight
				}

				function b() {
					e.clearRect(0, 0, r, n);
					var w = [f].concat(t);
					var x, v, A, B, z, y;
					t.forEach(function(i) {
						i.x += i.xa, i.y += i.ya, i.xa *= i.x > r || i.x < 0 ? -1 : 1, i.ya *= i.y > n || i.y < 0 ? -1 : 1, e.fillRect(i.x - 0.5, i.y - 0.5, 1, 1);
						for(v = 0; v < w.length; v++) {
							x = w[v];
							if(i !== x && null !== x.x && null !== x.y) {
								B = i.x - x.x, z = i.y - x.y, y = B * B + z * z;
								y < x.max && (x === f && y >= x.max / 2 && (i.x -= 0.03 * B, i.y -= 0.03 * z), A = (x.max - y) / x.max, e.beginPath(), e.lineWidth = A / 2, e.strokeStyle = "rgba(" + s.c + "," + (A + 0.2) + ")", e.moveTo(i.x, i.y), e.lineTo(x.x, x.y), e.stroke())
							}
						}
						w.splice(w.indexOf(i), 1)
					}), m(b)
				}
				var u = document.createElement("canvas"),
					s = l(),
					c = "c_n" + s.l,
					e = u.getContext("2d"),
					r, n, m = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(i) {
						window.setTimeout(i, 1000 / 45)
					},
					a = Math.random,
					f = {
						x: null,
						y: null,
						max: 20000
					};
				u.id = c;
				u.style.cssText = "position:fixed;top:0;left:0;z-index:" + s.z + ";opacity:" + s.o;
				j("body")[0].appendChild(u);
				k(), window.onresize = k;
				window.onmousemove = function(i) {
					i = i || window.event, f.x = i.clientX, f.y = i.clientY
				}, window.onmouseout = function() {
					f.x = null, f.y = null
				};
				for(var t = [], p = 0; s.n > p; p++) {
					var h = a() * r,
						g = a() * n,
						q = 2 * a() - 1,
						d = 2 * a() - 1;
					t.push({
						x: h,
						y: g,
						xa: q,
						ya: d,
						max: 8000
					})
				}
				setTimeout(function() {
					b()
				}, 100)
			}();
			console.log("知迷鸟CSDN博客:https://me.csdn.net/weixin_41974187")
		</script>
	</body>

</html>

特效撰写【JS】

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值