如何使用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实现随机下雪动画详解的详细内容,更多请关注【创想鸟】其它相关文章!

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

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2889162.html

(0)
上一篇 2025年3月10日 21:18:56
下一篇 2025年2月19日 10:59:46

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • css3和less的区别是什么

    区别是:1、Less是一门CSS预处理语言,css是一种用来表现HTML或XML等文件样式的计算机语言;2、less扩展了CSS语言,增加了变量、Mixin、函数等特性;3、css可以被浏览器直接识别,less需要先编译为css。 本教程操…

    2025年3月10日
    200
  • nodeJs安装less及编译less文件为css文件方法实例

    本文主要介绍了使用nodejs来安装less及编译less文件为css文件的方法,在文章末尾给大家补充介绍了通过nodejs将less文件转为css文件的方法,具体内容详情大家通过本文学习吧,希望能帮助到大家。 NodeJs 使用nodej…

    2025年3月8日 编程技术
    200
  • vue-cli 和 sass 的打开方式图文详解

    本文主要通过图文并茂的形式给大家介绍了vue-cli + sass 的正确打开方式,非常不错,具有参考借鉴价值,需要的朋友参考下吧,希望能帮助到大家。 关于在vue-cli搭建的项目中怎么配置sass,网上搜到的基本是这种答案: 但是我认为…

    2025年3月8日 编程技术
    200
  • vue引入css,less遇到的坑和解决方法实例分享

    在使用vux开发手机页面时,引入vux的公共样式less一直报错,通过各种百度,google都没有解决,走了很多弯路。最后才发现钻牛角尖了,可以换一种方法引入。本文主要为大家分享一篇浅谈vue引入css,less遇到的坑和解决方法,具有很好…

    编程技术 2025年3月8日
    200
  • Vue中如何使用Compass

    本文主要和大家介绍了在vue中使用compass的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望能帮助到大家。 写作动机 拖了蛮久的,总算下定决心要给自己写一个个人网站,不仅要看起来狂拽酷炫,技术也要OK,所以趁此机会也将自…

    2025年3月8日
    200
  • less简单实用的案列

    这次给大家带来less简单实用的案列,使用less的注意事项有哪些,下面就是实战案例,一起来看一下。 //这里是一些简单的LESS语法@width:400px;@height:300px;@font_size:12px;@bgColor: …

    编程技术 2025年3月8日
    200
  • SASS的第一次使用

    这次给大家带来SASS的第一次使用,SASS第一次使用的注意事项有哪些,下面就是实战案例,一起来看一下。 SASS初体验 标签(空格分隔): sass scss css 1. 编译环境需要安装Ruby,之后需要打开Start Command…

    2025年3月8日
    200
  • vue项目中怎么使用sass配置

    这次给大家带来vue项目中怎么使用sass配置,vue项目中使用sass配置的注意事项有哪些,下面就是实战案例,一起来看一下。 1、创建一个基于 webpack 模板的新项目 $ vue init webpack myvue 登录后复制 2…

    编程技术 2025年3月8日
    200
  • 在Angular中怎么支持SCSS

    这次给大家带来在Angular中怎么支持SCSS,在Angular中支持SCSS的注意事项有哪些,下面就是实战案例,一起来看一下。 scss介绍 SCSS 是 Sass 3 引入新的语法,其语法完全兼容 CSS3,并且继承了 Sass 的强…

    编程技术 2025年3月8日
    200
  • vue-cli+sass使用详解

    这次给大家带来vue-cli+sass使用详解,vue-cli+sass使用的注意事项有哪些,下面就是实战案例,一起来看一下。 我认为,直接将样式写在每个单文件的里,是十分不明智的做法。且不说node-sass安装过程的各种坑,内嵌的也让组…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论