前端特效——复杂下雪,雪花纷飞(纯css)

article/2025/11/10 9:11:04

效果:

 

原理:

因为是用的纯css,所以为了实现很多个雪花,我们就需要创建200个div( 数量适量多即可)

然后先设置雪花div的共同属性:雪花的背景图片是雪花,给初始大小width: 10px;height: 10px;然后绝对定位到左上角。(左上角无实际意义,总之就先把雪花放到窗口顶部,然后你能先看得到)

因为雪花有大有小,所以用到了缩放 transform: scale(x),我取的是1-3的随机数: random(3)

然后雪花需要移动起来:transform: translate(x,y)

因为雪花移动x轴的幅度不会很大,就是不要搞成从左0移动到右100vw,我们要控制雪花x轴的飘动差在10vw之间,所以 random(20) - 10 得出 -10 ~10

但是各个雪花之间初始所在的位置也是不一样的,如果一样,那大家不都是从一个点出发了吗。。所以我们需要设置雪花在X轴的初始位置:random(100)vw

然后就是加动画:从x轴某点移动到x轴某点(飘动差在10vw之间),然后从我们肉眼看不见的地方(-5vh) 落到地上 100vh

因为是200个不一样的雪花(大小,速度),各自飘动的时间也是不一样的,所以也要给随机数,但是又不能让某个或某些雪花存在1s就下完的情况,所以也要设置一个最低值 8s

最后,为了我们打开网页的时候,能提前看到雪花在飘落了,所以用到了延时 -Xs,表示动画提前开始了 X秒,同理,为了雪花纷飞的效果,我们不能让所有雪花都一起提前X秒,而是一个随机数。

理解了以上原理,你就可以手敲代码了,但是200个div的样式,然后还要想随机数,累死你

我用了CSS预处理器之sass

首先VSCode安装 Easy Sass的插件

 然后 在css文件夹创建 复杂下雪.scss(注意:后缀是scss)

 

 然后随便写点css样式,保存,就会自动生成同名字的css文件

 

 在这里我们用到循环,用到随机数函数

循环:

@for $i from 1 through 200 {// 第i个雪花div.snow:nth-child(#{$i}) {}
}

 随机数函数:

#{random(20) - 10}
#{random(3)
#{8 + random(20)}
-#{random(10)}

懂了上面语法后就可以直接写了

复杂下雪.scss: 

.snow {position: absolute;width: 10px;height: 10px;background-image: url("../imgs/snowitem.png");background-size: cover;
}@keyframes move1{0%{// top: 0;// left: var(--left-ini);transform: translate(var(--left-ini),-5vh) scale(var(--size));}100%{// top: 100vh;// left: var(--left-end);transform: translate(var(--left-end),100vh);}
}@for $i from 1 through 200 {.snow:nth-child(#{$i}) {--left-ini: #{random(20) - 10}vw;--left-end: #{random(20) - 10}vw;--size: #{random(3)};// top: -5vh; // 不用top的原因,就是为了不使初始状态时,空间的某块行区域是空白的,不好看,直接用y位移就可以根据时间的随机性,让空间的同时刻每一行都能含有雪花left: #{random(100)}vw; // 从原来的位置左右移动一点点距离,如果直接使用left当位移点,移动的跨幅太大了,不好看animation: move1 #{8 + random(20)}s linear -#{random(10)}s infinite; // 用了延时,就是为了能有一运行代码就能提前有雪花出现在页面上}
}

复杂下雪.html

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>简单下雪</title><link rel="stylesheet" href="./css/复杂下雪.css" /><style>* {margin: 0;padding: 0;}body {background: rgb(41, 43, 41);height: 100vh;overflow: hidden;}/* .snow {position: absolute;width: 10px;height: 10px;background-image: url("imgs/snowitem.png");background-size: cover;}.snow:nth-child(1) {top: -100px;left: 300px;transform: scale(3);animation: move1 22s linear -8s infinite;}@keyframes move1{30.11%{top: 20vh;left: -100px;}100%{top: 100vh;left: 500px;}} */</style>
</head><body><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div><div class="snow"></div>
</body></html>


http://chatgpt.dhexx.cn/article/pjtnKpOG.shtml

相关文章

前端特效 —— 八卦图旋转(纯css)

原理&#xff1a; 用div的左边框和右边框实现两个半圆 然后用div的before 和 after 伪元素 画 两个小圆 注意&#xff1a;伪元素不加绝对定位&#xff0c;怎么完整显示出来&#xff1f;转为块级元素&#xff0c;宽高就生效了。 然后把小圆的位置移到中间即可 最后加上旋转的…

精美的web前端源码的特效

1.JS自定义烟花特效 这是一款基于JS和Canvas的自定义烟花特效&#xff0c;初始化界面的时候特效是不带声效的绽放&#xff0c;当你点击顶部中间的播放&#xff0c;即可以看到美丽的烟火也可以听到烟花绽放的声音&#xff0c;让你脑海浮现过年团圆放烟火的画面。当然除了声音的…

前端特效 - 前置- - 01. 百叶窗

逆水行舟用力撑&#xff0c;一篙松劲退千寻。 01.百叶窗 今日份打卡&#xff01;---经验值1&#xff01; 进度&#xff1a;001 效果图&#xff1a; 鼠标经过&#xff1a; &#xff08;有过渡&#xff09; 代码&#xff1a; <!DOCTYPE html> <html lang"en"…

【web前端特效源码】使用HTML5+CSS3制作一个会动的文字闪动动画效果~~适合初学者~超简单~ |前端开发|IT软件

b站视频演示效果: 【web前端特效源码】使用HTML5+CSS3制作一个会动的文字闪动动画效果~~适合初学者~超简单~ |前端开发|IT软件 效果图: 完整代码: <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><titl…

【web前端特效源码】使用HTML5+CSS3+JavaScript制作一个影子~~适合初学者~超简单~ |前端开发|IT软件

b站视频演示效果: 【web前端特效源码】使用HTML5+CSS3+JavaScript制作一个影子特效~~适合初学者~超简单~ |前端开发|IT软件 效果图: 完整代码: <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name=…

前端特效CSS样式樱花

下面直接上代码: <!doctype html> <html lang"en"> <head> <meta charset"UTF-8"> <title>cloth</title> <style> body { padding:0; margin:0; overflow:hidden; height: 600px; } c…

前端特效炫酷输入框

今天给大家分享的是&#xff1a;前端特效之炫酷输入框 文本输入框在网页应用当中很常见&#xff0c;不管是登录或者是注册等&#xff0c;凡是需要用户输入文字的地方都离不开它&#xff0c;而在一个普通的输入框上面加上一点交互动画&#xff0c;就会让这个输入框变的更加的美…

学会这个前端特效520还怕没CP伴侣

下方是特效视频 【HTML&#xff0b; CSS&#xff0b; JS 实现幽默表白的网页特效 源码放在公众号 欢迎大家来领取-哔哩哔哩】 https://b23.tv/0VrNtxB 源码领取方式 微信扫描二维码 微信搜索 微信公众号 渔夫小猿

前端特效总结

1、前端的一些小的效果 a. ”透明的方块“ /*只需要对 div 设置&#xff1a;background: rgba(57, 61, 82, 0.7)就可以&#xff0c;第四个参数表示透明度的程度&#xff0c;取值为 0-1 */ <!DOCTYPE html> <html><head><meta charset"UTF-8"&g…

20款前端特效动画及源码

最近优化项目时看到一些实用的特效 感觉还不错 下面就分享给大家 代码量过长的我就不展示了 可以去在这里资源站源码部分预览下载 1.Loading加载动画 在canvas画布上&#xff0c;我们动态绘制许多多边形&#xff0c;这些多边形伴随着颜色的随机变化和旋转&#xff0c;形成了奇…

前端炫酷特效合集

我们经常在抖音上看到一些前端很酷的特效&#xff0c;诸如&#xff1a;快叫你学编程的朋友给你写一个圣诞树&#xff0c;看着是不是很酷炫呢&#xff1f;其实只要有源码&#xff0c;你也可以拥有哦&#xff01; 跟大家分享多款前端特效源码&#xff0c;需要的朋友可以去在这里…

【UI】前端常用特效

文章目录 一、文字水波纹特效二、按钮按动特效三、网页特效live2d看板娘四、粒子特效 一、文字水波纹特效 完整html代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>海拥 | 水波文本动画</title><style>i…

一个前端如何画各种特效或图案

今天一个朋友问一个问题&#xff0c;有一个需求&#xff1a;需在页面上有一个水滴&#xff0c;会动的水滴&#xff0c;要逼真的那种&#xff0c;这应该怎么画&#xff08;当前情况下不能使用图片和canvas&#xff09; 我一惊&#xff0c;这不是很简单吗&#xff0c;细想也对&am…

10款精美的web前端源码的特效

1.HTML5侧滑聊天面板 很酷的聊天界面 这是一款基于HTML5和SVG的侧滑聊天面板&#xff0c;初始化的时候聊天面板是锁定的&#xff0c;当你拖动白色区域时&#xff0c;即可解锁展开聊天面板&#xff0c;显示所有好友。点击面板中的好友即可切换到聊天模式。无论界面美化还是动画特…

精心整理的10套最美Web前端新年特效--提前祝大家新年快乐

亲爱的小伙伴们&#xff0c;2022年春节就快到了&#xff01;~ 在这里祝各位程序员朋友2022年身体健康,代码没有bug,不用996、远离ICU。 今天给大家精心整理了10套最美前端新年特效&#xff01;提前祝大家新年快乐呀&#xff01;&#xff01;&#xff01;&#xff01; 2022炫酷新…

开放API接口

1.新闻API 2.热门小说推荐列表API 3.小说搜索API&#xff1a;https://www.apiopen.top/novelSearchApi?name小说名称 示例&#xff1a;搜索小说斗罗 4.小说详情API&#xff1a;https://www.apiopen.top/novelInfoApi?name小说名称 示例&#xff1a;搜索小说斗罗大陆前传 5.…

如何做一个简单的开放接口(1)-功能设计

1、缘起 最初&#xff0c;系统系统间都是孤立的。业务是贯穿的&#xff0c;系统间也必然需要交互数据。 实现数据交互的方式有好多种&#xff0c;可以通过ftp交互Excel文件&#xff0c;可以通过互相读写的中间库&#xff0c;可以通过Web Services。 系统间可能是点对点交互&…

开放API接口安全设计

前言 随着项目前后端分离的火热&#xff0c;后台开发的重点主要是对外提供接口&#xff0c;那么API接口的安全就是要考虑的问题。前后端分离和传统的开发模式有很大的差异&#xff0c;本文将针对以下问题进行探讨&#xff1a; 前后分离和传统项目的区别为什么前后分离需要关注…

开放接口使用积累

个推(消息推送) 官网: http://www.igetui.com/ Demo 快速入门说明; 步骤: 用自己的开发者账号登陆个推,进入控制界面;在左侧菜单中选择 " 应用管理 > 应用管理 > 登记新应用" 在 "应用名称" 和 "应用标识" 中填入相应内容; 名称随便取,标…

对外开放的接口验证方式

接口安全问题 请求身份是否合法&#xff1f;请求参数是否被篡改&#xff1f;请求是否唯一&#xff1f; AccessKey&SecretKey &#xff08;开放平台&#xff09; 请求身份 为开发者分配AccessKey&#xff08;开发者标识&#xff0c;确保唯一&#xff09;和SecretKey&…