红影 发表于 2022-7-11 16:50

来抽奖了(学习黑黑的无序小球代码)


<style>
.waikuang {
      left: -302px;top: 120px;
      width: 1200px;
      height: 640px;
      border: 1px solid;
      overflow: hidden;
         background: #ccc url('https://pic.imgdb.cn/item/62cba912f54cd3f937669e80.jpg') no-repeat center / cover;
         box-shadow: 0 4px 24px #000;
         position: relative;
}
.dongtu {
      position: absolute;
      width: 466px;
      height: 513px;
      left: 363px;
      bottom: 100px;
         
}
#papa {
      left: 27px; bottom: 28px;
      width: 411px;
      height: 280px;
      position: absolute;
}
.ball {
      position: absolute;
      width: 20px;
      height: 20px;
      border-radius: 50%;
      background: #111 linear-gradient(tan,purple);
      transition: all 1s;
}

.waikuang input { border: none; outline: none; opacity: .75; cursor: pointer; }
.waikuang p { margin: 0; padding: 0; }
.playbox { position: absolute; top: 20px; left: 20px; padding: 10px; width: fit-content; font: normal 1em sans-serif; color: red; background: rgba(255,255,255,.25); backdrop-filter: blur(2px); overflow: hidden; box-shadow: 1px 2px 2px #000; text-shadow: 1px 1px 1px #000; z-index: 100; }
#btnplay { width: 30px; height: 30px; border-radius: 50%; }
#btnplay:hover { background: #aaa; color: #ff0000; }

</style>
<div class="waikuang">
       <divclass="dongtu">
       <img alt="" src="https://pic.imgdb.cn/item/62cba953f54cd3f93766ed9e.gif"/>
       <div id="papa">
       <img alt="" src="https://pic.imgdb.cn/item/62cbaa0cf54cd3f93767d59c.png"/>
</div></div>
   <div style="position: absolute; left:50px; top: -50px; width:547px;opacity: .95;">
                <img alt="" src="https://pic.imgdb.cn/item/62357b1e5baa1a80abd5d64a.gif"/></div>
      <div style="position: absolute; right:50px; top: -50px; width:547px;opacity: .95;">
                <img alt="" src="https://pic.imgdb.cn/item/62357b1e5baa1a80abd5d64a.gif"/></div>

<div style="position: absolute; right:20px; bottom: 20px; width:128px;opacity: 1;">
                <img alt="" src="https://pic.imgdb.cn/item/62cbbf8cf54cd3f93783952e.gif"/></div>
       <div class="playbox">
                <p id="geci" style="font-size: 1.0em">LRC Loading ... </p>
                <p style="display: flex; align-items: center; gap: 4px; margin-top: 10px;">
                        <input id="btnplay" type="button" value=">" />
                        <input id="slider" type="range" min="0" max="100" value="0" />
                        <span id="per">0:0 | 0:0</span>
                </p>
      </div>
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=488891868.mp3" autoplay="autoplay" loop="loop"></audio>
    </div><br><br><br><br><br><br>

<script>
let waikuang = document.querySelector('.waikuang'),
      slider = document.querySelector('#slider'),
      aud = document.querySelector('#aud'),
      per = document.querySelector('#per'),
      btnplay = document.querySelector('#btnplay'),
      geci = document.querySelector('#geci'),
       dongtu = document.querySelector('.dongtu');
let all = 16; //运动元素总数
let pa_w = papa.offsetWidth, pa_h = papa.offsetHeight; //父元素宽高
let num = (min, max) => Math.floor(Math.random() * (max-min+1)) + min; //取两数间随机整数

//初始化运动元素
Array.from({length:all}).forEach((x,y) =>{
      x = document.createElement('span'); //创建span标签
      x.className = 'ball'; //css类名
      let wh = num(40,46); //元素随机尺寸(宽高一致)
      //写入 style 样式:背景、宽、高、左边值、上边值
      x.style.cssText = `background: linear-gradient(120deg, rgb(${num(0,255)},${num(0,255)},${num(0,255)}),rgb(${num(0,255)},${num(0,255)},${num(0,255)}));
                width: ${wh}px; height:${wh}px; left: ${num(0, pa_w - wh)}px; top: ${num(0, pa_h - wh)}px`;
      papa.appendChild(x); //追加元素到父元素
});

let balls = document.querySelectorAll('.ball'); //获得已追加的元素操作句柄(数组)

move(); //首次运行函数:一开始就动起来

//折向运动函数
function move() {
      for(obj of balls) { //用for of 语句命令每一个元素
                let xx = Math.floor((papa.offsetWidth - obj.offsetWidth) * Math.random()); //水平位移距离:范围内随机整数
                let yy = Math.floor((papa.offsetHeight - obj.offsetHeight) * Math.random());//垂直位移距离:范围内随机整数
                obj.style.left = xx + 'px'; //运动元素左边值
                obj.style.top = yy + 'px'; //运动元素右边值
      }
}

let tt = setInterval(move, 600); //永动定时器驱动函数

let flag = 0, slip = 0;

let lrcAr = [
      ['0.06','抽奖 - 纯音乐'],
      ['5.00','祝福人人好运'],
      ['10.00','千贵万贵平安最贵'],
      ['15.00','千福万福健康最福'],
      ['20.00','千好万好中奖最好'],
      ['25.05','千美万美幸福最美'],
      ['170','感谢聆听']
];
slider.onmousedown = () => aud.pause();
slider.onchange = () => { aud.currentTime = slider.value * aud.duration / 100; aud.play(); }
btnplay.onclick = () => aud.paused ? aud.play() : aud.pause();
aud.addEventListener('playing', () => btnplay.value = '||');
aud.addEventListener('pause', () => btnplay.value = '>');

aud.addEventListener('timeupdate', () => {
      let prog = 100 * aud.currentTime / aud.duration;
      slider.value = prog;
      per.innerText = toMin(aud.currentTime) + ' | ' + toMin(aud.duration);
                for(j=0; j<lrcAr.length; j++){
                if(aud.currentTime >= lrcAr - slip){
                        geci.innerHTML = lrcAr;
                }
      }
});

let toMin = (sec) => {
      if(!sec) return '0:00';
      sec = parseInt(sec);
      return parseInt(sec / 60) + ':' + parseFloat(sec % 60).toString().padStart(2,'0');
}
</script>

梦油 发表于 2022-7-11 17:53

福运当头、事事遂心。

马黑黑 发表于 2022-7-11 18:28

学小辣椒和粥菇凉狂点,没抽到奖{:4_170:}

加林森 发表于 2022-7-11 18:36

有点意思的。

红影 发表于 2022-7-11 18:48

梦油 发表于 2022-7-11 17:53
福运当头、事事遂心。

抽到福运,抽到开心{:4_173:}

红影 发表于 2022-7-11 18:49

马黑黑 发表于 2022-7-11 18:28
学小辣椒和粥菇凉狂点,没抽到奖

那些小球我不知道做什么好,就放奖池里去了。为了突出这些小球,我弄了这么大的抽奖箱呢{:4_173:}

红影 发表于 2022-7-11 18:52

加林森 发表于 2022-7-11 18:36
有点意思的。

把黑黑那些跑来跑去的小球扔到奖池里去了{:4_173:}

加林森 发表于 2022-7-11 18:58

红影 发表于 2022-7-11 18:52
把黑黑那些跑来跑去的小球扔到奖池里去了

是的。挺好玩的。

红影 发表于 2022-7-11 19:11

加林森 发表于 2022-7-11 18:58
是的。挺好玩的。

这里面放的小球少,就16个,放多了觉得太乱。

马黑黑 发表于 2022-7-11 19:30

红影 发表于 2022-7-11 18:49
那些小球我不知道做什么好,就放奖池里去了。为了突出这些小球,我弄了这么大的抽奖箱呢

挺好。其实,小球只是举例用,它简单。这些小球,换成其他元素,会有无限的可能

加林森 发表于 2022-7-11 19:59

红影 发表于 2022-7-11 19:11
这里面放的小球少,就16个,放多了觉得太乱。

挺合适的。

红影 发表于 2022-7-11 20:20

马黑黑 发表于 2022-7-11 19:30
挺好。其实,小球只是举例用,它简单。这些小球,换成其他元素,会有无限的可能

比如把小球换成头像,就会有一群人在里面翻滚{:4_170:}

红影 发表于 2022-7-11 20:27

加林森 发表于 2022-7-11 19:59
挺合适的。

原图是这个https://pic.imgdb.cn/item/62cc16cdf54cd3f9370a0c94.png

为了放黑黑的小球,我把原来的奖球给删了{:4_173:}

加林森 发表于 2022-7-11 20:29

红影 发表于 2022-7-11 20:27
原图是这个

为了放黑黑的小球,我把原来的奖球给删了

这个也挺漂亮的。就是不动的。

小辣椒 发表于 2022-7-11 20:39

马黑黑 发表于 2022-7-11 18:28
学小辣椒和粥菇凉狂点,没抽到奖

是啊,我鼠标点了又点,结果静等。。。。。还是没有中奖{:4_170:}

小辣椒 发表于 2022-7-11 20:41

哈哈~~~原来只能看,不能抽奖,亲爱的你是个小片子{:4_170:}

马黑黑 发表于 2022-7-11 20:54

小辣椒 发表于 2022-7-11 20:39
是啊,我鼠标点了又点,结果静等。。。。。还是没有中奖

也不空欢喜一场

马黑黑 发表于 2022-7-11 20:56

红影 发表于 2022-7-11 20:20
比如把小球换成头像,就会有一群人在里面翻滚

群魔乱舞{:4_170:}

小辣椒 发表于 2022-7-11 21:03

马黑黑 发表于 2022-7-11 20:54
也不空欢喜一场

说了啊,开心就好{:4_172:}

小九 发表于 2022-7-11 21:07

狂点一番,一个都没有中
页: [1] 2
查看完整版本: 来抽奖了(学习黑黑的无序小球代码)