马黑黑 发表于 2022-5-2 23:37

自动变色的花朵(已关联音乐)

<style>
.wrap {
        margin: auto; margin-top: 100px;
        display: flex;
        width: 300px;
        height: 300px;
        perspective: 1800px;
        position: relative;
        animation: rot 10s linear infinite;
}
.flower {
        width: 50%;
        height: 50%;
        border-radius: 0 100%;
        background-color: #ccc;
        opacity: .85;
        transform-origin: 100% 100%;
        transform-style: preserve-3d;
        position: absolute;
}
@keyframes rot { to { transform: rotate(1turn); } }
</style>

<div class="wrap"></div>

<script>
let wrap = document.querySelector('.wrap');
let flag = true;
let str = '';
for(j=0; j< 5; j++) {
        str += `<div class='flower' style='background: linear-gradient(${getColor()}, ${getColor()}); transform: rotate(${72*j}deg)'></div>`;
}
wrap.innerHTML = str;
let au = document.createElement('audio');
au.src = "http://www.kumeiwp.com/sub/filestores/2022/04/16/4dc3020a14f7266fc4ffde61e56e0d79.mp3";
au.autoplay = flag;
au.loop = true;
au.style.display = 'none';
wrap.appendChild(au);

let tt = setInterval(setColor, 1000);

wrap.onclick = function(){
        flag ? (au.pause(), this.style.animationPlayState = 'paused', flag = false) : (au.play(), this.style.animationPlayState = 'running', flag = true);
}

function setColor(){
        let petal = document.querySelectorAll('.flower');
        for(j=0; j< petal.length; j++){
                petal.style.background = `linear-gradient(${getColor()},${getColor()})`;
        }
}

function getColor(){
        return `#${Math.random().toString(16).substr(-6)}`;
}
</script>

马黑黑 发表于 2022-5-2 23:38

本帖最后由 马黑黑 于 2022-5-2 23:42 编辑

代码:
<style>
.wrap {
      margin: auto; margin-top: 100px;
      width: 300px;
      height: 300px;
      perspective: 1800px;
      position: relative;
      animation: rot 10s linear infinite;
}
.flower {
      width: 50%;
      height: 50%;
      border-radius: 0 100%;
      background-color: #ccc;
      opacity: .85;
      transform-origin: 100% 100%;
      transform-style: preserve-3d;
      position: absolute;
}
@keyframes rot { to { transform: rotate(1turn); } }
</style>

<div class="wrap"></div>

<script>
let wrap = document.querySelector('.wrap');
let flag = true;
let str = '';
for(j=0; j< 5; j++) {
      str += `<div class='flower' style='background: linear-gradient(${getColor()}, ${getColor()}); transform: rotate(${72*j}deg)'></div>`;
}
wrap.innerHTML = str;
let au = document.createElement('audio');
au.src = "http://www.kumeiwp.com/sub/filestores/2022/04/16/4dc3020a14f7266fc4ffde61e56e0d79.mp3";
au.autoplay = flag;
au.loop = true;
au.style.display = 'none';
wrap.appendChild(au);

let tt = setInterval(setColor, 1000);

wrap.onclick = function(){
      flag ? (au.pause(), this.style.animationPlayState = 'paused', flag = false) : (au.play(), this.style.animationPlayState = 'running', flag = true);
}

function setColor(){
      let petal = document.querySelectorAll('.flower');
      for(j=0; j< petal.length; j++){
                petal.style.background = `linear-gradient(${getColor()},${getColor()})`;
      }
}

function getColor(){
      return `#${Math.random().toString(16).substr(-6)}`;
}
</script>

马黑黑 发表于 2022-5-2 23:44

本帖最后由 马黑黑 于 2022-5-2 23:45 编辑

说明:

① 花瓣数量在第 29 行修改,j < 5 这里,想要多少个花瓣就用它替代 5 这个数字;

② 花瓣大小请修改第 4、5 行,即 .wrap 选择器的 width 和 height 值;

③ 第三行,即 margin 所在行,是演示需要,具体使用时删掉它,改用 left 和 top 定位其在帖子中的位置。

马黑黑 发表于 2022-5-2 23:46

变色也可以在音乐暂停是停止,但不建议,所以JS脚本程序中没有加入停止变色机制

马黑黑 发表于 2022-5-2 23:47

变色的语句:

let tt = setInterval(setColor, 1000);

1000标识1秒,如果想变慢一点或快一点,改变它,例如2000是两秒,500是半秒

辫子哥哥 发表于 2022-5-3 01:32

{:4_189:} 黄色能再多点吗

马黑黑 发表于 2022-5-3 07:12

辫子哥哥 发表于 2022-5-3 01:32
黄色能再多点吗

黄金太贵了,预算有限呢{:4_170:}

红影 发表于 2022-5-3 09:36

终于知道怎样让花朵变色了,谢谢黑黑{:4_187:}

红影 发表于 2022-5-3 09:37

这个比每次刷新才变色更炫,真漂亮{:4_199:}

加林森 发表于 2022-5-3 09:45

真漂亮的制作,老黑写得很详细的。谢谢老黑啦!{:4_190:}

马黑黑 发表于 2022-5-3 10:03

加林森 发表于 2022-5-3 09:45
真漂亮的制作,老黑写得很详细的。谢谢老黑啦!

不客气

加林森 发表于 2022-5-3 10:04

马黑黑 发表于 2022-5-3 10:03
不客气

嗯嗯。

马黑黑 发表于 2022-5-3 10:08

红影 发表于 2022-5-3 09:36
终于知道怎样让花朵变色了,谢谢黑黑

奇迹还得JS来创造

马黑黑 发表于 2022-5-3 10:09

红影 发表于 2022-5-3 09:37
这个比每次刷新才变色更炫,真漂亮

老子曰:五色令人目盲

红影 发表于 2022-5-3 10:27

马黑黑 发表于 2022-5-3 10:08
奇迹还得JS来创造

JS真厉害{:4_189:}

红影 发表于 2022-5-3 10:27

马黑黑 发表于 2022-5-3 10:09
老子曰:五色令人目盲

五色那么美,盲就盲了{:4_189:}

马黑黑 发表于 2022-5-3 10:38

红影 发表于 2022-5-3 10:27
五色那么美,盲就盲了

豁出去了{:4_170:}

马黑黑 发表于 2022-5-3 10:39

红影 发表于 2022-5-3 10:27
JS真厉害

没有JS,网页和小程序会逊色很多

大猫咪 发表于 2022-5-3 12:35

先收藏   放帖子里很漂亮的{:5_117:}谢谢老黑{:4_179:}

马黑黑 发表于 2022-5-3 14:04

大猫咪 发表于 2022-5-3 12:35
先收藏   放帖子里很漂亮的    谢谢老黑

猫咪下午好
页: [1] 2 3 4
查看完整版本: 自动变色的花朵(已关联音乐)