花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 68|回复: 5

橄榄树:用类做频谱修正版

[复制链接]
  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

    发表于 2023-7-16 23:09 | 显示全部楼层 |阅读模式

    请马上登录,朋友们都在花潮里等着你哦:)

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2023-7-16 23:10 | 显示全部楼层
    代码(兼容性较好)

    1. <style>
    2. #mydiv {
    3.     margin: 0 0 0 calc(50% - 593px);
    4.     width: 1024px;
    5.     height: 640px;
    6.     background: linear-gradient(to top right,rgba(0,0,0,.7),rgba(0,100,0,.75));
    7.     overflow: hidden;
    8.     position: relative;
    9.     --state: paused;
    10. }
    11. .leaf {
    12.     position: absolute;
    13.     width: 50px;
    14.     height: 50px;
    15.     top: -100px;
    16.     border-radius: 0% 100%;
    17.     background: linear-gradient(45deg, green, lightgreen);
    18.     animation: drop 6s var(--delay) infinite linear var(--state);
    19.     --delay: 0s;
    20. }
    21. .leaf:nth-of-type(2) { --delay: -2s; }
    22. .leaf:nth-of-type(3) { --delay: -4s; }
    23. @keyframes drop { to { transform: rotate(-10deg) translateY(760px); } }
    24. </style>

    25. <div id="mydiv">
    26.     <span class="leaf"></span>
    27.     <span class="leaf"></span>
    28.     <span class="leaf"></span>
    29. </div>

    30. <script>

    31. let mState = () => mydiv.style.setProperty('--state', aud.paused ? 'paused' : 'running');
    32. let msort = (ar) => {
    33.     let newAr = [];
    34.     ar.forEach((v,k) => k % 2 === 0 ? newAr.unshift(v) : newAr.push(v));
    35.     return newAr;
    36. }

    37. class Pinpu {
    38.     constructor(pa) {
    39.         this.pa = pa;
    40.         this.aud = document.createElement('audio');
    41.         this.wrap = document.createElement('div');
    42.         this.pinpu = { num: 60, width: 6, height: 100 }
    43.     }
    44.     createPinpu() {
    45.         let styles = document.styleSheets;
    46.         let mcss = document.styleSheets[styles.length - 1];
    47.         mcss.insertRule(`.mplayer { position: absolute; width: ${(this.pinpu.width + 2) * this.pinpu.num}px; height: ${this.pinpu.height * 1.5}px; left: 50%; bottom: 0px; transform: translate(-50%); cursor: pointer; }`, mcss.rules.length);
    48.         mcss.insertRule(`@keyframes up { from { height: 0px; } to { height: var(--height); } }`, mcss.rules.length);
    49.         this.wrap.className = 'mplayer';
    50.         this.aud.id = 'aud';
    51.         this.aud.autoplay = true;
    52.         this.aud.loop = true;
    53.         this.pa.appendChild(this.wrap);
    54.         this.pa.appendChild(this.aud);

    55.         Array.from({length: this.pinpu.num}).forEach((item,key) => {
    56.             item = document.createElement('span');
    57.             let ar = Array.from(Array(this.pinpu.num), (v,k) => this.pinpu.num - k -1);
    58.             item.style.cssText = `
    59.                 position: absolute;
    60.                 width: ${this.pinpu.width}px;
    61.                 left: ${(this.pinpu.width + 2) * key}px;
    62.                 bottom: 0px;
    63.                 background: #${Math.random().toString(16).substr(-6)};
    64.                 animation: up ${0.3 + Math.random() * 0.3}s -${Math.random()}s infinite alternate linear var(--state);
    65.                 --height: ${this.pinpu.height / 2 + msort(ar)[key] * 1.2}px;
    66.             `;
    67.             this.wrap.appendChild(item);
    68.         });
    69.         this.click();
    70.     }
    71.     click() {
    72.         this.wrap.onclick = () => this.aud.paused ? this.aud.play() : this.aud.pause();
    73.     }
    74. }

    75. let pp = new Pinpu(mydiv);
    76. pp.pinpu.num = 100;
    77. pp.pinpu.width = 5;
    78. pp.pinpu.height = 100;
    79. pp.aud.src = 'https://music.163.com/song/media/outer/url?id=25707174';
    80. pp.createPinpu();

    81. aud.addEventListener('play', mState, false);
    82. aud.addEventListener('pause', mState, false);

    83. </script>
    复制代码


    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2023-7-16 23:16 | 显示全部楼层
    这个,频谱的布局,不再使用flex布局,取而代之的是绝对定位,通过算法一一排列,兼容性应该较好,手机版下不会频谱颠倒、抖动。
    回复 支持 反对

    使用道具 举报

    醉美水芙蓉 该用户已被删除
    发表于 2023-7-17 06:45 来自手机 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    回复

    使用道具 举报

    醉美水芙蓉 该用户已被删除
    发表于 2023-7-17 06:45 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-15 08:01
  • 签到天数: 1670 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫相遇之美鹰傲苍穹花好月圆紫色情节飞龙在天王者至尊大将风范音画大师天籁妙音共看流星风雨同行我心永远幸福快乐喜乐安康侠骨柔肠心想事成开朗大方花潮管理

     楼主| 发表于 2023-7-17 08:56 | 显示全部楼层

    这个是必须正常的
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|服务支持:DZ动力|huachaowang.com Inc. ( 蜀ICP备17032287号-1 )

    GMT+8, 2025-12-16 02:07 , Processed in 0.066090 second(s), 24 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表