花潮论坛

搜索
热搜: 活动 交友 discuz
查看: 56|回复: 9

用锥形渐变模拟圆形进度条

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

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

    发表于 2022-5-19 12:45 | 显示全部楼层 |阅读模式

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

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

    x

    锥形渐变(conic-gradient),又称角向渐变,被关注度和使用率不及线性渐变(linear-gradient)和径向渐变(radial-gradient),但它的存在令圆形进度条的实现变复杂为简单,使用单一元素就可以完成。

    锥形渐变属性至少需要两个颜色参与,我们的思路可以是这样:用颜色一表示进度,颜色二用作进度条的轨迹。两种颜色共享一个节点,即颜色一的结束点同时又是颜色二的起始点,这样两种颜色界限分明,颜色一就能很好地模拟进度完成量。试看如下效果:

    上面的效果是进度完成量为 10% 的样子,可以满意。它是用单元素做出来的,HTML代码是:

    <div class="progress" data-per="10%"></div>

    CSS代码只需设定元素及其伪元素,主元素的作用是显示锥形渐变的效果,伪元素则遮盖主元素的中央部分并显示进度百分比。核心代码如下:

    .progress {
       margin: 10px auto 0;
       width: 200px;
       height: 200px;
       display: flex;
       justify-content: center;
       align-items: center;
       border-radius: 50%;
       background: conic-gradient(from 180deg, red 10%, lightseagreen 10%);
       position: relative;
    }
    .progress::before {
       position: absolute;
       content: attr(data-per);
       width: 180px;
       height: 180px;
       border-radius: 50%;
       background: #eee;
       font: normal 1em / 180px sans-serif;
       text-align: center;
    }
    

    注意观察主元素的背景设定:

    background: conic-gradient(from 180deg, red 10%, lightseagreen 10%);

    颜色一和颜色二共享边界,其后都用了 10%,这是关键所在。

    而伪元素的存在意义前面已经提到了,所以它也应该拥有自己的背景色,简单设置就好,可根据场景需要选用不同的颜色。

    进度条的状态总是动态变化的,这需要用到JS,效果如下(单独代码放在下楼):

    评分

    参与人数 1威望 +50 金钱 +100 经验 +50 收起 理由
    红影 + 50 + 100 + 50 赞一个!

    查看全部评分

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2022-5-19 12:52 | 显示全部楼层
    锥形渐变实现圆形进度条的核心代码(请不要在本帖第一页测试):
    1. <style>
    2. /* 圆圈盒子:模拟圆圈进度 */
    3. .progress {
    4.         margin: 50px auto 0;
    5.         display: flex;
    6.         justify-content: center;
    7.         align-items: center;
    8.         width: 100px;
    9.         height: 100px;
    10.         border-radius: 50%;
    11.         background: conic-gradient(from 180deg,red 0%,seagreen 0%);
    12. }
    13. /* 伪元素:覆盖父元素中心部分并显示百分比进度 */
    14. .progress::before {
    15.         position: absolute;
    16.         content: attr(data-per);
    17.         width: 90px;
    18.         height: 90px;
    19.         border-radius: 50%;
    20.         background: lightseagreen;
    21.         text-align: center;
    22.         font: normal 15px / 90px sans-serif;
    23. }

    24. </style>

    25. <div class="progress" data-per="0%"></div>

    26. <script>

    27. let progress = document.querySelector('.progress');
    28. let current = 0; //当前进度 单位:秒
    29. let task = 10;//任务总量 单位:秒

    30. //定时器运行函数,task*10 是根据任务设定完成任务用时 单位:毫秒
    31. let TT = setInterval(setProgress,task * 10);

    32. //进度函数:以1步进令进度条平缓变化,步进至100任务完成
    33. function setProgress() {
    34.         current ++;
    35.         if(current >= 100) clearInterval(TT);
    36.         //利用锥形渐变呈现进度:两种颜色共享38线模拟出效果
    37.         progress.style.background = `conic-gradient(from 180deg,red ${current}%,seagreen ${current}%)`;
    38.         //伪元素百分比显示进度
    39.         progress.setAttribute('data-per',current + '%');
    40. }

    41. </script>
    复制代码


    回复 支持 反对

    使用道具 举报

  • 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 13:25 | 显示全部楼层
    这个有趣,数字和进度同步进行着
     
    回复 支持 反对

    使用道具 举报

  • 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 13:25 | 显示全部楼层
    这个也是为了做音乐进度的吧
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2022-5-19 19:28 | 显示全部楼层
    红影 发表于 2022-5-19 13:25
    这个也是为了做音乐进度的吧

    这个可以做音乐播放进度条,不过开发这个功能原本不是为了这个,这是由用途的,毕竟圆形进度条很流行呢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2022-5-19 19:32 | 显示全部楼层
    红影 发表于 2022-5-19 13:25
    这个有趣,数字和进度同步进行着

    就是对浏览器有要求,不能是IE。好在IE微软已经宣布停更,估计用它的人也会慢慢减少了吧
    回复 支持 反对

    使用道具 举报

  • 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-20 13:33 | 显示全部楼层
    马黑黑 发表于 2022-5-19 19:28
    这个可以做音乐播放进度条,不过开发这个功能原本不是为了这个,这是由用途的,毕竟圆形进度条很流行呢

    哦,通常是用在哪里的呢?
     
    回复 支持 反对

    使用道具 举报

  • 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-20 13:34 | 显示全部楼层
    马黑黑 发表于 2022-5-19 19:32
    就是对浏览器有要求,不能是IE。好在IE微软已经宣布停更,估计用它的人也会慢慢减少了吧

    IE不支持这个的吧。嗯,现在用IE的已经很少了呢。
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2022-5-20 18:06 | 显示全部楼层
    红影 发表于 2022-5-20 13:34
    IE不支持这个的吧。嗯,现在用IE的已经很少了呢。

    做的人都彻底抛弃它了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2025-12-16 08:52
  • 签到天数: 1671 天

    [LV.Master]伴坛终老

    3050

    主题

    13万

    回帖

    28万

    积分

    管理员

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

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

     楼主| 发表于 2022-5-20 18:06 | 显示全部楼层
    红影 发表于 2022-5-20 13:33
    哦,通常是用在哪里的呢?

    你看天猫淘宝京东拼多多等APP
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2025-12-16 18:43 , Processed in 0.402412 second(s), 25 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

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