JavaScript 结合 CSS3 实现动态星星海背景特效

作者:像素漫游

时间:2026-10-23

浏览:195

本文详细介绍如何使用 JavaScript 配合 CSS3 的 @keyframes 和 animation 属性,结合 UnderScore.js 库,动态生成并控制屏幕上的星星元素。通过获取视口尺寸、随机设置透明度、缩放及动画延迟,实现逼真的星星闪烁效果,适合前端交互背景开发参考。

文章目录

星星海特效实现概述

本文通过具体代码示例,展示如何利用 JavaScript 实现动态的星星海背景特效,供读者参考学习。

核心技术知识点

实现该特效涉及以下核心技术点:

首先,利用 CSS 的 @keyframes 规则定义关键帧动画,并通过 animation 属性调用该自定义动画。

其次,使用 opacity 属性控制元素的透明度,其取值范围从 0.0(完全透明)到 1.0(完全不透明)。

第三,应用 CSS 中的 transform 属性来改变元素的形态或位置。

第四,通过 animation-delay 属性设定动画开始前的等待时间。

第五,获取当前屏幕的可视区域尺寸,以确定星星生成的范围。


var 宽 = document.documentElement.clientWidth;
var 高 = document.documentElement.clientHeight;

第六,使用 JavaScript 动态创建 DOM 节点。

第七,将创建的节点追加到指定的父元素中。


appendChild()

第八,借助 UnderScore.js 库提供的 API(通过 _ 调用)来简化随机数生成等操作。

运行效果与代码实现

以下是该特效的实际运行效果展示。

星星海特效实现概述

具体实现代码如下:


<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <script src="UnderScore.js"></script>
 <style>
  *{margin: 0;padding-top: 0}
  body{background-color: #000}
  span{
   width: 30px;
   height: 30px;
   background: url("star.png") no-repeat;
   position: absolute;
   background-size: contain;
   animation: flash 1s alternate infinite;
  }
  @keyframes flash{
   0%{opacity: 0}
   25%{opacity: 0.25}
   50%{opacity: 0.5}
   75%{opacity: 0.75}
   100%{opacity: 1}
  }
  span:hover{
   transform: scale(3, 3) rotate(180deg) !important;
   transition: all 1s;
  }
 </style>
</head>
<body>
<script>
 window.onload = function (ev) {
  // 1. 求出屏幕尺寸
  var screenWidth = document.documentElement.clientWidth;
  var screenHeight = document.documentElement.clientHeight;

  // 2. 动态创建10颗星星
  for (var i = 0; i < 200; i++) {
   // 2.1 创建星星
   var span = document.createElement('span');
   document.body.appendChild(span);

   // 2.2 随即坐标
   var x = parseInt(_.random(0, screenWidth));
   var y = parseInt(_.random(0, screenHeight));
   span.style.left = x +'px';
   span.style.top = y + 'px';

   // 2.3 随机缩放
   var scale = _.random(0, 1.5);
   span.style.transform = 'scale('+scale+','+scale+')';

   // 2.4 频率
   var rate = _.random(0, 1.5);
   span.style.animationDelay = rate + 's';
  }
 }
</script>
</body>
</html>

以上就是本文的全部内容,希望对读者有所帮助,欢迎继续支持本站。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章