向 云 端
本帖最后由 朵拉 于 2023-7-11 23:32 编辑 <br /><br /><style>#mydiv {
margin: 0 0 0 calc(50% - 676px);
width: 1264px;
height: 690px;
z-index: 1;
background: url('https://pic.imgdb.cn/item/64ad3fe31ddac507cc69e97f.jpg');
box-shadow: 0 0 8px 0 #000;
overflow: hidden;
position: relative;
}
li-zi {
position: absolute;
border-radius: 100% 100% 100% 0;
background: lightblue;
box-shadow: inset -2px -2px 10px 0 antiquewhite;
opacity: .9;
cursor: pointer;
transform: rotate(-45deg);
}
</style>
<div id="mydiv"></div>
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=2049512697" autoplay="autoplay" loop="loop"></audio>
<script>
//粒子运动开关
let canMove = true;
//创建 Lizi 类
class Lizi {
//构造函数 : 属性设计/设置 pa - 粒子宿主元素,size - 粒子大小
constructor(pa,size = 20) {
this.pa = pa;
this.size = size;
this.bg = 'purple';
this.left = 10;
this.top = 10;
this.ystep = 1; //垂直移动步幅
this.ele = document.createElement('li-zi'); //粒子标签
}
//创建粒子
creating() {
this.ele.style.cssText = `
width: ${this.size}px;
height: ${this.size}px;
left: ${this.left}px;
top: ${this.top}px;
background: ${this.bg};
`;
this.pa.appendChild(this.ele);
this.moving();
}
//移动粒子
moving() {
if(canMove) {
this.left += this.xstep;
this.top += this.ystep;
if(this.top <= -this.size) this.top = this.pa.offsetHeight;
this.ele.style.left = this.left + 'px';
this.ele.style.top = this.top + 'px';
}
requestAnimationFrame(this.moving.bind(this));
}
}
//实例化Lizi
Array.from({length: 40}).forEach((element) => {
element = new Lizi(mydiv);
element.size = 20 + Math.ceil(Math.random() * 20);
element.left = Math.floor(Math.random() * (mydiv.offsetWidth - element.size));
element.top = Math.floor(Math.random() * (mydiv.offsetHeight - element.size));
element.xstep = 0;
element.ystep = -0.5 - Math.random();
element.bg = '#' + Math.random().toString(16).substr(-6);
element.creating();
});
mState = () => aud.paused ? (mydiv.style.setProperty('--state','paused'),canMove = false) : (mydiv.style.setProperty('--state','running'),canMove = true);
aud.addEventListener('play', mState, false);
aud.addEventListener('pause', mState, false);
mydiv.onclick = () => aud.paused ? aud.play() : aud.pause();
</script>
这首歌好听,悠扬婉转,引人入胜,谢谢朵拉的分享{:2_133:} 问好朵拉,制作辛苦了,祝夏季安好{:2_124:}{:2_124:} 歌唱的好听,图也很棒,尤其是特效添加特扣题 感谢朵拉精彩分享!欣赏点赞,祝夏安!{:3_236:}{:3_268:}{:4_219:}{:4_219:}{:4_219:} 欣赏友友佳作,感谢精彩分享,感谢给大家带来美滴享受!祝创作愉快,天天好心情! 听乐赏图,真是美美哒!
听音乐带来好心情,赞赞赞! 问候老师 动画棒棒哒{:4_218:}{:4_218:}{:4_218:} 听歌赏图,点赞问好!
页:
[1]