到圣诞节了,让网站下下雪吧!

下雪

js 版下雪 - jQuery

这里我们引用一个生成雪花的 js 文件,可以将其命名为 snow.js

(function($){
	
	$.fn.snow = function(options){
	
			var $flake 			= $('<div id="snowbox" />').css({'position': 'absolute', 'top': '-50px'}).html('&#10052;'),
				documentHeight 	= $(document).height(),
				documentWidth	= $(document).width(),
				defaults		= {
									minSize		: 10,	
									maxSize		: 20,	
									newOn		: 1000,
									flakeColor	: "#9FD2FF"	 //设置雪花颜色
								},
				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 - 40,
					endPositionLeft		= startPositionLeft - 100 + 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);

然后,在网站的某个地方加上以下代码

<script>
	$(function(){
		$.fn.snow({ 
			minSize: 5,
			maxSize: 40, //控制雪花大小
			newOn: 100 //雪花出现的频率 数值越小雪花越多
		});
	});
</script>

就可以实现雪花的效果了。

注:引入上面的代码,会让网站底部出现横条。在css中加入 overflow-x:hidden 即可解决问题。

2020.12.25: 这也是网站现在在使用的特效哦!

css 版下雪

css 版下雪利用了 css 中的动画效果,配合雪花的图片实现了效果,具体效果可以点击这个网站查看。

要实现的话也很简单,引入如下 css 代码:

.snow {
  display: block;
  position: absolute;
  z-index: 2;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  pointer-events: none;
  -webkit-transform: translate3d(0, -100%, 0);
          transform: translate3d(0, -100%, 0);
  -webkit-animation: snow linear infinite;
          animation: snow linear infinite;
}
.snow.foreground {
  background-image: url("https://dl6rt3mwcjzxg.cloudfront.net/assets/snow/snow-large-075d267ecbc42e3564c8ed43516dd557.png");
  -webkit-animation-duration: 15s;
          animation-duration: 15s;
}
.snow.foreground.layered {
  -webkit-animation-delay: 7.5s;
          animation-delay: 7.5s;
}
.snow.middleground {
  background-image: url(https://dl6rt3mwcjzxg.cloudfront.net/assets/snow/snow-medium-0b8a5e0732315b68e1f54185be7a1ad9.png);
  -webkit-animation-duration: 20s;
          animation-duration: 20s;
}
.snow.middleground.layered {
  -webkit-animation-delay: 10s;
          animation-delay: 10s;
}
.snow.background {
  background-image: url(https://dl6rt3mwcjzxg.cloudfront.net/assets/snow/snow-small-1ecd03b1fce08c24e064ff8c0a72c519.png);
  -webkit-animation-duration: 30s;
          animation-duration: 30s;
}
.snow.background.layered {
  -webkit-animation-delay: 15s;
          animation-delay: 15s;
}

@-webkit-keyframes snow {
  0% {
    -webkit-transform: translate3d(0, -100%, 0);
            transform: translate3d(0, -100%, 0);
  }
  100% {
    -webkit-transform: translate3d(15%, 100%, 0);
            transform: translate3d(15%, 100%, 0);
  }
}

@keyframes snow {
  0% {
    -webkit-transform: translate3d(0, -100%, 0);
            transform: translate3d(0, -100%, 0);
  }
  100% {
    -webkit-transform: translate3d(15%, 100%, 0);
            transform: translate3d(15%, 100%, 0);
  }
}

再在网站的某个顶部加入如下的 div 标签即可。

<div class="snow foreground"></div>
<div class="snow foreground layered"></div>
<div class="snow middleground"></div>
<div class="snow middleground layered"></div>
<div class="snow background"></div>
<div class="snow background layered"></div>

但是要注意,用这个方法生成的雪花并不会一直落到网站的底部。而是会在某个位置突然消失。这是因为图片的大小的缘故。除此之外,它也会导致网站底部出现滚动条,在css中加入 overflow-x:hidden 即可解决问题。

如果有小伙伴留心观察的话,可以发现这其实是 b站 在网站顶部实现雪花特效的方法:
b站 雪花特效

头像圣诞帽效果

另一个重头戏就是把头像加上圣诞帽了!

感谢雅兮网的教程:

1、上传圣诞帽子图片素材
2、首先确定你的logo元素样式class或者id 名称,在其选择器名称后添加:after伪元素以及值(上述代码中),注意帽子图片路径
3、给logo父元素增加相对定位属性 position:relative,如已有则可以忽略。
每个模板的结构都不一样,所以大家需要根据自己的实际情况调整,关键点就是给logo选择器后面加after伪元素,并给logo父元素添加相对定位。

这里提供两个圣诞图片和代码:

圣诞帽 - 1
圣诞帽 - 2
.logo:after{content:url(shengdanHat2.png);display:block;position:absolute;top:-3px;left:140px;/* 根据实际情况修改定位*/}

Merry Christmas!