wordpress雪花飘落特效
2017-05-29 本文已影响103人
黑涩月光
前些天总看到一些网站下起了雪,然后联盟也发现下雪了!SAE也下了!
之后零零落落的在一些网站上看到了一些代码,但是总是没有多么仔细的看
今天元旦嘛,去张戈那逛了逛,发现他哪里也有分享!
感觉他那里的也不错,就分享下吧!还有一会去一网站挖一下雪特效,改天一并也发了!
那个特效也不错可以鼠标控制雪花方向!
看代码之前,先分享一下即时预览的方法:很简单,在webkit浏览器(比如谷歌)按下F12,然后在console里面粘贴一下JS代码(不含前后的script标签),然后回车执行即可看到效果了。
我就霸气一回,两种代码都用上!!一、下雪特效代码①
<script type="text/javascript">(function($){ $.fn.snow = function(options){ var $flake = $('<div id="snowbox" />').css({'position': 'absolute','z-index':'9999', 'top': '-50px'}).html('❄'), documentHeight = $(document).height(), documentWidth = $(document).width(), defaults = { minSize : 10, maxSize : 20, newOn : 1000, flakeColor : "#AFDAEF" /* 此处可以定义雪花颜色,若要白色可以改为#FFFFFF / }, options = $.extend({}, defaults, options); var interval= setInterval( function(){ var startPositionLeft = Math.random() * documentWidth - 100, startOpacity = 0.5 + Math.random(), sizeFlake = options.minSize + Math.random() * options.maxSize, endPositionTop = documentHeight - 200, endPositionLeft = startPositionLeft - 500 + Math.random() * 500, durationFall = documentHeight * 10 + Math.random() * 5000; $flake.clone().appendTo('body').css({ left: startPositionLeft, opacity: startOpacity, 'font-size': sizeFlake, color: options.flakeColor }).animate({ top: endPositionTop, left: endPositionLeft, opacity: 0.2 },durationFall,'linear',function(){ $(this).remove() }); }, options.newOn); };})(jQuery);$(function(){ $.fn.snow({ minSize: 5, / 定义雪花最小尺寸 / maxSize: 50,/ 定义雪花最大尺寸 / newOn: 300 / 定义密集程度,数字越小越密集 / });});</script>
二、下雪特效代码②
<script type="text/javascript"> / 控制下雪 / function snowFall(snow) { / 可配置属性 / snow = snow || {}; this.maxFlake = snow.maxFlake || 200; / 最多片数 / this.flakeSize = snow.flakeSize || 10; / 雪花形状 / this.fallSpeed = snow.fallSpeed || 1; / 坠落速度 / } / 兼容写法 / requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || window.oRequestAnimationFrame || function(callback) { setTimeout(callback, 1000 / 60); }; cancelAnimationFrame = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.msCancelAnimationFrame || window.oCancelAnimationFrame; / 开始下雪 / snowFall.prototype.start = function(){ / 创建画布 / snowCanvas.apply(this); / 创建雪花形状 / createFlakes.apply(this); / 画雪 / drawSnow.apply(this) } / 创建画布 / function snowCanvas() { / 添加Dom结点 / var snowcanvas = document.createElement("canvas"); snowcanvas.id = "snowfall"; snowcanvas.width = window.innerWidth; snowcanvas.height = document.body.clientHeight; snowcanvas.setAttribute("style", "position:absolute; top: 0; left: 0; z-index: 1; pointer-events: none;"); document.getElementsByTagName("body")[0].appendChild(snowcanvas); this.canvas = snowcanvas; this.ctx = snowcanvas.getContext("2d"); / 窗口大小改变的处理 / window.onresize = function() { snowcanvas.width = window.innerWidth; / snowcanvas.height = window.innerHeight / } } / 雪运动对象 / function flakeMove(canvasWidth, canvasHeight, flakeSize, fallSpeed) { this.x = Math.floor(Math.random() * canvasWidth); / x坐标 / this.y = Math.floor(Math.random() * canvasHeight); / y坐标 / this.size = Math.random() * flakeSize + 2; / 形状 / this.maxSize = flakeSize; / 最大形状 / this.speed = Math.random() * 1 + fallSpeed; / 坠落速度 / this.fallSpeed = fallSpeed; / 坠落速度 / this.velY = this.speed; / Y方向速度 / this.velX = 0; / X方向速度 / this.stepSize = Math.random() / 30; / 步长 / this.step = 0 / 步数 / } flakeMove.prototype.update = function() { var x = this.x, y = this.y; / 左右摆动(余弦) */ this.velX = 0.98; if (this.velY <= this.speed) { this.velY = this.speed } this.velX += Math.cos(this.step += .05) * this.stepSize; this.y += this.velY; this.x += this.velX; / 飞出边界的处理 / if (this.x >= canvas.width || this.x <= 0 || this.y >= canvas.height || this.y <= 0) { this.reset(canvas.width, canvas.height) } }; / 飞出边界-放置最顶端继续坠落 / flakeMove.prototype.reset = function(width, height) { this.x = Math.floor(Math.random() * width); this.y = 0; this.size = Math.random() * this.maxSize + 2; this.speed = Math.random() * 1 + this.fallSpeed; this.velY = this.speed; this.velX = 0; }; // 渲染雪花-随机形状(此处可修改雪花颜色!!!) flakeMove.prototype.render = function(ctx) { var snowFlake = ctx.createRadialGradient(this.x, this.y, 0, this.x, this.y, this.size); snowFlake.addColorStop(0, "rgba(255, 255, 255, 0.9)"); / 此处是雪花颜色,默认是白色 / snowFlake.addColorStop(.5, "rgba(255, 255, 255, 0.5)"); / 若要改为其他颜色,请自行查 / snowFlake.addColorStop(1, "rgba(255, 255, 255, 0)"); / 找16进制的RGB 颜色代码。 / ctx.save(); ctx.fillStyle = snowFlake; ctx.beginPath(); ctx.arc(this.x, this.y, this.size, 0, Math.PI * 2); ctx.fill(); ctx.restore(); }; / 创建雪花-定义形状 / function createFlakes() { var maxFlake = this.maxFlake, flakes = this.flakes = [], canvas = this.canvas; for (var i = 0; i < maxFlake; i++) { flakes.push(new flakeMove(canvas.width, canvas.height, this.flakeSize, this.fallSpeed)) } } / 画雪 / function drawSnow() { var maxFlake = this.maxFlake, flakes = this.flakes; ctx = this.ctx, canvas = this.canvas, that = this; / 清空雪花 / ctx.clearRect(0, 0, canvas.width, canvas.height); for (var e = 0; e < maxFlake; e++) { flakes[e].update(); flakes[e].render(ctx); } / 一帧一帧的画 / this.loop = requestAnimationFrame(function() { drawSnow.apply(that); }); } / 调用及控制方法 */ var snow = new snowFall({maxFlake:60}); snow.start();</script>
使用方法:
方法①、复制其中一种JS代码,粘贴到网站</body>标签之前即可;
方法②、去掉代码前后的<script **>标签,然后将代码保存为js文件,最后在网站引用即可。
Ps:若没效果,请确认网页是否已载入JQurey,如果没有请在下雪代码之前引入JQ即可。
载入jquery
还是老样子,载入的百度提供的库
<script type="text/javascript" src="http://libs.baidu.com/jquery/1.8.3/jquery.js"></script><script type="text/javascript" src="http://libs.baidu.com/jquery/1.8.3/jquery.min.js"></script>
本文转载自: [https://ihuan.me/2172.html]