如何利用CSS3+less制作酷炫的星空动画效果
Admin 2022-06-18 群英技术资讯 1453 次浏览
今天这篇我们来学习和了解“如何利用CSS3+less制作酷炫的星空动画效果”,下文的讲解详细,步骤过程清晰,对大家进一步学习和理解“如何利用CSS3+less制作酷炫的星空动画效果”有一定的帮助。有这方面学习需要的朋友就继续往下看吧!本文介绍了css3进阶之less实现星空动画的示例代码,分享给大家,具体如下:
效果动图如下:
知识点预览
这篇文章的 less技巧 + css技巧 知识点包括:
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;
}
所以我们总结出来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个参数
假如我们调用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) }
}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了canvas如何实现多张图片编辑的图片编辑器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
干什么用的? 离线缓存为的是第一次请求后,根据manifest文件进行本地缓存,并且在下一次请求后进行展示(若有缓存的话,无需再次进行请求而是直接调用缓存),最根本的感觉是它使得WEB从online可以延伸到了offline领域。应用场景h5游戏及一些页面内容不经常会变动,相对较为固定的内容。一、基本概念离线缓存是HTML5新引入的技术,能够让你的Web应用程序指定哪些文件可以缓存在本地,使
这篇文章主要介绍了CSS实现子元素div水平垂直居中的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
在css中,可以利用“z-index”属性将图片置于元素最上面,该属性用于设置元素的堆叠顺序,属性的值越大,元素显示的顺序也就越靠前,语法为“图片元素{z-index:number;}”。
怎么使用SVG给 favicon 添加标识?下面本篇文章给大家介绍一下使用 SVG 生成带标识的 favicon的方法,希望对大家有所帮助!
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008