花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 55|回复: 16

《孔雀舞》代码解释

[复制链接]
  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

    发表于 2022-5-17 22:36 | 显示全部楼层 |阅读模式

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

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

    x
    本帖最后由 马黑黑 于 2022-5-17 22:44 编辑

    《孔雀舞》帖子地址:https://www.huachaowang.com/foru ... 9575&extra=page%3D1

    HTML是两层结构,代码如下:

    <div class="outerbox">
    <div class="innerbox"></div>
    </div>

    很简洁,没什么可说的,要实现的样式与功能,通过CSS和JS来完成。先说说CSS:

    <style>
    .outerbox {
    position: relative;
    left: -242px;
    display: flex;
    justify-content: center;
    align-items: center;
    width: 1080px;
    height: 666px;
    background: #888 url('https://638183.freep.cn/638183/t22/51/peacock.jpg') no-repeat center/cover;;
    box-shadow: 2px 2px 8px rgba(0,0,0,.95);
    perspective: 3000px;
    }
    .innerbox {
    background: #666;
    box-shadow: 2px 2px 6px rgba(0,0,0,.85);
    transform-style: preserve-3d;
    animation: flyout 6s linear infinite alternate;
    }
    @keyframes flyout {
    0% { transform: rotate(0turn); width: 1px; height: 1px; }
    80%, 100% { transform: rotate(2turn); width: 600px; height: 600px; }
    }
    </style>

    父元素 .outerbox 使用弹性布局并令子元素水平、垂直两个方向居中,这样会给子元素的运动提供一个完美的场所。景深要有,设为3000px,令帖子的整体效果有3d观感。

    子元素 .innerbox 设定 transform-style,配合父元素的景深设置展示3d效果。它的背景图片留给JS设置。animation 动画设为 6 秒,循环(infinite)、反向(alternate)运行。

    关键帧动画,flyout,0% 时旋转 0 圈,大小为 1 个像素;80% 和 100% 时动画的状态一样,旋转两圈,大小变为600*600。之所以80%和100%之时状态一样,是为了让图片推到最前方时停留一下下。

    下面说说JS:

    <script>

    let picAr = Array.from({length:13}, (v,k) => k + 1);
    let idx = 0;
    let outer = document.querySelector('.outerbox');
    let inner = document.querySelector('.innerbox');
    let aud = document.createElement('iframe');
    aud.src = 'https://music.163.com/outchain/player?type=2&id=1840766699&auto=1&height=66';
    aud.style.display = 'none';
    outer.appendChild(aud);
    setBgImg();
    setInterval(setBgImg, 12000);

    function setBgImg(){
    inner.style = `background: url('https://638183.freep.cn/638183/t22/51/${picAr[idx]}.jpg') no-repeat center/cover`;
    idx += 1;
    if(idx >= picAr.length) idx = 0;
    }

    </script>

    第一行,快捷构建一个有13个元素的数组 picAr,这是为了节省代码量,前提是图片的命名规则是 1.jpg、2.jpg、……、13.jpg,然后在函数 setBgImg() 里加入url的前面部分和后缀得出完整图片地址。

    变量 idx 是图片数组的标识,从0开始,运行中每一次加1,加到 13 时变回0,都在 setBgImg() 函数里完成计算。

    定时器 setInterval 是少不了的,它结合并配合 CSS 的关键帧动画 flyout,以 flyout 被子元素的 animation 调用的周期运行时长为依据,6*2 = 12(秒),这是关键所在。为什么是 6*2 ?因为animation有个参数 alternate,反向运行,同样会花一个周期时长的时间。

    评分

    参与人数 2威望 +80 金钱 +160 经验 +80 收起 理由
    加林森 + 30 + 60 + 30 很给力!
    红影 + 50 + 100 + 50 赞一个!

    查看全部评分

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

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

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2022-5-17 22:59 | 显示全部楼层
    “前提是图片的命名规则是 1.jpg、2.jpg、……、”
    可是很多地方上传后的地址并不是和命名一致的呢
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2022-5-17 23:51 | 显示全部楼层
    红影 发表于 2022-5-17 22:59
    “前提是图片的命名规则是 1.jpg、2.jpg、……、”
    可是很多地方上传后的地址并不是和命名一致的呢{:4_173 ...

    那就需要将地址一个一个的建立数组。当然还可以有讨巧的做法。例如,图片网址假设如此:

    相同部分/图片1.jpg
    相同部分/图片2.jpg
    …………
    相同部分/图片n.jpg

    则可以这样建立数组:

    picAr = ['图片1', '图片2','…', '图片n' ];

    后面在函数 setBgImg() 中补全相同部分和后缀。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2023-6-15 10:31
  • 签到天数: 525 天

    [LV.9]以坛为家II

    1383

    主题

    3万

    回帖

    10万

    积分

    版主

    Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

    花潮帅哥鼠牛虎兔龙蛇马羊猴鸡狗猪多彩人生星月交辉奔放热烈海样胸怀春风拂面火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀青草情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀男儿情怀鹰傲苍穹花好月圆飞龙在天王者至尊大将风范天籁妙音共看流星风雨同行幸福快乐喜乐安康指尖上的流年花潮版主

    发表于 2022-5-18 09:45 | 显示全部楼层
    来学习
     
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2022-5-19 07:33 | 显示全部楼层
    马黑黑 发表于 2022-5-17 23:51
    那就需要将地址一个一个的建立数组。当然还可以有讨巧的做法。例如,图片网址假设如此:

    相同部分/图 ...

    举例说明一下。先声明 图片url数组并赋值:

    let picAr = [
      '图片1完整地址',
      '图片2完整地址',
      '.......',
      '图片N完整地址'
    ];

    下一步,也是最后一步,将函数 setBgImg() 的 下面这句,

    inner.style = `background: url('https://638183.freep.cn/638183/t22/51/${picAr[idx]}.jpg') no-repeat center/cover`;

    改为,

    inner.style = `background: url('${picAr[idx]}') no-repeat center/cover`;
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

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

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2022-5-19 12:40 | 显示全部楼层
    马黑黑 发表于 2022-5-17 23:51
    那就需要将地址一个一个的建立数组。当然还可以有讨巧的做法。例如,图片网址假设如此:

    相同部分/图 ...

    嗯嗯,你这个就是这样做的吧。
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2022-5-19 12:40 | 显示全部楼层
    红影 发表于 2022-5-19 12:40
    嗯嗯,你这个就是这样做的吧。

    差不多
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-12-1 20:32
  • 签到天数: 1052 天

    [LV.10]以坛为家III

    1881

    主题

    32万

    回帖

    37万

    积分

    管理员

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

    花潮美女虎龙狗猪多彩人生星月交辉海样胸怀火热情怀优雅迷人神秘浪漫缤纷心情草莓情怀蝴蝶情怀心曲飞扬星星情怀七彩绚丽活泼开朗女儿情怀相遇之美一往情深花好月圆心香一瓣紫色情节飞龙在天金剪刀天籁妙音妙笔生花风雨同行我心永远天长地久幸福快乐绚丽缤纷喜乐安康中秋征文周年庆指尖上的流年舞会之星分析(喊冤)章总结章杀人王小强章最佳杀刺临屏写诗七夕诗钟活动第五届风云第六届风云情人节花潮管理

    发表于 2022-5-19 20:38 | 显示全部楼层

    这个效果很漂亮
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2022-5-19 20:39 | 显示全部楼层
    红影 发表于 2022-5-19 20:38
    这个效果很漂亮

    过得去
    回复 支持 反对

    使用道具 举报

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

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2022-5-19 21:30 | 显示全部楼层
    醉美水芙蓉 发表于 2022-5-19 20:58
    https://638183.freep.cn/638183/t22/51/${picAr}.jpg这个最关键的一步没有学会,太难了!

    链接打不开
    回复 支持 反对

    使用道具 举报

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

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2022-5-19 21:44 | 显示全部楼层
    醉美水芙蓉 发表于 2022-5-19 21:41
    这个是老师教程里的!

    额,可是你的链接不对
    回复 支持 反对

    使用道具 举报

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

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2022-5-19 21:50 | 显示全部楼层
    醉美水芙蓉 发表于 2022-5-19 21:46
    黑黑老师中间这么多图怎么做出来的?有点难度?

    好像不能,关键是JS里给出图片地址,用数组方式,我把代码再改改,套用起来就方便了
    回复 支持 反对

    使用道具 举报

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

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-14 13:47
  • 签到天数: 1669 天

    [LV.Master]伴坛终老

    3048

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2022-5-19 22:04 | 显示全部楼层
    醉美水芙蓉 发表于 2022-5-19 21:52
    谢谢黑黑老师!辛苦了,明天再来学习!

    我在水吧贴出了修改码
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2025-12-15 06:27 , Processed in 0.079865 second(s), 28 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

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