如何使用less实现随机下雪动画详解

冬天来了,设计师说摇摇乐的场景需要随机下落的雪花动画,第一时间就想到的方法是canvas比较好,项目非常紧急,然而小程序对canvas支持不够友好,容易在项目中出现无法预估的兼容性问题 ,马上又否定了这种想法,想了想用javascript来写随机动画成本又高。既不用canvas也不用javascript来实现,最终决定使用css预处理器less来实现随机雪花,less怎么可能实现随机雪花?对于喜欢写css的人来说,这非常有趣。【推荐教程:css教程】

微信截图_20190122154841.png

上图的雪花效果还蛮炫酷吧,怎么实现呢?less因为有以下的2个特点,可以尝试使用它来实现我们的场景

1.递归调用

实际上less并没有自带类似javascript的for循环的功能,但less可以用过引导when来实现条件判断,简单的方法也可以让聪明的程序员简单实现递归调用

.snow(@n) when (@n > 0) { fn()//生成雪花函数fn( .snow((@n - 1));//再次执行函数fn() }.snow(60);//执行次数

2.避免编译JavaScript 表达式

雪花需要生成的随机数,我们需要运用javascript表达式嵌入到less代码,同时也要避免javascript表达式被less错误的编译,我们需要了解两个点。

一些 LESS不认识的专有语法,可以在字符串前加上一个 ~,

JavaScript 表达式在less 文件中使用,可以通过反引号的方式使用

于是有了如下随机位移、随机时间、随机大小的代码

于是有了如下的Less代码,具体怎么实现请留意详细的代码注释
以下less代码使用构建后可生产一份随机css固定雪花文件,决定了每一个雪花有不同的大小、水平位移、垂直位移、出场位置、出场时间,不同的雪花大小,不同的下落速度,用肉眼看到的雪花就像是随机的,可以在项目上线前尝试多构建几次,得到一份均匀分布在窗口的随机雪花。

* { padding: 0; margin: 0;}html, body { height: 100%;}//浏览器窗口宽度@windowWidth: 750;//雪花.snow { &_wrap{ position: relative; width: ~"@{windowWidth}px"; height: 100%; overflow: hidden; background: rgba(14,99,69,1); margin: 0 auto; } //雪花初始化大小 position: absolute; width:20px; height: 20px; &:after{ content: ''; position: absolute; left:0; top:0; width:20px; height: 20px; background-color:#fff; opacity:1; border-radius: 100%; filter:blur(5px);//此处使用css3滤镜来画雪花 }}//随机雪花函数.snow(@n) when (@n > 0) { .snow_@{n}{ //水平方向上的位移 left: ~"`Math.round(Math.random() * @{windowWidth})`px"; //动画运行时间8~12秒,保证雪花有不同的移动速度 animation: ~"snowani_@{n} `(-Math.random() * 4 + 8).toFixed(2)`s linear infinite"; //动画提前出场时间,也就是垂直方向上位移 animation-delay: ~"`(-Math.random() * 8 + 0.2).toFixed(2)`s"; &:after{  //雪花大小随机,0.5~1.2  transform: ~"scale(`(Math.random() * 0.7 + 0.5).toFixed(2)`)"; } } @keyframes ~"snowani_@{n}" { 0%{  transform: translateY(0); } 100%{  //垂直方向上高度,保证雪花有不同的移动速度  transform: ~"translateY(`Math.round(Math.random() * 200 + 1600)`px)"; } } .snow((@n - 1));}.snow(60);//生成雪花的数量

把上面的雪花的代码构建后如下:

13661853-e09bb0c194c3f663.gif

还有HTML,一行代码的事情

在编辑器中安装好emmet或webstorm开启emmet后,输入下面代码按下ctrl+e快捷键即可生成60个不同命名的雪花标签

2.gif

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流。

以上就是如何使用less实现随机下雪动画详解的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1614002.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 04:00:47
下一篇 2025年12月24日 04:01:02

相关推荐

  • Less是什么

    Less是一种CSS的扩展和动态样式表语言,CSS预处理器,可以在客户端或服务器端运行,帮助我们自定义,管理和重用网页的样式表;Less是一种开源语言,也是跨浏览器兼容的语言。 本文操作环境:Windows7系统、Dell G3电脑、css3。 本篇文章主要给大家介绍Less是什么?让大家了解Les…

    2025年12月24日
    000
  • CSS与Sass开发规范

    这次给大家带来CSS与Sass开发规范,使用CSS与Sass开发规范的注意事项有哪些,下面就是实战案例,一起来看一下。 ID and class naming ID和class(类)名总是使用可以反应元素目的和用途的名称,或其他通用名称。代替表象和晦涩难懂的名称。 应该首选具体和反映元素目的的名称,…

    好文分享 2025年12月24日
    000
  • css3中calc在less编译时怎样不被计算

    这次给大家带来css3中calc在less编译时怎样不被计算,css3中calc在less编译时不被计算的注意事项有哪些,下面就是实战案例,一起来看一下。 对于前端er来说,Less或Sass已经是一项必备的基本技能,有了这个利器,可以省下前端开发者的很多编码时间,让你写CSS如行云流水一般,然后最…

    好文分享 2025年12月24日
    000
  • 预处理器Sass如何使用

    这次给大家带来预处理器Sass如何使用,使用预处理器Sass的注意事项有哪些,下面就是实战案例,一起来看一下。 Sass 是一款强化 CSS 的辅助工具,它在 CSS 语法的基础上增加了变量 (variables)、嵌套 (nested rules)、混合 (mixins)、导入 (inline i…

    好文分享 2025年12月24日
    000
  • 详解Less框架中将CSS强制打包到单个文件中的技巧

    在使用less预编译框架时我们总是希望能高效管理css文件的部署结构,这里我们就来看一个在less框架中将css强制打包到单个文件中的技巧,需要的朋友可以参考下 less 在import 其它less文件的时候会将其合并到单个文件中。但是当引入css 文件时,默认不会将css 合并进来 。使用inl…

    好文分享 2025年12月23日
    000
  • CSS预处理器之Less详解

    CSS 预处理器 为什么要有 CSS 预处理器 css基本上是设计师的工具,不是程序员的工具。在程序员的眼里,css是很头痛的事情,它并不像其它程序语言,比如说php、javascript等等,有自己的变量、常量、条件语句以及一些编程语法,只是一行行单纯的属性描述,写起来相当的费事,而且代码难以组织…

    好文分享 2025年12月21日
    000
  • CSS的SASS样式应该怎么使用

    这次给大家带来css的sass样式应该怎么使用,css的sass样式使用的注意事项有哪些,下面就是实战案例,一起来看一下。 随着越来越多的开发者使用SASS,我们有必要关注一下SASS的代码的个数问题。 我们可以从CSS(层叠样式表)的语法出发,来解释SASS语法的一些特别之处,毕竟,CSS样式指南…

    好文分享 2025年12月21日
    000
  • PHP 函数如何协助建立服务器less 的架构?

    通过 php 函数打造精简服务器架构:使用 lambda 函数创建无服务器 api。利用 ampq 函数与消息队列交互。通过 swoole 扩展进行异步处理。 利用 PHP 函数打造精简、轻量化的服务器架构 在现代网络应用程序中,打造轻量化、高效且可扩展的架构至关重要。PHP 提供了一系列函数,可以…

    2025年12月10日
    000
  • css工具Sass与Less区别如何选择

    Sass功能更强大且生态广泛,适合复杂项目和长期维护;Less语法贴近CSS,上手快,适合简单项目或老系统维护。 在前端开发中,Sass 和 Less 都是主流的 CSS 预处理器,它们让样式编写更高效、结构更清晰。选择哪一个,主要看项目需求、团队习惯和生态支持。 语法差异:Sass 更灵活,Les…

    2025年12月2日 web前端
    000
  • VSCode中如何省略配置来快速使用Less

    本篇文章给大家介绍一下vscode中省略配置的使用less的方法,希望对大家有所帮助! Less 前端页面的制作过程中,如果页面内元素较多,并且层级结构较为复杂,会导致我们写出来的CSS特别的冗余,并且不容易进行维护。【推荐学习:《vscode教程》】 所以对于CSS也有不少的扩展,比如Less,S…

    2025年11月10日
    000
  • linux less命令详解

    linux less命令详解 less工具是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。 less里拥有更多的搜索功能,不止可以向下搜,也可以向上搜。而且 less 在查看之前不会加载整个文件。 1.命令格式: less [参数] 文件 2.命令功能:…

    2025年11月5日 运维
    000

发表回复

登录后才能评论
关注微信