日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

如何僅使用CSS創建一個環形進度條?

來源: 責編: 時間:2024-04-02 17:23:13 273觀看
導讀這一系列課程將包含各種 ES6 輔助函數。它包括處理原語、數組和對象的助手,以及算法、DOM 操作函數和 Node.js 實用程序等相關內容。環形進度條在現今的網站中是一個相當常見的元素。然而,對很多開發者來說,它們似乎是一

這一系列課程將包含各種 ES6 輔助函數。它包括處理原語、數組和對象的助手,以及算法、DOM 操作函數和 Node.js 實用程序等相關內容。DRL28資訊網——每日最新資訊28at.com

環形進度條在現今的網站中是一個相當常見的元素。然而,對很多開發者來說,它們似乎是一個相當大的挑戰。實際情況是,理解并掌握基礎并不困難。事實上,借助一些新的CSS特性,這比以往任何時候都更容易。DRL28資訊網——每日最新資訊28at.com

DRL28資訊網——每日最新資訊28at.com

環形進度條的結構

簡單來說,一個環形進度條就是兩個圓疊加在一起。下面的圓為背景,上面的圓為進度指示器。關于我們如何填充進度指示器的部分我們稍后再講,但是基本的結構可以通過使用一個<svg>元素和少量的CSS輕松構建出來。DRL28資訊網——每日最新資訊28at.com

<svg width="250" height="250" viewBox="0 0 250 250">  <circle class="bg"    cx="125" cy="125" r="115" fill="none" stroke="#ddd" stroke-width="20"  ></circle>  <circle class="fg"    cx="125" cy="125" r="115" fill="none" stroke="#5394fd" stroke-width="20"  ></circle></svg>circle.fg {  transform: rotate(-90deg);  transform-origin: 125px 125px;}

DRL28資訊網——每日最新資訊28at.com

正如你所看到的,我們需要的唯一一部分CSS就是一個變換屬性。我們將前景圓旋轉90度,并將變換原點設置為圓的中心。這樣,圓就圍繞其中心旋轉,進度指示器從頂部開始。DRL28資訊網——每日最新資訊28at.com

數學計算

在我們開始之前,不妨花一點時間理解代碼背后的數學原理。DRL28資訊網——每日最新資訊28at.com

我們需要確定的兩個值是進度條的大小和描邊的寬度。對于這個示例,我們確定了大小為250px,描邊寬度為20px。我們將使用這些值來計算我們需要的其它值。DRL28資訊網——每日最新資訊28at.com

大小用來設置SVG元素的寬度和高度屬性,以及viewBox屬性。將其除以二,我們得到125px,對應于圖片中心的坐標。這個值用來設置圓的cx和cy屬性。DRL28資訊網——每日最新資訊28at.com

考慮到描邊寬度,我們可以計算出圓的半徑。半徑是從圓心到邊緣的距離。在這種情況下,半徑是115px,即圖片的大小減去描邊寬度再除以二。DRL28資訊網——每日最新資訊28at.com

最后,我們可以計算出圓的周長。周長是圓邊緣的長度。在這種情況下,周長是722.5px,即2 * π * 115px.。DRL28資訊網——每日最新資訊28at.com

變量DRL28資訊網——每日最新資訊28at.com

DRL28資訊網——每日最新資訊28at.com

公式 DRL28資訊網——每日最新資訊28at.com

sizeDRL28資訊網——每日最新資訊28at.com

250pxDRL28資訊網——每日最新資訊28at.com

N/A (user defined)DRL28資訊網——每日最新資訊28at.com

strokeDRL28資訊網——每日最新資訊28at.com

20pxDRL28資訊網——每日最新資訊28at.com

N/A (user defined)DRL28資訊網——每日最新資訊28at.com

centerDRL28資訊網——每日最新資訊28at.com

125pxDRL28資訊網——每日最新資訊28at.com

size / 2DRL28資訊網——每日最新資訊28at.com

radiusDRL28資訊網——每日最新資訊28at.com

115pxDRL28資訊網——每日最新資訊28at.com

(size - stroke) / 2DRL28資訊網——每日最新資訊28at.com

circumferenceDRL28資訊網——每日最新資訊28at.com

722.5pxDRL28資訊網——每日最新資訊28at.com

2 * π * radiusDRL28資訊網——每日最新資訊28at.com

接下來,這些數字將開始派上用場,但我保證我們幾乎不需要做什么數學計算。DRL28資訊網——每日最新資訊28at.com

填充進度指示器

現在我們已經有了基本的結構,現在需要來填充進度指示器。為此,我們將使用 stroke-dasharray屬性,它需要傳入閃爍和長度的交替值。DRL28資訊網——每日最新資訊28at.com

要創建一個進度條,我們希望傳入兩個值:填充部分的長度和空白部分的長度。獲取填充部分我們需要將進度百分比乘以圓的周長。獲取空白部分,我們會從周長中減去填充部分。DRL28資訊網——每日最新資訊28at.com

假設我們想要填充圓的50%,SVG代碼看起來將會是這樣:DRL28資訊網——每日最新資訊28at.com

<svg width="250" height="250" viewBox="0 0 250 250">  <circle class="bg"    cx="125" cy="125" r="115" fill="none" stroke="#ddd" stroke-width="20"  ></circle>  <circle class="fg"    cx="125" cy="125" r="115" fill="none" stroke="#5394fd" stroke-width="20"    stroke-dasharray="361.25 361.25"  ></circle>

使進度條動態化

硬編碼stroke-dasharray值并不是很有用。我們希望能夠動態地設置進度百分比。這就是之前的CSS變量和數學在這里起作用的地方。DRL28資訊網——每日最新資訊28at.com

給定一個--progress變量,我們可以相對容易地計算stroke-dasharray。知道我們將需要之前的大部分值,我們也可以將它們設置為CSS變量。更好的是,我們想要設置的大多數SVG屬性都可以用CSS操作。DRL28資訊網——每日最新資訊28at.com

<svg  width="250" height="250" viewBox="0 0 250 250"  class="circular-progress" style="--progress: 50">  <circle class="bg"></circle>  <circle class="fg"></circle></svg>.circular-progress {  --size: 250px;  --half-size: calc(var(--size) / 2);  --stroke-width: 20px;  --radius: calc((var(--size) - var(--stroke-width)) / 2);  --circumference: calc(var(--radius) * pi * 2);  --dash: calc((var(--progress) * var(--circumference)) / 100);}.circular-progress circle {  cx: var(--half-size);  cy: var(--half-size);  r: var(--radius);  stroke-width: var(--stroke-width);  fill: none;  stroke-linecap: round;}.circular-progress circle.bg {  stroke: #ddd;}.circular-progress circle.fg {  transform: rotate(-90deg);  transform-origin: var(--half-size) var(--half-size);  stroke-dasharray: var(--dash) calc(var(--circumference) - var(--dash));  transition: stroke-dasharray 0.3s linear 0s;  stroke: #5394fd;}

這可能看起來很多,但其實主要就是設置CSS變量,然后使用它們來計算我們需要的值。我想指出一個很酷的事情,那就是pi常數是calc()函數的一部分!DRL28資訊網——每日最新資訊28at.com

此時,如果你使用一些JavaScript去操作--progress變量的值,你會看到進度條填充起來。新增的transition屬性將使進度條平滑地動畫表現。DRL28資訊網——每日最新資訊28at.com

定時進度條

你是否曾在手機游戲里看過廣告?你知道的,那種如果你看完整個廣告就會給你獎勵的那種。它們通常都有一個進度條,隨著廣告的播放而填充。或者說,當你觀看時,它就像倒計時定時器一樣慢慢變空。無論你可能看到的是哪種類型,它們都屬于同一概念的變體。DRL28資訊網——每日最新資訊28at.com

我們如何創建一個在預定時間內填滿的進度條呢?我們可以用JavaScript和Window.requestAnimationFrame()來實現,但那樣就不太酷了。取而代之的是,我們可以使用animation屬性來讓--progress變量在設定的時間內從0變為100。DRL28資訊網——每日最新資訊28at.com

下面是重構后的代碼看起來是什么樣的:DRL28資訊網——每日最新資訊28at.com

@keyframes progress-animation {  from {    --progress: 0;  }  to {    --progress: 100;  }}

DRL28資訊網——每日最新資訊28at.com

如果你嘗試將這個連接到我們的SVG,你會發現它并不像你想象的那樣運作。這是因為瀏覽器并不知道如何處理--progress變量。它不知道它是一個數字,所以不知道如何對它進行動畫處理。DRL28資訊網——每日最新資訊28at.com

幸運的是,CSS為此提供了一個解決方案。@property規則允許我們定義自定義屬性,并告訴瀏覽器它們是什么類型。在這種情況下,我們想告訴瀏覽器--progress是一個數字。DRL28資訊網——每日最新資訊28at.com

@property --progress {  syntax: "<number>";  inherits: false;  initial-value: 0;}

DRL28資訊網——每日最新資訊28at.com

現在瀏覽器知道如何處理--progress變量,我們可以將它連接到動畫。DRL28資訊網——每日最新資訊28at.com

.circular-progress {  animation: progress-animation 5s linear 0s 1 forwards;}

DRL28資訊網——每日最新資訊28at.com

這將在5秒內把--progress變量從0變到100。forwards關鍵字告訴瀏覽器保持動畫的最后值。沒有它的話,動畫完成后,進度條會重置為0。你可以通過設置animation-direction屬性為reverse,并使用backwards而不是forwards來創建相反的效果。DRL28資訊網——每日最新資訊28at.com

整合所有內容

我們在這篇文章中涵蓋了很多內容。我們從一個簡單的SVG元素,發展到一個功能完整的進度條。我們使用了CSS變量、數學函數,甚至一個新的CSS特性。讓我們來看看最終的代碼。DRL28資訊網——每日最新資訊28at.com

<svg width="250" height="250" viewBox="0 0 250 250" class="circular-progress">  <circle class="bg"></circle>  <circle class="fg"></circle></svg>.circular-progress {  --size: 250px;  --half-size: calc(var(--size) / 2);  --stroke-width: 20px;  --radius: calc((var(--size) - var(--stroke-width)) / 2);  --circumference: calc(var(--radius) * pi * 2);  --dash: calc((var(--progress) * var(--circumference)) / 100);  animation: progress-animation 5s linear 0s 1 forwards;}.circular-progress circle {  cx: var(--half-size);  cy: var(--half-size);  r: var(--radius);  stroke-width: var(--stroke-width);  fill: none;  stroke-linecap: round;}.circular-progress circle.bg {  stroke: #ddd;}.circular-progress circle.fg {  transform: rotate(-90deg);  transform-origin: var(--half-size) var(--half-size);  stroke-dasharray: var(--dash) calc(var(--circumference) - var(--dash));  transition: stroke-dasharray 0.3s linear 0s;  stroke: #5394fd;}@property --progress {  syntax: "<number>";  inherits: false;  initial-value: 0;}@keyframes progress-animation {  from {    --progress: 0;  }  to {    --progress: 100;  }}

以下是一個展示代碼運行效果DRL28資訊網——每日最新資訊28at.com

圖片圖片DRL28資訊網——每日最新資訊28at.com

結論

使用現代HTML和CSS,我們創建了一個圓形進度條。這個設置可以作為你實驗的好起點。你可以參照使用,也可以擴展它以適應你的需要,如果需要的話,你可以加入一點JavaScript。你甚至可以將它轉換為Web組件或React組件用于你的項目。DRL28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-80884-0.html如何僅使用CSS創建一個環形進度條?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 代碼是如何被被編譯的?

下一篇: 巧妙運用Redisson打造自定義限流注解,讓接口防刷更高效

標簽:
  • 熱門焦點
  • vivo TWS Air開箱體驗:真輕 臻好聽

    在vivo S15系列新機的發布會上,vivo的最新款真無線藍牙耳機vivo TWS Air也一同發布,本次就這款耳機新品給大家帶來一個簡單的分享。外包裝盒上,vivo TWS Air保持了vivo自家產
  • 企業采用CRM系統的11個好處

    客戶關系管理(CRM)軟件可以為企業提供很多的好處,從客戶保留到提高生產力。  CRM軟件用于企業收集客戶互動,以改善客戶體驗和滿意度。  CRM軟件市場規模如今超過580
  • 只需五步,使用start.spring.io快速入門Spring編程

    步驟1打開https://start.spring.io/,按照屏幕截圖中的內容創建項目,添加 Spring Web 依賴項,并單擊“生成”按鈕下載 .zip 文件,為下一步做準備。請在進入步驟2之前進行解壓。圖
  • 使用LLM插件從命令行訪問Llama 2

    最近的一個大新聞是Meta AI推出了新的開源授權的大型語言模型Llama 2。這是一項非常重要的進展:Llama 2可免費用于研究和商業用途。(幾小時前,swyy發現它已從LLaMA 2更名為Lla
  • 阿里大調整

    來源:產品劉有媒體報道稱,近期淘寶天貓集團啟動了近年來最大的人力制度改革,涉及員工績效、層級體系等多個核心事項,目前已形成一個初步的&ldquo;征求意見版&rdquo;:1、取消P序列
  • 攜眾多高端產品亮相ChinaJoy,小米帶來一場科技與人文的視聽盛宴

    7月28日,全球數字娛樂領域最具知名度與影響力的年度盛會中國國際數碼互動娛樂展覽會(簡稱ChinaJoy)在上海新國際博覽中心盛大開幕。作為全球領先的科
  • 網傳小米汽車開始篩選交付中心 建筑面積不低于3000平方米

    7月7日消息,近日有微博網友@長三角行健者爆料稱,據經銷商集團反饋,小米汽車目前已經開始了交付中心的篩選工作,要求候選場地至少有120個車位,建筑不能低
  • 回歸OPPO兩年,一加贏了銷量,輸了品牌

    成為OPPO旗下主打性能的先鋒品牌后,一加屢創佳績。今年618期間,一加手機全渠道銷量同比增長362%,憑借一加 11、一加 Ace 2、一加 Ace 2V三款爆品,一加
  • 華為舉行春季智慧辦公新品發布會 首次推出電子墨水屏平板

    北京時間2月27日晚,華為在巴塞羅那舉行春季智慧辦公新品發布會,在海外市場推出之前已經在中國市場上市的筆記本、平板、激光打印機等辦公產品,并首次推出搭載
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国产精品永久免费在线| 欧美大片免费观看在线观看网站推荐 | 亚洲激情精品| 99国产麻豆精品| 午夜精品区一区二区三| 久久精品女人| 欧美激情亚洲| 国产精品自拍小视频| 136国产福利精品导航网址应用| 亚洲免费大片| 欧美一级久久久| 免费久久精品视频| 欧美四级在线观看| 狠狠综合久久| 中日韩男男gay无套| 欧美专区福利在线| 欧美福利视频一区| 国产精品午夜春色av| 亚洲国产精品精华液网站| 中文av一区二区| 久久精品一区四区| 欧美日韩裸体免费视频| 国产亚洲毛片| 一本久道综合久久精品| 久久国产精品免费一区| 欧美日韩国产123| 国内精品伊人久久久久av影院| 亚洲精品免费网站| 欧美一区二区三区婷婷月色| 欧美激情视频在线播放| 国产亚洲福利| 亚洲视频在线二区| 老司机一区二区三区| 国产精品久久一区主播| 亚洲国产精品专区久久| 欧美一区国产二区| 欧美日韩中文字幕| 亚洲福利精品| 久久av老司机精品网站导航| 欧美视频不卡| 久久男人资源视频| 国产精品亚洲不卡a| 亚洲精品国产精品国自产观看浪潮 | 欧美日本一区| 狠狠色丁香婷婷综合影院| 一区二区三区欧美日韩| 欧美.www| 国内综合精品午夜久久资源| 亚洲专区欧美专区| 欧美精品尤物在线| 亚洲大黄网站| 久久久7777| 国产欧美视频一区二区| 一本高清dvd不卡在线观看| 欧美11—12娇小xxxx| 国产深夜精品福利| 亚洲素人一区二区| 欧美精品久久久久久久久久| 伊人夜夜躁av伊人久久| 欧美伊久线香蕉线新在线| 国产精品黄色在线观看| 日韩午夜av在线| 欧美成人在线免费视频| 一区在线播放| 久久久美女艺术照精彩视频福利播放 | 欧美成人dvd在线视频| 激情综合色综合久久| 欧美一区二区视频97| 国产精品视频免费观看www| 一区二区高清在线| 欧美精品久久天天躁| 亚洲国产成人一区| 久久这里有精品视频| 国内精品亚洲| 久久精品91久久香蕉加勒比| 国产精品一区免费观看| 亚洲一区日韩| 国产精品久久久久久久久久久久 | 亚洲欧洲精品一区二区三区| 麻豆精品网站| 在线观看av一区| 久久午夜影视| 伊人久久大香线蕉综合热线| 久久精品国产精品| 国产欧美精品日韩| 欧美与黑人午夜性猛交久久久| 国产欧美一区二区视频| 欧美一区二区三区视频免费| 国产欧美日韩精品专区| 欧美一级播放| 国产一区二区三区不卡在线观看| 欧美中文字幕在线播放| 久久久久网址| 国语自产精品视频在线看一大j8 | 欧美日产国产成人免费图片| 日韩一二在线观看| 欧美日韩视频免费播放| 中文国产成人精品久久一| 欧美午夜精品理论片a级按摩| 亚洲视频网站在线观看| 日韩天堂在线观看| 99av国产精品欲麻豆| 欧美在线亚洲综合一区| 先锋影院在线亚洲| 亚洲特级毛片| 国产在线观看一区| 国产日韩欧美一区二区三区在线观看| 奶水喷射视频一区| 免费人成网站在线观看欧美高清| 久久最新视频| 欧美亚洲不卡| 亚洲国产欧美国产综合一区 | 国产精品女主播一区二区三区| 黑人一区二区| 欧美日韩国语| 欧美精品一区二区三区视频| 国产精品日韩在线一区| 亚洲国产精品尤物yw在线观看 | 欧美主播一区二区三区美女 久久精品人 | 欧美精品免费在线| 亚洲欧洲视频在线| 欧美激情国产日韩| 国产精品一区免费在线观看| 国产精品你懂的在线| 国产一区二区在线免费观看| 欧美激情1区2区| 国产精品亚洲欧美| 国语精品一区| 亚洲国产老妈| 亚洲精品一区二区三区不| 亚洲综合第一| 欧美日韩精品一本二本三本| 狠狠久久亚洲欧美专区| 亚洲午夜av电影| 亚洲在线视频观看| 欧美诱惑福利视频| 国产精品二区影院| 亚洲欧美成人一区二区三区| 欧美高清不卡在线| 99精品99久久久久久宅男| 欧美精品1区2区| 欧美三级黄美女| 国产精品羞羞答答| 欧美一区在线直播| 悠悠资源网久久精品| 欧美麻豆久久久久久中文| 香蕉久久精品日日躁夜夜躁| 亚洲第一在线综合在线| 国产精品黄页免费高清在线观看| 久久久久国产一区二区三区四区| 亚洲精品孕妇| 国产一区二区三区四区老人| 欧美区一区二区三区| 久久激五月天综合精品| 日韩视频免费大全中文字幕| 国产欧美日韩综合一区在线观看| 欧美福利视频网站| 久久成人18免费观看| 99成人在线| 韩国一区电影| 国产精品久久久久久久久久久久| 久久午夜色播影院免费高清| 亚洲欧美国产高清| 日韩视频免费观看| 精品成人乱色一区二区| 国产精品女主播一区二区三区| 欧美大片一区二区| 久久国内精品视频| 亚洲欧美日韩国产中文| 亚洲精品一区二区三区不| 精品不卡在线| 国产午夜精品理论片a级大结局 | 国产精品嫩草影院一区二区| 欧美肥婆在线| 久久高清国产| 亚洲免费影视| 一本高清dvd不卡在线观看| 精品69视频一区二区三区 | 亚洲免费观看高清在线观看| 国产一区二区三区在线观看免费视频| 欧美日一区二区在线观看 | 国产精品久久久久av免费| 欧美日韩成人一区二区| 免费永久网站黄欧美| 久久精品一区二区国产| 亚洲欧美在线x视频| 中日韩在线视频| 正在播放日韩| 亚洲精品乱码久久久久久蜜桃91| 在线精品国精品国产尤物884a| 国产午夜久久久久| 国产精品一区二区男女羞羞无遮挡 | 亚洲三级观看| 亚洲黄色有码视频| 在线看国产一区| 狠狠色丁香婷婷综合影院| 国产日韩欧美综合| 国产日韩一区欧美| 国产精品女主播在线观看| 欧美日韩亚洲一区二| 欧美日韩视频不卡| 欧美极品欧美精品欧美视频| 欧美黑人一区二区三区| 欧美精彩视频一区二区三区|