用CSS实现超美星空特效

简介: 最近真是越来越对CSS感兴趣了,于是再来整一手,夜晚的星星,再配合上皎洁的月光,这唯美的星空,它来了!今天带领大家,用CSS实现一下,这美丽的星空。
大家好,我是Ned👀,一个刚刚入门前端未满两年的大三小学生🌹

未来路还长🎉, 一起努力加油吧❤~

前言

最近真是越来越对CSS感兴趣了,于是再来整一手,夜晚的星星,再配合上皎洁的月光,这唯美的星空,它来了!

今天带领大家,用CSS实现一下,这美丽的星空。

开始实现星空

image.png
我是找了张图片,这毕竟功力有限,目前还不能人造星~,下面说一下如何将它放置在夜空中,并实现眨眼睛的效果:

运用了一个span标签,将此图片作为其背景图,来生成星星:

var screenW = document.documentElement.clientWidth;
var screenH = document.documentElement.clientHeight;
for(var i=0; i<150; i++){
    var span = document.createElement('span');
    document.body.appendChild(span);
    var x = parseInt(Math.random() * screenW);
    var y = parseInt(Math.random() * screenH);
    span.style.left = x + 'px';
    span.style.top = y + 'px';
    span.style.zIndex = "0";
    var scale = Math.random() * 1.5;
    span.style.transform = 'scale('+ scale + ', ' + scale + ')';
}

先获取屏幕宽高,完后用上随机数使得星星的位置随机,大小随机,频率随机。

image.png

会眨眼睛的才是好星星

星星还要是一眨一眨的,才好看,所以我们给它加上一个动画,更改其的透明度就好:

@keyframes flash {
    0%{opacity: 0;}
    100%{opacity: 1;}
}

但是我们很快发现一个问题,就是它太过于整齐划一:
整齐划一.gif

我们在生成星星的时候,给它每一个的延迟频率随机一下,这样就能保证它们有一种参差错落的感觉。

var rate = Math.random() * 1.5;
span.style.animationDelay = rate + 's';

现在来看看我们美丽的星空吧~:

星空.gif

最后再给星星加一个hover效果,将其放大一点,完后旋转个180

span:hover{
    transform: scale(3, 3) rotate(180deg) !important;
    transition: all 1s;
}

hover.gif

开始实现月亮

一个美丽的夜晚,天空中除了星星,应当还有月亮:月亮主要是两个动画,一个是从左下往右上移动,达到一个月亮升起的效果,另一个是随着升起,月亮周围的光辉变得越来越亮眼。

做法:将月亮放到一个容器中,用容器来做移动的特效,月亮本身只关注光辉就好。

<div id="wrapper">
        <div id="circle"></div>
</div>
#wrapper {
    position:absolute;
    top:50px;
    left:80%;
    width:200px;
    height:200px;
    margin-left:-100px;
    animation: moonline 5s linear;
}
@-webkit-keyframes moonline {
    0% {top:250px;left:0%;opacity:0;}
    30% {top:150px;left:40%;opacity:0.5;}
    80% {top:50px;left:80%;opacity:1;}
}
#circle {
    position: absolute;
    top: 0;
    left: 0;
    width: 200px;
    height: 200px;
    background-color: #EFEFEF;
    box-shadow:0 0 40px #FFFFFF;
    border-radius: 100px;
    animation:moonlight 5s linear;

}
@-webkit-keyframes moonlight {
    0% {-webkit-box-shadow:0 0 10px #FFFFFF;}
    30% {-webkit-box-shadow:0 0 15px #FFFFFF;}
    40% {-webkit-box-shadow:0 0 20px #FFFFFF;}
    50% {-webkit-box-shadow:0 0 25px #FFFFFF;}
    100% {-webkit-box-shadow:0 0 30px #FFFFFF;}
}

看一下最终效果:

月亮升起.gif

写在最后

如果觉得本文对你有帮助,点个赞支持一下吧❤~

啊没错,这就是整活系列第四弹...不知为何,我感觉这个系列就是一个CSS学习专栏🎐

ps: 想直接获取本文源码的可以关注我的公众号回复:星空特效 领取

相关文章
|
前端开发 JavaScript 开发者
利用 SplitingJS 配合 CSS 实现文字&quot;蠕动&quot;效果
利用 SplitingJS 配合 CSS 实现文字&quot;蠕动&quot;效果
375 2
|
前端开发 JavaScript
HTML+CSS+JAVASCRIPT实现——情人节表白情书
本文主要介绍如何使用HTML三件套来实现制作一封情人节表白情书,富含情谊与爱,打动女生的心灵
748 2
HTML+CSS+JAVASCRIPT实现——情人节表白情书
|
前端开发 容器
面试官:请使用 CSS 实现自适应正方形
面试官:请使用 CSS 实现自适应正方形
501 0
面试官:请使用 CSS 实现自适应正方形
|
JavaScript 前端开发
CSS进阶向--配合Vue动态样式实现“超炫酷”圆环菜单
CSS进阶向--配合Vue动态样式实现“超炫酷”圆环菜单
886 2
CSS进阶向--配合Vue动态样式实现“超炫酷”圆环菜单
|
前端开发 JavaScript
CSS进阶向--纯css实现流光边框(二)
CSS进阶向--纯css实现流光边框(二)
2284 1
CSS进阶向--纯css实现流光边框(二)
|
前端开发 JavaScript 程序员
CSS进阶向--纯css实现流光边框
CSS进阶向--纯css实现流光边框
1994 0
Html+Css实现——时间轴日志
本篇文章,主要讲解一下如何创建一个精美的时间轴日志页面,其中代码里具体的日志内容部分需要自行更改哦!
384 1
Html+Css实现——时间轴日志
|
前端开发 容器
我已经说了5种css居中实现的方式了,面试官竟然说还不够?
这是一篇关于居中对齐方式的总结 开篇之前,先问一下大家都知道几种居中的实现方式? 面试时答出来两三个就不错了,就怕面试官还让你继续说。今天就来总结一下这些居中的方式 使用flex布局设置居中。 使用flex 时也能通过给子项设置margin: auto实现居中。 使用绝对定位的方式实现水平垂直居中。 使用grid设置居中。 使用grid时还能通过给子项设置margin: auto实现居中。 使用tabel-cell实现垂直居中。 还有一种不常用的方法实现垂直居中。 最后还有一种奇葩的方法。容器设置position: relative。孩子设置 top、left、bottom、right都设
170 0
我已经说了5种css居中实现的方式了,面试官竟然说还不够?
|
前端开发
HTML+CSS实现商品介绍模考(以Apple14为案例)
本文以最通俗易懂的语言为读者提供一个经典CSS小案例,商品介绍模块,并且结合时事,以Apple14为案例进行讲解。
181 0
HTML+CSS实现商品介绍模考(以Apple14为案例)
|
前端开发 JavaScript Windows
js实现body背景图自动扩缩 光靠css几乎无法实现这样的效果
js实现body背景图自动扩缩 光靠css几乎无法实现这样的效果
196 0
js实现body背景图自动扩缩 光靠css几乎无法实现这样的效果

热门文章

最新文章