用css动画画一个不规则的渐变动态圆

这是一个gif动图,加载时间有点长,请耐心等待

如何用div画一个圆

div原本是一个方的,如果要把它变成圆形就需用border-radius这个属性让元素变成圆角,设置的不同的值,会有不同的圆角。

让4个角都变成大小不一的圆角:需要一个公式


相同的颜色加起来的和等于100,角与角之间的过渡就会变得比较顺滑

代码展示
.box {
            width: 300px;
            height: 300px;
            background: pink;
            /* color: aquamarine; */
            /* 创建一个表示两种或多种颜色线性渐变的图片 
                基于0度逆时针旋转100deg,逆时针旋转pink从右边开始
                过渡起始位置0%开始让pink和aquamarine之间产生颜色渐变效果
                过渡起始位置50%开始让yellowgreen和yellowgreen之间产生颜色渐变效果
            */
            background-image: linear-gradient(-100deg, pink 0%, yellowgreen 50%, aquamarine 100%);
            /* 圆的border-radius恒速过渡 */
            transition: border-radius 3s linear;
            /* 让4个角都变成大小不一的圆角
                相同的颜色加起来的和等于100
            */
            border-radius: 60% 40% 50% 50% / 35% 45% 55% 65%;
            /* 50s一次无限次循环 */
            animation: go 50s infinite;

             /* border-radius:左上,右上,右下,左下
                border-top-left-radius
                border-top-right-radius
                border-bottom-right-radius
                border-bottom-left-radius
            */
        }
@keyframes go {
            0% {

            border-radius: 60% 40%

 50% 50% / 35% 45% 55% 65%;
            }
            25% {
                border-radius: 45% 55% 37% 63% / 56% 36% 54% 44%;
            }
            50% {
                border-radius: 59% 41% 68% 32% / 48% 52% 48% 62%;
            }
            75% {
                border-radius: 50% 50% 39% 61% / 61% 69% 31% 39%;
            }
        }
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以给你提供一个基于CSS3的音频动画示例,实现不规则运动的效果。 首先,我们需要定义一个 `audio` 元素来播放音频,然后将其隐藏: ```html <audio id="audio" src="your-audio-file.mp3" preload="auto"></audio> ``` 接着,我们需要定义一个 `div` 元素来承载音频动画,并设置一些基本样式: ```html <div id="audio-visualizer"></div> ``` ```css #audio-visualizer { position: relative; width: 100%; height: 200px; background: #333; } ``` 然后,我们可以使用 `::before` 伪元素和 `animation` 属性来创建动画效果。我们可以使用 `transform` 属性来实现不规则运动。同时,我们需要结合音频的频谱数据来控制动画的速度和幅度。以下是完整的 CSS 代码: ```css #audio-visualizer::before { content: ''; position: absolute; bottom: 0; left: 0; width: 100%; height: 100%; background: rgba(255, 255, 255, 0.2); animation: visualizer 200ms linear infinite; } @keyframes visualizer { 0% { transform: scaleY(1); } 50% { transform: scaleY(2); } 100% { transform: scaleY(1); } } /* 控制动画速度和幅度 */ #audio-visualizer::before { animation-duration: 200ms; animation-timing-function: linear; } #audio-visualizer[data-audio-playing="true"]::before { animation-play-state: running; } #audio-visualizer[data-audio-playing="false"]::before { animation-play-state: paused; } #audio-visualizer[data-audio-peak="true"]::before { animation-duration: 100ms; animation-timing-function: ease-out; transform: scaleY(3); } ``` 最后,在 JavaScript 中,我们需要监听音频的播放事件,并根据频谱数据来控制动画的速度和幅度。以下是示例代码: ```js const audio = document.getElementById('audio'); const visualizer = document.getElementById('audio-visualizer'); const audioContext = new (window.AudioContext || window.webkitAudioContext)(); const source = audioContext.createMediaElementSource(audio); const analyser = audioContext.createAnalyser(); analyser.fftSize = 2048; const bufferLength = analyser.frequencyBinCount; const dataArray = new Uint8Array(bufferLength); source.connect(analyser); analyser.connect(audioContext.destination); const updateVisualizer = () => { analyser.getByteFrequencyData(dataArray); const average = dataArray.reduce((acc, val) => acc + val, 0) / bufferLength; const peak = Math.max(...dataArray) > 230; visualizer.dataset.audioPeak = peak; visualizer.dataset.audioPlaying = !audio.paused; requestAnimationFrame(updateVisualizer); }; updateVisualizer(); ``` 这样,我们就完成了一个基于CSS3不规则运动的音频动画效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值