|
|

楼主 |
发表于 2023-7-17 09:02
|
显示全部楼层
代码分享
- <style>
- #mydiv {
- margin: 0 0 0 calc(50% - 593px);
- width: 1024px;
- height: 640px;
- background: linear-gradient(to top right,rgba(200,0,0,.7),rgba(0,100,100,.75));
- overflow: hidden;
- position: relative;
- --state: paused;
- }
- pinpu-wrapper {
- position: absolute;
- bottom: 0;
- left: 50%;
- transform: translate(-50%);
- cursor: pointer;
- }
- pin-pu {
- position: absolute;
- bottom: 0;
- animation: pinpuMotion var(--du) var(--delay) infinite alternate linear var(--state);
- }
- .leaf {
- position: absolute;
- width: 50px;
- height: 50px;
- top: -100px;
- border-radius: 0% 100%;
- background: linear-gradient(45deg, green, lightgreen);
- animation: drop 6s var(--delay) infinite linear var(--state);
- --delay: 0s;
- }
- .leaf:nth-of-type(2) { --delay: -2s; }
- .leaf:nth-of-type(3) { --delay: -4s; }
- @keyframes pinpuMotion { from { height: 0px; } to { height: var(--height); } }
- @keyframes drop { to { transform: rotate(-10deg) translateY(760px); } }
- </style>
- <div id="mydiv">
- <pinpu-wrapper></pinpu-wrapper>
- <span class="leaf"></span>
- <span class="leaf"></span>
- <span class="leaf"></span>
- </div>
- <audio id="aud" src="https://music.163.com/song/media/outer/url?id=1805728327" autoplay loop></audio>
- <script>
- !function() {
- let pinpuNum = 60, pinpuWidth = 4, pinpuHeight = 160;
- let ppwrap = document.querySelector('pinpu-wrapper');
- let mState = () => mydiv.style.setProperty('--state', aud.paused ? 'paused' : 'running');
- let msort = (ar) => {
- let newAr = [];
- ar.forEach((v,k) => k % 2 === 0 ? newAr.unshift(v) : newAr.push(v));
- return newAr;
- }
- !function() {
- let ar = Array.from(Array(pinpuNum), (v,k) => pinpuNum - k -1);
- Array.from({length: pinpuNum}).forEach((item,key) => {
- item = document.createElement('pin-pu');
- item.style.cssText += `
- width: ${pinpuWidth}px;
- left: ${(pinpuWidth + 2) * key}px;
- background: #${Math.random().toString(16).substr(-6)};
- --height: ${15 + (pinpuHeight - 15) / pinpuNum * msort(ar)[key]}px;
- --du: ${Math.random() * .3 + .3}s;
- --delay: -${Math.random()}s;
- `;
- ppwrap.appendChild(item);
- });
- ppwrap.style.height = `${pinpuHeight}px`;
- ppwrap.style.width = `${(pinpuWidth + 2) * pinpuNum}px`;
- }();
- aud.addEventListener('play', mState, false);
- aud.addEventListener('pause', mState, false);
- ppwrap.onclick = () => aud.paused ? aud.play() : aud.pause();
- }();
- </script>
复制代码
|
|