原文:www.florin-pop.com/blog/2019/0…
做者:FLORIN POP
翻譯:前端小白css
進度條用於顯示用戶的一個操做完成了多少。 一個很好的例子是下載進度條,它顯示已經下載了多少文件(若是上傳文件,它也能夠是上傳進度條🙂)。html
在本文中,咱們未來構建一個相似於這種進度條:codepen前端
html 結構:web
.progress-bar
.progress
<div class="progress-bar">
<div data-size="20" class="progress"></div>
</div>
複製代碼
如你所見,.progress
div 具備 data-size
屬性。 這將在 JavaScript 中用於實際設置進度元素的寬度。 你立刻就會理解個人意思,但首先讓咱們給這兩個元素添加樣式。 😄動畫
.progress-bar {
background-color: #fefefe;
border-radius: 3px;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
margin: 15px;
height: 30px;
width: 500px;
max-width: 100%;
}
.progress {
background: #ad5389;
background: -webkit-linear-gradient(to bottom, #3c1053, #ad5389);
background: linear-gradient(to bottom, #3c1053, #ad5389);
border-radius: 3px;
height: 30px;
width: 0;
transition: width 0.5s ease-in;
}
複製代碼
上面的 css 有幾點須要注意:ui
30px
),相同的 border-radius
.progress
的寬度初始化爲0,咱們會在接下來的 JavaScript 的代碼中更改.progress
有一個漂亮的 linear-gradient
,參考 uiGradients。.progress
中添加 transition
來顯示動畫,當 data-size
的值動態改變時咱們須要遍歷全部 .progress
元素(在咱們的示例中只有一個,但您能夠在應用程序中添加多個元素),以獲取它們的 data-set
屬性並將其設置爲寬度。在本例中,咱們將使用百分比(%
)。spa
const progress_bars = document.querySelectorAll('.progress');
progress_bars.forEach(bar => {
const { size } = bar.dataset;
bar.style.width = `${size}%`;
});
複製代碼
咱們在其中使用了 對象解構 的語法翻譯
這個組件還有其餘不少地方能夠完善:code
size
的值來設置動態動畫