js 梅花飘落网页背景
以前本博客使用的一个js动态背景,现在精简掉了,收藏在这里备用。
css部分
body{
background: url(https://pdbn.top/uploads/2016/02/bg.png) no-repeat top right fixed;
}
/* 梅花飘落 ------------------------------------------------ */
.leave {
position: fixed;
width: 25px;
height: 20px;
-webkit-animation-iteration-count: infinite,infinite;
-webkit-animation-direction: normal,normal;
-webkit-animation-timing-function: linear,ease-in;
-moz-animation-iteration-count: infinite,infinite;
-moz-animation-direction: normal,normal;
-moz-animation-timing-function: linear,ease-in;
-o-animation-iteration-count: infinite,infinite;
-o-animation-direction: normal,normal;
-o-animation-timing-function: linear,ease-in;
animation-iteration-count: infinite,infinite;
animation-direction: normal,normal;
animation-timing-function: linear,ease-in;
}
.leave>img {
position: fixed;
width: 25px;
height: 20px;
-webkit-animation-iteration-count: infinite;
-webkit-animation-direction: alternate;
-webkit-animation-timing-function: ease-in-out;
-webkit-transform-origin: 50% -100%;
-moz-animation-iteration-count: infinite;
-moz-animation-direction: alternate;
-moz-animation-timing-function: ease-in-out;
-moz-transform-origin: 50% -100%;
-o-animation-iteration-count: infinite;
-o-animation-direction: alternate;
-o-animation-timing-function: ease-in-out;
-o-transform-origin: 50% -100%;
animation-iteration-count: infinite;
animation-direction: alternate;
animation-timing-function: ease-in-out;
transform-origin: 50% -100%;
}
@-webkit-keyframes fade {
0% {
opacity: 1
}
95% {
opacity: 1
}
100% {
opacity: 0
}
}
@-webkit-keyframes drop {
0% {
-webkit-transform: translate(30px,-50px)
}
100% {
-webkit-transform: translate(-200px,650px)
}
}
@-webkit-keyframes clockwiseSpin {
0% {
-webkit-transform: rotate(-50deg)
}
100% {
-webkit-transform: rotate(50deg)
}
}
@-webkit-keyframes counterclockwiseSpinAndFlip {
0% {
-webkit-transform: scale(-1,1) rotate(50deg)
}
100% {
-webkit-transform: scale(-1,1) rotate(-50deg)
}
}
@-moz-keyframes fade {
0% {
opacity: 1
}
95% {
opacity: 1
}
100% {
opacity: 0
}
}
@-moz-keyframes drop {
0% {
-moz-transform: translate(30px,-50px)
}
100% {
-moz-transform: translate(-200px,650px)
}
}
@-moz-keyframes clockwiseSpin {
0% {
-moz-transform: rotate(-50deg)
}
100% {
-moz-transform: rotate(50deg)
}
}
@-moz-keyframes counterclockwiseSpinAndFlip {
0% {
-moz-transform: scale(-1,1) rotate(50deg)
}
100% {
-moz-transform: scale(-1,1) rotate(-50deg)
}
}
@-o-keyframes fade {
0% {
opacity: 1
}
95% {
opacity: 1
}
100% {
opacity: 0
}
}
@-o-keyframes drop {
0% {
-o-transform: translate(30px,-50px)
}
100% {
-o-transform: translate(-200px,650px)
}
}
@-o-keyframes clockwiseSpin {
0% {
-o-transform: rotate(-50deg)
}
100% {
-o-transform: rotate(50deg)
}
}
@-o-keyframes counterclockwiseSpinAndFlip {
0% {
-o-transform: scale(-1,1) rotate(50deg)
}
100% {
-o-transform: scale(-1,1) rotate(-50deg)
}
}
@keyframes fade {
0% {
opacity: 1
}
95% {
opacity: 1
}
100% {
opacity: 0
}
}
@keyframes drop {
0% {
transform: translate(30px,-50px)
}
100% {
transform: translate(-200px,650px)
}
}
@keyframes clockwiseSpin {
0% {
transform: rotate(-50deg)
}
100% {
transform: rotate(50deg)
}
}
@keyframes counterclockwiseSpinAndFlip {
0% {
transform: scale(-1,1) rotate(50deg)
}
100% {
transform: scale(-1,1) rotate(-50deg)
}
}
/* 梅花飘落结束------------------------------------------------ */
js部分
/* 梅花飘落js*/
~(function(doc) {
var FallingLeaves = function(num, id) {
this.body = doc.body;
this.support = false;
this.container = id ? doc.getElementById('id') : this.body;
this.num = num ? num : 5;
this.init()
};
FallingLeaves.prototype = {
init: function() {
this.supportNot();
if (this.support != false) {
for (var i = 0; i < this.num; i++) {
this.container.appendChild(this.createLeaf())
}
}
},
supportNot: function() {
var domPrefixes = 'Webkit Moz O ms a'.split(' ');
for (var i = 0; i < domPrefixes.length; i++) {
if (this.container.style[domPrefixes[i] + 'AnimationName'] !== undefined) {
this.support = domPrefixes[i];
break
}
if (domPrefixes[i] == "a") {
if (this.container.style.animationName !== undefined) {
this.support = domPrefixes[i];
break
}
}
}
},
randomInteger: function(low, high) {
return low + Math.floor(Math.random() * (high - low))
},
randomFloat: function(low, high) {
return low + Math.random() * (high - low)
},
pixelValue: function(value) {
return value + 'px'
},
durationValue: function(value) {
return value + 's'
},
createLeaf: function() {
var self = this,
leafDiv = doc.createElement('div'),
image = doc.createElement('img'),
spinAnimationName = (Math.random() < 0.5) ? 'clockwiseSpin' : 'counterclockwiseSpinAndFlip',
fadeAndDropDuration = self.durationValue(self.randomFloat(5, 11)),
spinDuration = self.durationValue(self.randomFloat(4, 8)),
leafDelay = self.durationValue(self.randomFloat(0, 5));
leafDiv.className = "leave";
image.src = 'https://pdbn.top/wp-content/themes/822/img/' + self.randomInteger(1, self.num) + '.png';
leafDiv.style.top = self.pixelValue(30);
leafDiv.style.right = self.pixelValue(self.randomInteger(0, 50));
if (self.container.style[self.support + 'AnimationName'] !== undefined) {
image.style[self.support + 'AnimationName'] = spinAnimationName;
image.style[self.support + 'AnimationDuration'] = spinDuration;
leafDiv.style[self.support + 'AnimationName'] = 'fade, drop';
leafDiv.style[self.support + 'AnimationDelay'] = leafDelay + ', ' + leafDelay;
leafDiv.style[self.support + 'AnimationDuration'] = fadeAndDropDuration + ', ' + fadeAndDropDuration
}
if (this.support == "a") {
image.style.animationName = spinAnimationName;
image.style.animationDuration = spinDuration;
leafDiv.style.animationName = 'fade, drop';
leafDiv.style.animationDelay = leafDelay + ', ' + leafDelay;
leafDiv.style.animationDuration = fadeAndDropDuration + ', ' + fadeAndDropDuration
}
leafDiv.appendChild(image);
return leafDiv
}
};
new FallingLeaves();
})(document);
注意js中加粗的部分,定义4张图片
