css+js實現(xiàn)精致的動畫進度條

有一個精致的動畫進度條验懊,上面還有當前進度的百分比數(shù)字顯示擅羞,而且還會跟著進度條而移動。相信追求新穎的朋友來說一定會非常的喜歡义图。

HTML代碼

HTML的代碼非常簡單减俏,只要為進度條提供一個容器就可以了〖罟ぃ基本的HTML代碼如下:

Loading

Please wait...(By:www.jiawin.com)

CSS樣式表

接下來是為我們的進度條定義樣式娃承,這里主要運用了CSS3的linear-gradient的漸變屬性、border-radius的圓角屬性怕篷、box-shadow的陰影屬性等等历筝,來制作出進度條的初步模型。完成進度條的模型后我們利用animation屬性廊谓,讓進度條開始動起來梳猪,就其中的進度條動畫設置代碼如下:

.load-bar-inner {

height: 99%;

width: 0%;

border-radius: inherit;

position: relative;

background: #c2d7ac;

background: linear-gradient(#e0f6c8, #98ad84);

box-shadow: inset 0 1px 0 rgba(255, 255, 255, 1),? 0 1px 5px rgba(0, 0, 0, 0.3),? 0 4px 5px rgba(0, 0, 0, 0.3);

animation: loader 10s linear infinite;

}

如果接觸了CSS3的朋友,相信大多數(shù)人對這個屬性都比較熟悉了蹂析,在這里大概的說明一下animation設置的參數(shù):

設置對象所應用的動畫名稱:loader

設置對象動畫的持續(xù)時間:10s

設置對象動畫的過渡類型:linear (線性過渡舔示,等同于貝塞爾曲線)

設置對象動畫的循環(huán)次數(shù):infinite (無限循環(huán))

@keyframes loader這個標簽屬性是用來被animation使用的,定義動畫時电抚,簡單的動畫可以直接使用關鍵字from和to惕稻,即從一種狀態(tài)過渡到另一種狀態(tài):

@keyframes loader {

from {

width: 0%;

}

to {

width: 100%;

}

}

下面是完整的CSS代碼,大家可以多研究下蝙叛,也可以自己修改其中的代碼俺祠,看看是否制作出更加有趣的東西來:

* {

box-sizing: border-box;

}

html {

height: 100%;

}

body {

background: #efeeea;

background: linear-gradient(#f9f9f9, #cecbc4);

background: -moz-linear-gradient(#f9f9f9, #cecbc4);

background: -webkit-linear-gradient(#f9f9f9, #cecbc4);

background: -o-linear-gradient(#f9f9f9, #cecbc4);

color: #757575;

font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;

text-align: center;

}

h1, p {

padding:0; margin:0;

}

.wrapper {

width: 350px;

margin: 200px auto;

}

.wrapper p a {color:#757575; text-decoration:none;}

.wrapper .load-bar {

width: 100%;

height: 25px;

border-radius: 30px;

background: #dcdbd7;

position: relative;

box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8),? inset 0 2px 3px rgba(0, 0, 0, 0.2);

}

.wrapper .load-bar:hover .load-bar-inner, .wrapper .load-bar:hover #counter {

animation-play-state: paused;

-moz-animation-play-state: paused;

-o-animation-play-state: paused;

-webkit-animation-play-state: paused;

}

.wrapper .load-bar-inner {

height: 99%;

width: 0%;

border-radius: inherit;

position: relative;

background: #c2d7ac;

background: linear-gradient(#e0f6c8, #98ad84);

background: -moz-linear-gradient(#e0f6c8, #98ad84);

background: -webkit-linear-gradient(#e0f6c8, #98ad84);

background: -o-linear-gradient(#e0f6c8, #98ad84);

box-shadow: inset 0 1px 0 rgba(255, 255, 255, 1),? 0 1px 5px rgba(0, 0, 0, 0.3),? 0 4px 5px rgba(0, 0, 0, 0.3);

animation: loader 10s linear infinite;

-moz-animation: loader 10s linear infinite;

-webkit-animation: loader 10s linear infinite;

-o-animation: loader 10s linear infinite;

}

.wrapper #counter {

position: absolute;

background: #eeeff3;

background: linear-gradient(#eeeff3, #cbcbd3);

background: -moz-linear-gradient(#eeeff3, #cbcbd3);

background: -webkit-linear-gradient(#eeeff3, #cbcbd3);

background: -o-linear-gradient(#eeeff3, #cbcbd3);

padding: 5px 10px;

border-radius: 0.4em;

box-shadow: inset 0 1px 0 rgba(255, 255, 255, 1),? 0 2px 4px 1px rgba(0, 0, 0, 0.2),? 0 1px 3px 1px rgba(0, 0, 0, 0.1);

left: -25px;

top: -50px;

font-size: 12px;

font-weight: bold;

width: 44px;

animation: counter 10s linear infinite;

-moz-animation: counter 10s linear infinite;

-webkit-animation: counter 10s linear infinite;

-o-animation: counter 10s linear infinite;

}

.wrapper #counter:after {

content: "";

position: absolute;

width: 8px;

height: 8px;

background: #cbcbd3;

transform: rotate(45deg);

-moz-transform: rotate(45deg);

-webkit-transform: rotate(45deg);

-o-transform: rotate(45deg);

left: 50%;

margin-left: -4px;

bottom: -4px;

box-shadow:? 3px 3px 4px rgba(0, 0, 0, 0.2),? 1px 1px 1px 1px rgba(0, 0, 0, 0.1);

border-radius: 0 0 3px 0;

}

.wrapper h1 {

font-size: 28px;

padding: 20px 0 8px 0;

}

.wrapper p {

font-size: 13px;

}

@keyframes loader {

from {

width: 0%;

}

to {

width: 100%;

}

}

@-moz-keyframes loader {

from {

width: 0%;

}

to {

width: 100%;

}

}

@-webkit-keyframes loader {

from {

width: 0%;

}

to {

width: 100%;

}

}

@-o-keyframes loader {

from {

width: 0%;

}

to {

width: 100%;

}

}

@keyframes counter {

from {

left: -25px;

}

to {

left: 323px;

}

}

@-moz-keyframes counter {

from {

left: -25px;

}

to {

left: 323px;

}

}

@-webkit-keyframes counter {

from {

left: -25px;

}

to {

left: 323px;

}

}

@-o-keyframes counter {

from {

left: -25px;

}

to {

left: 323px;

}

}

在這里其實有很多個CSS3的知識點,例如進度條上面的進度提示的小圖標的下方有個小三角形借帘,這個小三角主要是通過制作一個小的正方形蜘渣,然后利用position來定位,調整好位置后肺然,再通過transform來轉換角度蔫缸,使之最終成為一個三角形。大家可以多多看看里面的一些小細節(jié)际起,對于學習CSS3來說是很有幫助的拾碌。

Javascript

完成了進度條的模型,而且進度條也通過CSS3的定義開始動起來了街望,那我們就接下來用jQuery來完善我們的進度條校翔,讓他成為一個不管外表還是內心都很強大的進度條。嘿嘿…在這里主要做的是讓進度條上面的數(shù)字隨著進度而發(fā)生變化灾前,從而客觀的知道當前進度條的進度百分比防症,看下面的代碼:

$(function(){

var interval = setInterval(increment,100);

var current = 0;

function increment(){

current++;

$('#counter').html(current+'%');

if(current == 100) { current = 0; }

}

$('.load-bar').mouseover(function(){

clearInterval(interval);

}).mouseout(function(){

interval = setInterval(increment,100);

});

});

原文鏈接:http://www.jiawin.com/css3-digital-progress-bar

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蔫敲,更是在濱河造成了極大的恐慌饲嗽,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件燕偶,死亡現(xiàn)場離奇詭異喝噪,居然都是意外死亡,警方通過查閱死者的電腦和手機指么,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來榴鼎,“玉大人伯诬,你說我怎么就攤上這事∥撞疲” “怎么了盗似?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長平项。 經(jīng)常有香客問我赫舒,道長,這世上最難降的妖魔是什么闽瓢? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任接癌,我火速辦了婚禮,結果婚禮上扣讼,老公的妹妹穿的比我還像新娘缺猛。我一直安慰自己,他們只是感情好椭符,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布荔燎。 她就那樣靜靜地躺著,像睡著了一般销钝。 火紅的嫁衣襯著肌膚如雪有咨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天蒸健,我揣著相機與錄音座享,去河邊找鬼。 笑死纵装,一個胖子當著我的面吹牛征讲,可吹牛的內容都是我干的。 我是一名探鬼主播橡娄,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼诗箍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了挽唉?” 一聲冷哼從身側響起滤祖,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤筷狼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后匠童,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體埂材,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年汤求,在試婚紗的時候發(fā)現(xiàn)自己被綠了俏险。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡扬绪,死狀恐怖竖独,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情挤牛,我是刑警寧澤莹痢,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站墓赴,受9級特大地震影響竞膳,放射性物質發(fā)生泄漏。R本人自食惡果不足惜诫硕,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一坦辟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧痘括,春花似錦长窄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至翰舌,卻和暖如春嚣潜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背椅贱。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工懂算, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人庇麦。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓计技,卻偏偏與公主長得像,于是被迫代替她去往敵國和親山橄。 傳聞我的和親對象是個殘疾皇子垮媒,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內容