亚洲乱色熟女一区二区三区丝袜,天堂√中文最新版在线,亚洲精品乱码久久久久久蜜桃图片,香蕉久久久久久av成人,欧美丰满熟妇bbb久久久

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

【W(wǎng)EB開(kāi)發(fā)】前端 button 組件之按鈕式進(jìn)度條

admin
2025年7月21日 7:58 本文熱度 150

作者:_island

https://juejin.cn/post/6992141459977682951

前言

在一些前端項(xiàng)目中,它們會(huì)涉及文件的上傳 / 下載 功能,當(dāng)文件在進(jìn)行上傳 / 下載時(shí),我們?cè)撛趺锤玫南蛴脩?hù)進(jìn)行進(jìn)度反饋呢?我們常見(jiàn)的有彈窗式進(jìn)度條、吸頂式進(jìn)度條 ...

本篇章將給大家?guī)?lái)按鈕式進(jìn)度條,并手把手帶領(lǐng)大家一步步的從零手寫(xiě)按鈕式進(jìn)度條 ?????

話(huà)不多說(shuō),先看看成品再碼

實(shí)現(xiàn)效果

1.gif

原理

創(chuàng)建一個(gè)div作為按鈕的總體,在按鈕里邊放入3個(gè)div,分別是進(jìn)度條元素,圖標(biāo)元素,文本元素,我們將按鈕設(shè)置為相對(duì)定位,將進(jìn)度條元素設(shè)置為絕對(duì)定位,利用topleft值來(lái)控制進(jìn)度條,讓我們用碼實(shí)現(xiàn)!

2.png

用碼實(shí)現(xiàn)

碼出基本樣式
<div class="button">
    <span class="text">download</span>
</div>
復(fù)制代碼
 .button {
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
        position: relative;
        display: flex;
        align-items: center;
        justify-content: center;
        width160px;
        height40px;
        color: black;
        background: white;
        border-radius10px;
        margin015px;
        font-size18px;
        text-decoration: none;
        overflow: hidden;
    }
復(fù)制代碼

3.png

很快,我們按鈕的基本樣式已經(jīng)寫(xiě)出來(lái)了,接下來(lái)我們先實(shí)現(xiàn)進(jìn)度條效果,在.button元素下創(chuàng)建一個(gè)span標(biāo)簽,并綁定上一個(gè)progress類(lèi)名作為進(jìn)度條元素。這里不能使用偽元素,因?yàn)楹罄m(xù)我們需要使用JavaScript來(lái)控制按鈕的狀態(tài)。而偽元素是不能通過(guò)JavaScript被查找到的。

后續(xù)我會(huì)出一篇關(guān)于偽元素的文章 關(guān)注我 不迷路 ?? ??

<div class="button">
    <span class="text">download</span>
    <span class="progress"></span>
</div>
復(fù)制代碼

把進(jìn)度條元素的樣式寫(xiě)上

.progress {
    content'';
    position: absolute;
    top: 90%;
    left: -100%;
    width: 100%;
    height: 100%;
    background: #4776E6
    background: -webkit-linear-gradient(to right, #8E54E9, #4776E6); 
    background: linear-gradient(to right, #8E54E9, #4776E6); 
    transition: all 4s;
  }
復(fù)制代碼

我們先把overflowhidden屬性注釋掉,可以看到現(xiàn)在.progress元素位于按鈕元素的左下邊。露出10%的高度顯示在按鈕可見(jiàn)范圍中。后面我們通過(guò)JavaScriptAPI來(lái)獲取到.progress元素,控制該元素的left值就可以實(shí)現(xiàn)進(jìn)度條效果啦!

4.png

碼出下載效果

我們使用JavaScriptquerySelectorAll方法,獲取.button.progress元素,及.text元素。

const btn = document.querySelectorAll('.button')[0];
const pr = document.querySelectorAll('.progress')[0];
const text = document.querySelectorAll('.text')[0];
復(fù)制代碼

.button元素添加點(diǎn)擊事件,當(dāng)按鈕被點(diǎn)擊時(shí)我們將按鈕的left值設(shè)置為0,也就是進(jìn)度100%的效果。

btn.addEventListener('click', () => {
  pr.style.left = '0';
});
復(fù)制代碼

5.gif

接下來(lái),我們把按鈕元素的overflow屬性設(shè)置為hidden時(shí)。

6.gif

到了這里,我們已經(jīng)完成了進(jìn)度條效果,但對(duì)比效果圖還是差了那么一點(diǎn)點(diǎn),當(dāng)進(jìn)度條到100%之后,我們需要將.progress元素的top值設(shè)置為0,把整塊元素上移。在點(diǎn)擊事件后加入以下代碼:

setTimeout(() => {
  pr.style.top = '0';
  pr.style.transitionDuration = '1s';
  text.style.color = 'white';
  text.innerText = 'downloaded';
}, 4000);
復(fù)制代碼

另外,在.progress元素上移后它會(huì)將我們的.text元素覆蓋上去,為此我們需要將.text的層級(jí)提升下。

.text{
        z-index10;
    }
復(fù)制代碼

7.gif

引入圖標(biāo)

HTML中引入 font awesome這個(gè)圖標(biāo)庫(kù)。

  <link href="https://cdn.bootcdn.net/ajax/libs/font-awesome/5.15.3/css/all.css" rel="stylesheet">
復(fù)制代碼

我們需要用到的圖標(biāo)分別:

<i class="fa fa-arrow-down" aria-hidden="true"></i>
<i class="fa fa-download" aria-hidden="true"></i>
<i class="fa fa-check" aria-hidden="true"></i>
復(fù)制代碼

我們?cè)?/span>.button元素中插入這個(gè)i標(biāo)簽,為了圖標(biāo)不被進(jìn)度條元素覆蓋,同樣把層級(jí)設(shè)置為10。

<i class="fa fa-arrow-down" aria-hidden="true"></i>
復(fù)制代碼
i {
    margin0 8px 0 0;
    font-size16px;
    z-index10;
  }
復(fù)制代碼

8.png

給這個(gè)圖標(biāo)設(shè)置一個(gè)循環(huán)動(dòng)畫(huà),這樣可以用來(lái)吸引用戶(hù)眼球從而促使去點(diǎn)擊它 。

@keyframes tapDownload {
  0% {
    transformtranslateY(2px);
  }
  100% {
    transformtranslateY(0);
  }
}

.fa-arrow-down{
    animation: tapDownload 1s ease infinite;
}
復(fù)制代碼

9.gif

加了這個(gè)動(dòng)效之后,用戶(hù)是不是更有點(diǎn)擊欲啦?

動(dòng)態(tài)更換圖標(biāo)

同樣,我們使用JavaScriptquerySelectorAll方法,獲取icon元素。

const icon = document.querySelectorAll('.fa')[0];
復(fù)制代碼

通過(guò)對(duì)比上面三個(gè)圖標(biāo)元素,我們發(fā)現(xiàn)它們都有共同的類(lèi)名為fa,而不同的是后面fa-*這個(gè)類(lèi),當(dāng)按鈕狀態(tài)改變時(shí)就將對(duì)應(yīng)的類(lèi)名移除后再添加上新的類(lèi)名即可,在按鈕的點(diǎn)擊事件中添加以下代碼:

btn.addEventListener('click', () => {
  pr.style.left = '0';
  icon.classList.remove('fa-arrow-down');
  icon.classList.add('fa-download');
  text.innerText = 'downloading';
  setTimeout(() => {
    // 忽略了一些代碼
    icon.style.color = 'white';
    icon.classList.remove('fa-download');
    icon.classList.add('fa-check');
  }, 4000);
});
復(fù)制代碼

在下載過(guò)程中,我們給下載圖標(biāo)的fa-download類(lèi)綁定一個(gè)幀動(dòng)畫(huà)。

@keyframes downloading {
  0% {
    transformscale(.7);
  }
  100% {
    transformscale(1);
  }
}

.fa-download {
    animation: downloading 1s ease infinite alternate-reverse;
  }
復(fù)制代碼

10.gif

最后

本文帶著大家從零實(shí)現(xiàn)到一個(gè)進(jìn)度條按鈕,使用前端三件套HTMLCSSJavaScript進(jìn)行進(jìn)度條式按鈕開(kāi)發(fā)。還引入的font awesome庫(kù)。希望大家能從中有所收獲,寫(xiě)出更好更炫酷的動(dòng)畫(huà)效果。


閱讀原文:原文鏈接


該文章在 2025/7/21 10:18:14 編輯過(guò)
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶(hù)的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved