效果动图如下:

预览链接和代码在我的codepen:https://codepen.io/lio-mengxiang/pen/YzKrEde

知识点预览

这篇文章的less技巧 + css技巧知识点包括:

less如何写循环

less里如何使用js表达式

css3属性: box-shadow如何生成成百上千的星星

css3属性: background: radial-gradient径向渐变,如何生成渐变的背景色

HTML文档结构

首先html文件结构很简单,如下:

第一步: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;}

效果如下

// 比如以下属性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结构如下

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试试效果哦,嘿嘿

我们在虚拟的空间与你相遇,期待可以碰撞出不一样的火花

公众号ID:前端大联盟

扫码关注最新动态

css星空动画,【css3进阶】less实现星空动画相关推荐

  1. css3.0动画,CSS3.0实现霓虹灯按钮动画特效的示例代码

    今天给大家分享一个用CSS 3.0实现的霓虹灯按钮动画特效,效果如下: 以下是代码实现,欢迎大家复制粘贴和收藏. CSS 3.0实现霓虹灯按钮动画特效 * { font-family: '微软雅黑', ...

  2. html5 云朵飘动效果,CSS3如何实现飘动的云朵动画 CSS3实现飘动的云朵动画代码

    css3如何实现飘动的云朵动画?本篇文章小编给大家分享一下CSS3实现飘动的云朵动画代码,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 运行效果 ht ...

  3. android 揭示动画,Android进阶设计 | 使用揭露动画(Reveal Effect)做一个丝滑的Activity转场动画...

    提笔之际(附总体思路) 最近跟几个小伙伴在实践一个项目,考虑到界面效果,我们决定使用揭露动画作为Activity的转场动画. 这里主要是我负责这部分的实现. 话说之前是没接触过的,关于具体的实现跟大体 ...

  4. css情景动画,CSS3 白天/黑夜场景轮回动画

    CSS 语言: CSSSCSS 确定 html { height: 100%; } body { overflow: hidden; -webkit-animation: dn 10s; -webki ...

  5. html css 奥运五环,CSS3 奥运五环加载动画

    CSS 语言: CSSSCSS 确定 html { height: 100%; } body { display: -webkit-box; display: -webkit-flex; displa ...

  6. 纯CSS3炫酷3D星空动画特效

    效果: 源码: <!DOCTYPE html> <html lang="zh"> <head><meta charset="UT ...

  7. css3、less实现星空动画案例

    效果如图: 技术点预览: CSS3背景径向渐变 less实现循环 近大远小原理制造空间感 CSS3关键帧动画 HTML文档结构 <!DOCTYPE html> <html lang= ...

  8. css拉伸动画,CSS3 matrix双板划水、拉伸、打板动画实例animation

    matrix 在 CSS3 中用于制作对象的矩阵效果,把处于不同的状态的矩阵连接起来就变成了动画.单用 matrix 制作动画尽管变化形式不多,但组合合理一样可以制作出新颖的动画. 以下就用 matr ...

  9. html 纯css设置转圈,CSS3 转圈彩色文字动画实例及animation-play-state属性规则

    网页中的动画通常是当鼠标移到上面,动画立即停止,便于用户阅读:CSS3新增的制作动画属性也考虑到这个问题,只要作了相应的设置,鼠标移到上面,动画也会停止,移开鼠标,动画继续运动:这主要通过animat ...

  10. html 穿越星空效果,html5 canvas绚丽3d星空飞行穿梭动画特效

    简要教程 这是一款使用 html5 canvas和 jQuery 制作的绚丽3d星空飞行穿梭动画特效.该3d星空飞行特效模拟了飞船在宇宙星空中快速穿梭的动画场景,效果非常逼真. HTML结构 HTML ...

最新文章

  1. avenue在科研文章中的意思
  2. 富文本编辑器宽度自适应及取消自动保存功能
  3. 通俗理解决策树算法中信息增益的
  4. [Hadoop in China 2011] HBase在淘宝平台上的应用和改进经验
  5. 使用jfreechart来创建一个简单的饼图
  6. ntnub原理怎么看_电锤只转不冲击怎么回事?看懂了工作原理,你也可以动手解决...
  7. linux brew 安装mysql_mac下通过brew安装mysql
  8. java中ejb项目_创建EJB项目
  9. 如何用Scapy写一个端口扫描器?
  10. React学习之旅Part7:React绑定事件和使用setState()修改state的数据、React实现双向数据绑定
  11. python 加注拼音-python汉字注音
  12. R语言-面板数据分析步骤及流程-
  13. 关于t00ls的挂机脚本
  14. 修复版动态视频壁纸微信小程序源码下载,支持多种类型流量主收益
  15. ClickHouse基本语法及常见存储引擎
  16. QModel-BIM-Revit模型轻量化产品介绍
  17. 新人必看的机器人制作过程
  18. 美团酒旅实时数据规则引擎应用实践
  19. iOS及Mac开源资料
  20. 网络和网路互联的设计

热门文章

  1. 【摘要】HinDroid:一个基于异质图的安卓恶意软件智能检测系统
  2. 【第80篇】Lion:优化算法的符号发现
  3. vue通过postMessage实现iframe自适应高度,支持跨域
  4. 简单的代码就能实现动画滚动?
  5. Windows7内置搜索,同时搜索文件名以及文件里面的内容
  6. windows下部署多个解压缩包版本的MySql5.7步骤及解决办法
  7. linux 内核 fget,linux中gets()函数和fgets()函数
  8. 高效时间管理-介绍GTD (Get Thing Done)
  9. 精准识别文字信息:通用文本识别算法整理
  10. 左手代码右手画笔?元宇宙未来职业NO.001#艺术黑客