国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開發(fā) > CSS > 正文

實(shí)現(xiàn)點(diǎn)擊按鈕后CSS加載效果的實(shí)現(xiàn)

2024-07-11 08:59:58
字體:
供稿:網(wǎng)友

由于自己公司產(chǎn)品里頭,有個(gè)按鈕在點(diǎn)擊之后,會(huì)有一兩秒的等待時(shí)間(寄認(rèn)證信),因此為了避免點(diǎn)擊后一兩秒的加載時(shí)間空窗,就做個(gè)loading動(dòng)畫來強(qiáng)化使用者體驗(yàn),原本想說直接用張gif來解決,但又想借著這個(gè)機(jī)會(huì)練功,就使用了CSS的漸變效果來達(dá)成,沒想到效果還滿好的,而且不需要額外增加div之類的元素,單純修改CSS和加上點(diǎn)擊事件就完成了。

效果演示

先來看一下完成的效果。

實(shí)現(xiàn)過程

這個(gè)效果其實(shí)很容易,先來看一下原本的按鈕長(zhǎng)相,就只是個(gè)div套用CSS而已。

HTML:

<div class="btn">click me</div>

CSS:

.btn{  position:relative;  width:200px;  height:30px;  line-height:30px;  text-align:center;  border-radius:3px;  background:#5ad;  color:#fff;  cursor:pointer;}

長(zhǎng)相就會(huì)是這樣(就只是很簡(jiǎn)單的CSS):


 

那么要怎么在上面蓋上動(dòng)畫呢?這時(shí)候就要利用CSS的偽元素,在上方蓋上一個(gè)before偽元素,把動(dòng)畫放在這個(gè)偽元素內(nèi)即可。

CSS:

.btn::before{  content:"loading";  position:absolute;  width:200px;  height:30px;  line-height:30px;  text-align:center;  border-radius:3px;  z-index:2;      top:0;  left:0;  color:#fff;  text-shadow:rgba(100,0,0,1) 0 0 3px;  background:#c00;}

套上before之后,就會(huì)發(fā)現(xiàn)原本的被覆蓋了。

了解原理后,再來就是把before的背景改成動(dòng)畫,這里用到兩個(gè)CSS3的技巧,第一個(gè)是漸變色的背景,第二個(gè)是動(dòng)畫,第一個(gè)漸變色比較復(fù)雜些,主要就是讓漸變以45度的方式填充,內(nèi)容是兩種顏色互相搭配,但必須配合background-size,讓漸變能夠順利地接在一起,這邊通常是要調(diào)整最久的地方。

background:linear-gradient(45deg,#fc0 0%,#fc0 20%,#fa0 20%, #fa0 45%,#fc0 45%,#fc0 70%,#fa0 70%, #fa0 95%,#fc0 95%,#fc0 100%);background-size:30px 30px;background-position:0 0;

從下圖可以看到,如果沒有一步步調(diào)整,出來的長(zhǎng)相可能就會(huì)沒接好,調(diào)整完成的就會(huì)接得很順暢。


 

完成之后就是要套用CSS3的動(dòng)畫效果,讓background-position改變,背景就會(huì)自動(dòng)變化了。

animation:click 1s infinite linear;    @keyframes click {  0%{    background-position:0 0;  }  100%{    background-position:30px 0;  }}

到這邊其實(shí)完成了百分之八十了,最后一步就是要加上點(diǎn)擊的事件,這里我的作法是先把剛剛的偽元素用display:none隱藏起來,接著新增一個(gè)class名為click,當(dāng)點(diǎn)擊按鈕的時(shí)候,按鈕就會(huì)套用click的class,偽元素就會(huì)出現(xiàn)了,以下是完整的代碼,不過有做了些簡(jiǎn)化,以及讓點(diǎn)擊2秒之后,按鈕會(huì)恢復(fù)原樣。

CSS:

.btn,.btn::before{  width:200px;  height:30px;  line-height:30px;  text-align:center;  border-radius:3px;}.btn{  position:relative;  background:#5ad;  color:#fff;  cursor:pointer;}.btn::before{  content:"loading";  position:absolute;  display:none;  z-index:2;  top:0;  left:0;  color:#fff;  text-shadow:rgba(100,0,0,1) 0 0 3px;  background:linear-gradient(45deg,#fc0 0%,#fc0 20%,#fa0 20%, #fa0 45%,#fc0 45%,#fc0 70%,#fa0 70%, #fa0 95%,#fc0 95%,#fc0 100%);  background-size:30px 30px;  background-position:0 0;  animation:click 1s infinite linear;}.btn.click::before{  display:block;}@keyframes click {  0%{    background-position:0 0;  }  100%{    background-position:30px 0;  }}

jquery:

$(function(){  var timer;  $('.btn').on('click',function(){    $('.btn').addClass('click');    clearTimeout(timer);    timer = setTimeout(function(){      $('.btn').removeClass('click');    },2000);  });});

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 新源县| 唐海县| 荥阳市| 姚安县| 广丰县| 铁岭市| 梁山县| 阜康市| 威海市| 安顺市| 泗水县| 嘉义县| 乌什县| 肥城市| 永胜县| 蒙山县| 沧州市| 克拉玛依市| 进贤县| 洛隆县| 阿拉善右旗| 灵武市| 格尔木市| 文成县| 喀什市| 车致| 云林县| 仙桃市| 米易县| 宜阳县| 古田县| 左权县| 桑日县| 新乡县| 柳河县| 高州市| 峨山| 满洲里市| 诸城市| 长泰县| 涪陵区|