用css3和jquery实现的渐变的动态进度条
进度条是网站中常见的一种,今天经过研究外国一个网站的例子,试着用css3来实现进度条:
html代码如下:
<div class="progress-bar blue stripes">
<span style="width: 40%"></span>
</div>
<p>Set above to:
<a href="#" class="quarter">25%</a> /
<a href="#" class="half">50%</a> /
<a href="#" class="three-quarters">75%</a> /
<a href="#" class="full">100%</a>
</p>
<div class="progress-bar orange shine">
<span style="width: 65%"></span>
</div>
<p>Set above to:
<a href="#" class="quarter">25%</a> /
<a href="#" class="half">50%</a> /
<a href="#" class="three-quarters">75%</a> /
<a href="#" class="full">100%</a>
</p>
<div class="progress-bar green glow">
<span style="width: 55%"></span>
</div>
<p>Set above to:
<a href="#" class="quarter">25%</a> /
<a href="#" class="half">50%</a> /
<a href="#" class="three-quarters">75%</a> /
<a href="#" class="full">100%</a>
</p>
css样式:
body{ background:#222; width:360px; margin:0 auto; font:13px 'trebuchet MS',Arial,Helvetica;}
h2, p {text-align: center;color: #fafafa;text-shadow: 0 1px 0 #111; }
a {color: #777;}
.progress-bar{ background-color:#1a1a1a; height:25px; padding:5px; width:350px; margin:70px 0 20px 0;-moz-border-radius:5px; -webkit-border-raidus:5px; border-radius:5px;-moz-box-shadow:0 1px 5px #000 inset, 0 1px 0 #444;-webkit-box-shadow:0 1px 5px #1a1a1a inset,0 1px 0 #444; box-shadow:0 1px 5px inset,0 1px 0 #444; }
.progress-bar span{ display:inline-block; height:100%; background-color:#777; -moz-border-radius:3px;-webkit-border-radius:3px; border-radius:3px; border-radius:3px; box-shadow:0 1px 0 rgba(255,255,255,.5) inset; -webkit-box-shadow:0 1px 0 rgba(255,255,.5) inset; -moz-box-shadow:0 1px 0 rgba(255,255,.5) inset; -webkit-transition:width .4s ease-in-out; -moz-transition:width .4s ease-in-out;-ms-transition:width .4s ease-in-out;transition: width .4s ease-in-out; }
主要实现进度条的背景:
.blue span {
background-color: #34c2e3;
}
.orange span{
background-color:#fecf23;
background-image:-webkit-gradient(linear,left top,left bottom,from(#fecf23), to(#fd9215));
background-image:-webkit-linear-gradient(top,#fecf23, #fd9215);
background-image:-moz-linear-gradient(top,#fecf23, #fd9215);
background-image:-ms-linear-gradient(top, #fecf23, #fd9215);
background-image:-o-linear-gradient(top, #fecf23, #fd9215);
background-image: linear-gradient(top, #fecf23, #fd9215);
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#fecf23', endColorstr='#fd9215'); /* IE6 & IE7 */
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#fecf23', endColorstr='#fd9215')"; /* IE8 */
}
.green span{
background-color:#a5df41;
background-image:-webkit-gradient(linear,left top,left bottom,from(#a5df41), to(#4ca916));
background-image:-webkit-linear-gradient(top,#a5df41, #4ca916);
background-image:-moz-linear-gradient(top,#a5df41, #4ca916);
background-image: -ms-linear-gradient(top, #a5df41, #4ca916);
background-image: -o-linear-gradient(top, #a5df41, #4ca916);
background-image: linear-gradient(top, #a5df41, #4ca916);
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#a5df41', endColorstr='#4ca916'); /* IE6 & IE7 */
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#a5df41', endColorstr='#4ca916')"; /* IE8 */
}
.stripes span {
-webkit-background-size: 30px 30px;
-moz-background-size: 30px 30px;
background-size: 30px 30px;
background-image: -webkit-gradient(linear, left top, right bottom,
color-stop(.25, rgba(255, 255, 255, .15)), color-stop(.25, transparent),
color-stop(.5, transparent), color-stop(.5, rgba(255, 255, 255, .15)),
color-stop(.75, rgba(255, 255, 255, .15)), color-stop(.75, transparent),
to(transparent));
background-image: -webkit-linear-gradient(135deg, rgba(255, 255, 255, .15) 25%, transparent 25%,
transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%,
transparent 75%, transparent);
background-image: -moz-linear-gradient(135deg, rgba(255, 255, 255, .15) 25%, transparent 25%,
transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%,
transparent 75%, transparent);
background-image: -ms-linear-gradient(135deg, rgba(255, 255, 255, .15) 25%, transparent 25%,
transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%,
transparent 75%, transparent);
background-image: -o-linear-gradient(135deg, rgba(255, 255, 255, .15) 25%, transparent 25%,
transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%,
transparent 75%, transparent);
background-image: linear-gradient(135deg, rgba(255, 255, 255, .15) 25%, transparent 25%,
transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%,
transparent 75%, transparent);
-webkit-animation: animate-stripes 3s linear infinite;
-moz-animation: animate-stripes 3s linear infinite;
}
@-webkit-keyframes animate-stripes {
0% {background-position: 0 0;} 100% {background-position: 60px 0;}
}
@-moz-keyframes animate-stripes {
0% {background-position: 0 0;} 100% {background-position: 60px 0;}
}
.shine span {
position: relative;
}
.shine span::after {
content: '';
opacity: 0;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: #fff;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
-webkit-animation: animate-shine 2s ease-out infinite;
-moz-animation: animate-shine 2s ease-out infinite;
}
@-webkit-keyframes animate-shine {
0% {opacity: 0; width: 0;}
50% {opacity: .5;}
100% {opacity: 0; width: 95%;}
}
@-moz-keyframes animate-shine {
0% {opacity: 0; width: 0;}
50% {opacity: .5;}
100% {opacity: 0; width: 95%;}
}
/*---------------------------*/
.glow span {
-moz-box-shadow: 0 5px 5px rgba(255, 255, 255, .7) inset, 0 -5px 5px rgba(255, 255, 255, .7) inset;
-webkit-box-shadow: 0 5px 5px rgba(255, 255, 255, .7) inset, 0 -5px 5px rgba(255, 255, 255, .7) inset;
box-shadow: 0 5px 5px rgba(255, 255, 255, .7) inset, 0 -5px 5px rgba(255, 255, 255, .7) inset;
-webkit-animation: animate-glow 1s ease-out infinite;
-moz-animation: animate-glow 1s ease-out infinite;
}
@-webkit-keyframes animate-glow {
0% { -webkit-box-shadow: 0 5px 5px rgba(255, 255, 255, .7) inset, 0 -5px 5px rgba(255, 255, 255, .7) inset;}
50% { -webkit-box-shadow: 0 5px 5px rgba(255, 255, 255, .3) inset, 0 -5px 5px rgba(255, 255, 255, .3) inset;}
100% { -webkit-box-shadow: 0 5px 5px rgba(255, 255, 255, .7) inset, 0 -5px 5px rgba(255, 255, 255, .7) inset;}
}
@-moz-keyframes animate-glow {
0% { -moz-box-shadow: 0 5px 5px rgba(255, 255, 255, .7) inset, 0 -5px 5px rgba(255, 255, 255, .7) inset;}
50% { -moz-box-shadow: 0 5px 5px rgba(255, 255, 255, .3) inset, 0 -5px 5px rgba(255, 255, 255, .3) inset;}
100% { -moz-box-shadow: 0 5px 5px rgba(255, 255, 255, .7) inset, 0 -5px 5px rgba(255, 255, 255, .7) inset;}
}
预览效果:
jquey部分:
$(document).ready(function(){
$('.quarter').click(function(){
$(this).parent().prev().children("span").css('width','25%');
});
$('.half').click(function(){
$(this).parent().prev().children('span').css("width",'50%');
});
$('.three-quarters').click(function(){
$(this).parent().prev().children('span').css('width','75%');
});
$('.full').click(function(){
$(this).parent().prev().children('span').css('width','100%');
})
})