vue下雪背景效果(sass实现)

下雪效果一般使用canvas或sass实现,各有优缺点
canvas:雪花大小、位置、路线、速度更加随机,耗内存
sass:每一片雪花雪花大小、位置、路线、速度初始化后不会变、效果流畅丝毫不会卡
显然sass做法性价比更高

效果图

在这里插入图片描述

安装sass


npm i sass --save
npm i sass-loader --save

代码实现


<div v-for="item of 500" :key="item" class="snowflake"></div>

<style lang="scss">
	body {
		background-color: black;
	}

	.snowflake {
		--size: 1vw;
		width: var(--size);
		height: var(--size);
		background: url(./snow.png) no-repeat; //雪花图片 也可以画圆
		background-size: 100% 100%;
		position: fixed;
		top: -5vh; //出事高度在屏幕外 效果更真实
		z-index: -10; //背景图层不遮挡上面元素
	}

	@keyframes snowfall {
		100% {
			transform: translate3d(var(--end), 100vh, 0);
		}
	}

	@for $i from 0 through 500 {
		.snowflake:nth-child(#{$i}) {
			//每个雪花的大小
			--size: #{random(6) * 0.08}vw;
			//雪花移动目标点 -70后是负数 这样雪花会向左下方飘落 
			--end: #{random(20) - 70}vw;
			//雪花初始位置 
			left: #{random(150)}vw;
			//雪花从顶到底移动的动画 动画时间可以调整雪花速度
			animation: snowfall #{5 + random(8)}s linear infinite;
			animation-delay: -#{random(10)}s;
		}
	}

</style>

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

bug的搬运工

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

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

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

打赏作者

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

抵扣说明:

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

余额充值