1. 程式人生 > 實用技巧 >CSS+JS 實現動態曲線進度條

CSS+JS 實現動態曲線進度條

由於系統UI風格升級,產品童鞋和UI童鞋總是想要搞點兒事情出來,專案頁面上的進度條從直線變成了曲線,哈哈,好吧,那就迎難而上

實現效果:

1.簡單搞一搞 CSS , 此處程式碼有摺疊


分析一下實現思路:

  • 想要曲線效果,首先就能想到 border-radius 屬性

  • 兩個大小寬高一致的div,設定不同的邊款顏色,一個隱藏,一個顯示

  • 動態獲取進度條時,隱藏的半圓,通過角度換算,旋轉顯示對應角度的弧長

搞事情,不多說,上程式碼

  <div class="process">
    <div class="ring-def"></div>
    <div class="ring-color" id="ringColor"></div>
  </div>
  <p>
    設定進度條:<input type="number" max="100" min="0" id="procNum"> % <button id="btn" onclick="getProcess()">確定</button>
  </p>
  <script>
    function getProcess() {
      // 此處input使用者輸入 模擬真實請求返回資料
      var val = document.getElementById('procNum').value
      var tmp = val <= 0 ? 0 : val >= 100 ? 100 : val
      document.getElementById('procNum').value = tmp
      var deg = Math.floor(tmp / 100 * 180)
      document.getElementById('ringColor').style.transform = 'rotate(' + deg + 'deg)'
    }
  </script>