本文详细介绍如何利用原生JavaScript结合CSS3动画属性,快速实现一个具有纵深感且动态飞行的星空背景效果。通过生成随机坐标与颜色,利用boxShadow绘制大量星点,并配合关键帧动画营造视觉冲击。
JS与CSS3实现动态星空背景教程
本文分享了一段使用JavaScript实现精美星空背景的具体代码示例,供读者参考学习。
HTML结构部分代码如下:
<div class="stars"></div>
CSS样式设置如下:
html, body {
height: 100%;
overflow: hidden;
}
body {
width: 100%;
height:100%;
background: #000;
background-size: 100%;
perspective: 500px;
}
.stars {
position: absolute;
top: 50%;
left: 50%;
width: 4px;
height:4px;
-webkit-border-radius:50%;
-moz-border-radius:50%;
border-radius:50%;
animation: fly 2s linear infinite;
transform-style: preserve-3d;
}
.stars:before, .stars:after {
content: "";
position: absolute;
width: inherit;
height: inherit;
box-shadow: inherit;
}
.stars:before {
transform: translateZ(-300px);
opacity: .6;
}
.stars:after {
transform: translateZ(-600px);
opacity: .4;
}
@keyframes fly {
from {
transform: translateZ(0px);
opacity: .6;
}
to {
transform: translateZ(300px);
opacity: 1;
}
}
JavaScript逻辑代码如下:
var w = document.documentElement.clientWidth*1.2;
var h = document.documentElement.clientHeight*1.2;
var star = document.getElementsByClassName("stars")[0];
var n = 1000;
//随机函数
function randomNum(m, n) {
return Math.floor(Math.random() * (n - m + 1) + m);
}
var str = '';
for (var i = 0; i < n; i++) {
var numX = randomNum(-w, w);
var numY = randomNum(-h, h);
var color = 'rgb(' + randomNum(0, 255) + ',' + randomNum(0, 255) + ',' + randomNum(0, 255) + ')';
str += numX +'px'+' ' + numY+'px'+' '+ color+',';
}
str = str.slice(0,-1);
star.style.boxShadow = str;
$(function(){
$('#main').fadeOut();
$('#main').fadeIn('slow');
})
以上即为本文的全部内容,希望这段代码能对各位的学习有所帮助,同时也欢迎大家继续支持本站。