• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

js+css3简易实现2023新年快乐全屏满天星动画特效

武飞扬头像
儒雅的烤地瓜
帮助1

目录

⭐ 前言

一、效果图

二、代码实现 

2.1 html

2.2 CSS

2.3. JS

⭐ 预览


⭐ 前言

js css3全屏星星闪烁背景2023新年快乐动画特效,文字还有3D立体效果。其中,利用Math.random()方法,实现满天星的效果,着实让人眼前一亮。对于某些站点来说,这个方法非常实用,因为可以利用它来随机显示一些名人名言和新闻事件。

好了,话不多说,先看效果图,如下:

一、效果图

学新通

二、代码实现 

2.1 html

* index.html

  1.  
    <!DOCTYPE html>
  2.  
    <html lang="en">
  3.  
    <head>
  4.  
    <meta charset="UTF-8" />
  5.  
    <title>js css3全屏2023新年快乐动画特效</title>
  6.  
    <link rel="stylesheet" href="css/style.css" />
  7.  
    </head>
  8.  
    <body>
  9.  
    <section class="section">
  10.  
    <h2 class="section__title">Happy New Year<br /><span>2023</span></h2>
  11.  
    </section>
  12.  
    <script src="js/script.js"></script>
  13.  
    </body>
  14.  
    </html>

2.2 CSS

* style.css

  1.  
    * {
  2.  
    /* 采用怪异模式下的盒模型:元素的总高度和宽度包含内边距和边框(padding与border) */
  3.  
    box-sizing: border-box;
  4.  
    margin: 0;
  5.  
    padding: 0;
  6.  
    }
  7.  
     
  8.  
    body {
  9.  
    /* 没有滚动条 */
  10.  
    overflow: hidden;
  11.  
    }
  12.  
     
  13.  
    .section {
  14.  
    display: flex;
  15.  
    justify-content: center;
  16.  
    align-items: center;
  17.  
    position: relative;
  18.  
    min-height: 100vh;
  19.  
    background: linear-gradient(135deg, #111, #222, #111);
  20.  
    }
  21.  
    .section::before {
  22.  
    content: "";
  23.  
    position: absolute;
  24.  
    width: 30vw;
  25.  
    height: 30vw;
  26.  
    /* 红色边框 */
  27.  
    border: 5vw solid #ff1062;
  28.  
    /* 圆形边框 */
  29.  
    border-radius: 50%;
  30.  
    /* 为边框添加2个下拉阴影 */
  31.  
    box-shadow: 0 0 0 1vw #222, 0 0 0 1.3vw #fff;
  32.  
    }
  33.  
    .section .section__title {
  34.  
    position: absolute;
  35.  
    transform: skewY(-7deg);
  36.  
    z-index: 10;
  37.  
    color: #fff;
  38.  
    text-align: center;
  39.  
    font-size: 9vw;
  40.  
    line-height: 2em;
  41.  
    text-shadow: 1px 1px 0 #ccc, 2px 2px 0 #ccc, 3px 3px 0 #ccc, 4px 4px 0 #ccc,
  42.  
    5px 5px 0 #ccc, 10px 10px 0 rgba(0, 0, 0, 0.2);
  43.  
    animation: floating 5s ease-in-out infinite;
  44.  
    }
  45.  
    .section .section__title span {
  46.  
    text-shadow: 1px 1px 0 #ccc, 2px 2px 0 #ccc, 3px 3px 0 #ccc, 4px 4px 0 #ccc,
  47.  
    5px 5px 0 #ccc, 6px 6px 0 #ccc, 7px 7px 0 #ccc, 8px 8px 0 #ccc,
  48.  
    9px 9px 0 #ccc, 20px 20px 0 rgba(0, 0, 0, 0.2);
  49.  
    font-weight: 700;
  50.  
    font-size: 3em;
  51.  
    }
  52.  
    .section i {
  53.  
    position: absolute;
  54.  
    background: #fff;
  55.  
    border-radius: 50%;
  56.  
    box-shadow: 0 0 10px #fff, 0 0 20px #fff, 0 0 40px #fff, 0 0 80px #fff;
  57.  
    animation: animate linear infinite;
  58.  
    }
  59.  
     
  60.  
    @keyframes floating {
  61.  
    0%,
  62.  
    100% {
  63.  
    transform: skewY(-7deg) translate(0, -20px);
  64.  
    }
  65.  
    50% {
  66.  
    transform: skewY(-7deg) translate(0, 20px);
  67.  
    }
  68.  
    }
  69.  
    /* 利用透明度设置星星明暗变化的动画效果 */
  70.  
    @keyframes animate {
  71.  
    0% {
  72.  
    opacity: 0;
  73.  
    }
  74.  
    10% {
  75.  
    opacity: 1;
  76.  
    }
  77.  
    90% {
  78.  
    opacity: 1;
  79.  
    }
  80.  
    100% {
  81.  
    opacity: 0;
  82.  
    }
  83.  
    }

2.3. JS

* script.js

  1.  
    const stars = () => {
  2.  
    const count = 200;
  3.  
    const section = document.querySelector('.section');
  4.  
    let i = 0;
  5.  
    while (i < count) {
  6.  
    // 在内存中创建一个新的空元素对象,如i或是div
  7.  
    const star = document.createElement('i');
  8.  
    // 定义变量x和y :通过Math.random()方法随机的使星星出现在不同位置,当然星星的定位要在文档显示区内
  9.  
    const x = Math.floor(Math.random() * window.innerWidth);
  10.  
    const y = Math.floor(Math.random() * window.innerHeight);
  11.  
    const size = Math.random() * 4;
  12.  
    // 让星星始终会在网页最左最顶端出现,通过想x和y的定位,我们要让它出现在页面各个不同的位置
  13.  
    star.style.left = x 'px';
  14.  
    star.style.top = y 'px';
  15.  
    // 利用Math.random()这个方法来随机取星星的大小:为每颗星星设置随机的宽高范围为[0,5)
  16.  
    star.style.width = 1 size 'px';
  17.  
    star.style.height = 1 size 'px';
  18.  
     
  19.  
    const duration = Math.random() * 2;
  20.  
     
  21.  
    // 设置持续时间
  22.  
    // js中除了减法计算之外,不允许随便写-。因为会混淆。所以,DOM标准规定,所有带-的css属性名,一律去横线变驼峰
  23.  
    // css属性animation-duration,在js中改写为驼峰形式:animationDuration
  24.  
    star.style.animationDuration = 2 duration 's';
  25.  
    // 设置延迟
  26.  
    star.style.animationDelay = 2 duration 's';
  27.  
    // 将新元素添加到DOM树:把新创建的节点追加到父元素下所有直接子元素的结尾
  28.  
    section.appendChild(star);
  29.  
    i ;
  30.  
    }
  31.  
    }
  32.  
    // 调用函数
  33.  
    stars();

🔥 关于Math.radom()方法

这里主要利用JavaScript的内置对象Mach的一个radom()方法制作满天星。Math.random()方法返回大于等于 0 小于 1 的一个随机数。也就是说,Math.radom()可以获得一个0.0到1.0的随机double值,不包括1.0,即[0.0,1.0)。

下面我们可以简单了解一下js的内置对象Math。Math 和其他的对象不同,它不是一个构造函数,不需要创建对象。所以,我们不需要通过 new 来调用,而是直接使用里面的属性和方法即可。

Math属于一个工具类,里面封装了数学运算相关的属性和方法。如下:

学新通

⭐ 预览

Github仓库 | Demo预览 🌐 Gitee仓库 | Demo预览 

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgehkef
系列文章
更多 icon
同类精品
更多 icon
继续加载