JavaScript实现星空背景

这里主要就是利用浏览器的视口宽高(网页可视区的宽高)来实现

大致思路如下:

1.搭架子

        * {
            margin: 0;
            padding: 0;
        }
        
        html,
        body {
            width: 100%;
            height: 100%;
            background: #000;
            overflow: hidden;
        }
        
        span {
            display: inline-block;
            width: 30px;
            height: 30px;
            background: url("images/star.png") no-repeat;
            background-size: 100% 100%;
            animation: flash 1s alternate infinite;
            position: absolute;
        }
        
        @keyframes flash {
            from {
                opacity: 0;
            }
            to {
                opacity: 1;
            }
        }
        
        span:hover {
            transform: scale(3, 3) rotate(180deg) !important;
            transition: all 1s;
        }
<span></span>

 

2.动态创建

首先就要删除上面的html结构里的span

具体步骤:

1.获取网页可视区的宽高

2.动态创建小星星,

  • 创建小星星
  • 随机小星星的位置
  • 随机小星星的缩放比例
  • 随机显示/隐藏动画
        //1.获取网页可视区的宽高
        let {
            width,
            height
        } = getScreen();

        //2.动态创建小星星
        for (let i = 0; i < 200; i++) {
            //1.创建小星星
            let oSpan = document.createElement("span");
            document.body.appendChild(oSpan);

            //2.随机小星星的位置
            let x = Math.random() * (width - 30);
            let y = Math.random() * (height - 30);
            oSpan.style.left = x + 'px';
            oSpan.style.top = y + 'px';

            //3.随机小星星的缩放比例
            let scale = Math.random() * 2;
            oSpan.style.transform = `scale(${scale},${scale})`;

            //4.随机显示/隐藏动画
            let time = Math.random() * 2;
            oSpan.style.animationDelay = time + 's';
        }

        function getScreen() {
            let width, height;
            if (window.innerWidth) {
                width = window.innerWidth;
                height = window.innerHeight;
            } else if (document.compatMode === "BackCompat") {
                width = document.body.clientWidth;
                height = document.body.clientHeight;
            } else {
                width = document.documentElement.clientWidth;
                height = document.documentElement.clientHeight;
            }
            return {
                width: width,
                height: height
            }
        }

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白小白从不日白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值