本文介绍了css3进阶之less实现星空动画的示例代码,分享给大家,具体如下:
效果动图如下:
预览链接和代码在我的codepen: https://codepen.io/lio-mengxiang/pen/YzKrEde
知识点预览
这篇文章的 less技巧 + css技巧 知识点包括:
- less如何写循环
- less里如何使用js表达式
- css3属性: box-shadow如何生成成百上千的星星
- css3属性: background: radial-gradient径向渐变,如何生成渐变的背景色
HTML文档结构
首先html文件结构很简单,如下:
<div> <div id="start1"></div> <div id="start2"></div> <div id="start3"></div> </div>
第一步:radial-gradient生成渐变背景
设置在html和body标签上
* { padding: 0; margin: 0; } html, body { background: radial-gradient(ellipse at bottom, #1B2735 0%, #090A0F 100%); overflow: hidden; height: 100%; }
效果如下:
为了对比一下我画的不是纯黑色背景图,接着放一张纯黑色的图来对比一下,可以看出来上图没有那么黑,有点偏灰
这里radial-gradient参数介绍
ellipse 表明我是用的椭圆渐变,你看下图就知道怎么用了
// 上图的参数是 radial-gradient(ellipse,#ffffff, #6a6a6a)
也就是颜色是白色#ffffff到灰色#6a6a6a的椭圆渐变
at bottom 这是表明椭圆渐变的圆心在底部,请看下图具体效果:
// 上图的参数是 radial-gradient(ellipse at bottom,#ffffff, #6a6a6a)
好了,到了这一步,渐变我们就完成了
第二步:box-shadow如何生成成百上千的星星
首先我们要解决3个问题,第一个是如何用less写循环,请看如下less代码 ( 详细解释在代码下面 )
2.1 less如何实现循环
举例如下:
.loop(@counter) when(@counter > 0) { .h@{counter} { padding: (10px*@counter); } .loop((@counter - 1)); //递归调用自身 } div{ .loop(5); } //编译输出 div .h5 { padding: 50px; } div .h4 { padding: 40px; } div .h3 { padding: 30px; } div .h2 { padding: 20px; } div .h1 { padding: 10px; }
- .loop(@counter) when(@counter > 0) 是less里面的函数,意思是定义了一个loop函数
- @counter是传入函数的变量
- when(@counter > 0) 意思是当变量的值@counter > 0的时候,这个函数才会执行
- .loop((@counter - 1))这是递归调用
所以我们总结出来less实现循环的办法就是递归调用定义的函数
接着解决第二个问题,就是如何在less里面写JS表达式
2.2 如何在less里面写JS表达式
.loop(@counter) when(@counter > 0) { padding: ~`@{counter} + Math.round(2.4)`; .loop(@counter - 1); //递归调用自身 } div{ .loop(2); } // 生成代码如下 div { padding: 4; padding: 3; }
所以我们总结出来在less里面使用js表达式的方法就是用~开头,然后``包裹表达式
接着解决第三个问题,就是如何用box-shadow属性生成 成百上千的星星
2.3 如何用less循环在box-shadow属性上生成 成百上千的星星
这些星星其实就是正方形的小点,我们先生成4个正方形小点
// div { width:10px; height:10px; box-shadow: 10px 0px #9bcded, 50px 0px #9bcded, 10px 40px #9bcded, 50px 40px #9bcded; }
效果如下
这里使用了box-shadow多个值来生成正方形
// 比如以下属性10px 0px #9bcded 表示,在相对于div元素x轴10px,y轴0px处有一个#9bcded颜色的小点 // 因为div本身是width 10px height 10px 是一个正方形,所以它的box-shadow也是正方形 box-shadow: 10px 0px #9bcded, width:10px; height:10px;
接着,我们要结合less循环在box-shadow上生成更多的方块(星星):
// 首先定义个mixin函数,参数是@n, 条件是只有@n > 0的时候才执行函数里的代码 .mixin(@n) when(@n > 0) { box-shadow+ : ~`Math.round(Math.random() * 2000) + 'px' + ' ' +Math.round(Math.random() * 2000) + 'px #FFF' `; .mixin((@n - 1)); }
上面函数主要是box-shadow中,主要包括3个参数
- 生成了x轴是0-2000随机数的值(Math.round(Math.random() * 2000) + 'px')
- 生成了y轴是0-2000随机数的值(Math.round(Math.random() * 2000) + 'px #FFF' `)
- 颜色是#FFF
假如我们调用mixin(100),就生成了在2000 * 2000的背景上 100个白色方块(星星)
第三步:结合html,生成星星
之前html结构如下
<div> <div id="start1"></div> <div id="start2"></div> <div id="start3"></div> </div>
less如下:
// start1生成了长1px,宽1px的星星700个,这是小星星 // 小星星代表距离远的星星,大星星代表距离近的,这样就有了空间感 #start1 { .mixin(700); width: 1px; height: 1px; animation: animStar 50s linear infinite; animation-delay:-10s; } // start2生成了长2px,宽2px的星星200个 #start2 { .mixin(200); width: 2px; height: 2px; animation: animStar 100s linear infinite; animation-delay:-8s; } // start3生成了长3px,宽3px的星星100个 #start3 { .mixin(100); width: 3px; height: 3px; animation : animStar 150s linear infinite; animation-delay:-5s; } // 动画效果如下 @keyframes animStar { from { transform: translateY(0px) } to { transform: translateY(-2000px) } }
本文完结,可以自己去codepen试试效果哦,嘿嘿
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 《山羊模拟器重制版》发售平台说明
- 刘德华2002-美丽的一天[香港首批大包装首版][WAV]
- 刘文正《金装刘文正不朽经典金曲》2CD(1995环星)][WAV+CUE]
- 周慧敏《94美的化身演唱会》宝丽金1995港版2CD[WAV+CUE]
- 娃娃.1997-精选180绝版冠军精丫滚石】【WAV+CUE】
- 娃娃.1997-精选290巅峰情歌经典【滚石】【WAV+CUE】
- 王忆灵.2024-枯萎颂【FLAC分轨】
- 林墨《绿色的风》[320K/MP3][22.6MB]
- 林墨《绿色的风》[FLAC/分轨][98.61MB]
- 群星《奥运加油热歌精选》[320K/MP3][87.73MB]
- 2024的炼金龙魂是什么效果 英雄联盟炼金龙魂效果介绍
- lol全球总决赛2024冠军是哪个队伍 2024全球总决赛冠军介绍
- 英雄联盟zofgk是什么意思 英雄联盟zofgk解释一览
- 如何评价《剑星》联动《尼尔》新服装、照相模式?
- 华沙保时捷经销商展出911Turbo:强尼银手同款