CSS实现进度条
进度条经常运用于网页,即使我们意识到不是所有的东西都将瞬间被加载完成,这些进度条用于提醒使用者关于网页上具体的任务进程,譬如上传,下载,加载应用程序等。
以前如果想要创建一个进度条的动画效果,没有使用JavaScript是不可能实现的。然而感谢CSS3的出现,我们现在能够在div里执行动画,添加梯度和彩色元素。事实上,HTML5为实现此目的也创建了一个特殊的进度条元素。 当你看完这个教程,你将会知道怎样使用纯CSS创建一个有平面动画效果的进度条:无需Flash,无需图片,无需JavaScript。
让我们开始吧...
标签
我们应该写一个样式为.container的div用来包含我们的进度条,其次是用样式为.title的div来包裹我们的标题。
接下来,我们将添加样式为.bar的div来包含填充和未填充的进度条样式。最后,我们将在.bar里添加样式为.bar-unfill 和 .bar-fill 的span标签。
<div class="container">
<div class="title plain">Plain</div>
<div class="bar">
<span class="bar-unfill">
<span class="bar-fill"></span>
</span>
</div>
</div>
简单的进度条的CSS代码
.container类里将width定义为30%使进度条能够自适应。我们也将放一些简单的border-radius之类的属性在我们的.title类里以修改顶部和底部的左边的边框弧度,创建一个简单明了的平板式设计。
.container {
width:30%;
margin:0 auto
}
.title {
background:#545965;
color:#fff;
padding:15px;
float:left;
position:relative;
-webkit-border-top-left-radius:5px;
-webkit-border-bottom-left-radius:5px;
-moz-border-radius-topleft:5px;
-moz-border-radius-bottomleft:5px;
border-top-left-radius:5px;
border-bottom-left-radius:5px
}
现在让我们来写未填充的的样式,首先给他一个白色的背景。
.bar-unfill {
height:15px;
display:block;
background:#fff;
width:100%;
border-radius:8px
}
接下来,我们将定义进度条的样式,先令他的宽度为100%,因为这也会应用于定义和未定义的部分。所以在我们的.bar-fill的类里,我们将令他的宽度为0作为起始的宽度,添加CSS3的transition属性使我们的动画效果更加流畅,最后,我们将添加CSS3里的animation属性,定义动画的名字,和duration和 animation-iteration-count 属性。
.bar-fill {
height:15px;
display:block;
background:#45c9a5;
width:0;
border-radius:8px;
-webkit-transition:width .8s ease;
-moz-transition:width .8s ease;
transition:width .8s ease;
-webkit-animation:progressbar 7s infinite;
animation:progressbar 7s infinite
}
制作这个动画,我们将使用CSS3里的@keyframe规则来设置宽度从0变化到100%。你也能定制你自己喜欢的变化。
/* Chrome, Safari, Opera */
@-webkit-keyframes progressbar {
from {
width:0
}
to {
width:100%
}
}
/* Standard syntax */
@keyframes progressbar {
from {
width:0
}
to {
width:100%
}
}
条纹进度条
若要制作一个条纹进度条,我们应该把.bar-fill重新命名为.bar-fill-stripes。我们将使用backgrou-image属性里的 linear-gradient同时声明它的颜色。剩余的CSS3动画效果也是和上述相同,看下面的代码:
.bar-fill-stripes {
height:15px;
display:block;
background:#e74c3c;
width:0;
border-radius:8px;
background-image:linear-gradient(-45deg,rgba(255,255,255,.2) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.2) 50%,rgba(255,255,255,.2) 75%,transparent 75%,transparent);
-webkit-transition:width .8s ease;
-moz-transition:width .8s ease;
transition:width .8s ease;
-webkit-animation:progressbar 7s infinite;
animation:progressbar 7s infinite
}
有追踪器的进度条
本教程的这部分,我们将为我们的进度条创建一个跟踪器,所以我们将调整一下我们的HTML标签和CSS部分,观察下面的标签。
<div class="container">
<div class="title">Tracker</div>
<div class="bar">
<span class="bar-unfill">
<span class="bar-fill-tracker"></span>
<span class="track-wrap">
<span class="track"></span>
</span>
</span>
</div>
</div>
正如你所看到的那样,我们往类名为.bar-unfill的div里添加了一个类名为.track-weap的span标签。他将包裹我们整个追踪器,然后使用另一个@keyframe规则来产生动画效果,让我们一起写一下.track-wrap和.track的样式吧。
.track-wrap {
position:relative;
top:-18px;
-webkit-animation:progressbar2 7s infinite;
animation:progressbar2 7s infinite
}
.track {
height:20px;
display:block;
background:#e74c3c;
width:20px;
border-radius:10px;
position:relative;
left:-12px
}
/* Chrome, Safari, Opera */
@-webkit-keyframes progressbar2 {
from {
left:0
}
to {
left:100%
}
}
/* Standard syntax */
@keyframes progressbar2 {
from {
left:0
}
to {
left:100%
}
}
正如上面所示,我在.track-wrap类里设置了position为relative,top改为-18px,然后设置一个animation属性。接下来,我设置了追踪器的.track类,并且设置border-radius为10px,left为-12px。另一方面我也通过重新命名为progressbar2的@kyframe添加了动画效果。
HTML5 的进度条
在我们之前的例子里,我们都是使用div来创建一个进度条,但是这次我们将研究如何使用HTML5的进度条。
基础标签
HTML5进度条元素可以通过<progress>标签被添加,在这个标签里面,我们可以设置进度条的各种参数,如value、min、max等属性。请观察下面的基础标签。
<progress value="50" max="100"></progress>
现在将这些元素排成一列,我们可以用上述的便签将这些代码包裹起来,请看下面的代码。
<div class="title html5">HTML5</div>
<div class="bar">
<span class="bar-unfill">
<progress value="50" max="100"></progress>
</span>
</div>
没有什么特别之处,我们只是改变了类名为bar-fill的span标签里的进度条标签。现在让我们试试HTML5的进度条。
progress, progress::-webkit-progress-bar{
height:15px;
display:block;
background-color:#8e44ad;
width:0;
-webkit-border-radius: 8px;
border-radius:8px;
color: #fff;
-webkit-transition:width .8s ease;
-moz-transition:width .8s ease;
transition:width .8s ease;
-webkit-animation:progressbar 7s infinite;
animation:progressbar 7s infinite
}
progress::-moz-progress-bar {
height:15px;
display:block;
background-color:#8e44ad;
width:0;
-webkit-border-radius: 8px;
border-radius:8px;
color: #fff;
-webkit-transition:width .8s ease;
-moz-transition:width .8s ease;
transition:width .8s ease;
-webkit-animation:progressbar 7s infinite;
animation:progressbar 7s infinite
}
改变进度条的样式,我们需要添加Webkit和Mozilla的伪类,使谷歌浏览器和火狐浏览器兼容。
progress::-webkit-progress-bar {
/* style rules for Chrome */
}
progress::-moz-progress-bar {
/* style rules for Firefox*/
}
为了完成HTML5进度条的设计,我想出了下面的CSS。
progress::-webkit-progress-bar{
height:15px;
display:block;
background-color:#8e44ad;
width:0;
-webkit-border-radius: 8px;
border-radius:8px;
color: #fff;
-webkit-transition:width .8s ease;
-moz-transition:width .8s ease;
transition:width .8s ease;
-webkit-animation:progressbar 7s infinite;
animation:progressbar 7s infinite
}
progress::-moz-progress-bar {
height:15px;
display:block;
background-color:#8e44ad;
width:0;
-webkit-border-radius: 8px;
border-radius:8px;
color: #fff;
-webkit-transition:width .8s ease;
-moz-transition:width .8s ease;
transition:width .8s ease;
-webkit-animation:progressbar 7s infinite;
animation:progressbar 7s infinite
}
现在,使用我们第一个例子中的的@keyframe,你将得到相似的结果,如下图所示。 注意:请查看此页关于支持HTML5的进度条的浏览器。
本文根据@Sam Norton的《How to create a CSS3 progress bar》所译,整个译文带有我们自己的理解与思想,如果译得不好或有不对之处还请同行朋友指点。如需转载此译文,需注明英文出处:http://www.developerdrive.com/2015/05/how-to-create-a-css3-progress-bar/。
CSS实现进度条的更多相关文章
- CSS实现进度条和订单进度条
最近半个月为了期末考试,可要了学渣我半瓶血啊!今天本该好好复习的,可是状态不好,就随便找点乐子玩一玩,于是乎就想起之前面试时面试官给的一道题(见标题),那就弄点简单的小玩意给自己洗洗脑咯. 简单地效果 ...
- 每日CSS_纯CSS制作进度条
每日CSS_纯CSS制作进度条 2020_12_26 源码 1. 代码解析 1.1 html 代码解析 设置整个容器 <div class="container"> . ...
- css 实现进度条
<select id="progress" onchange="changeProgress(this)"> <option value=&q ...
- Css静态进度条
图片预览: Css代码: <style> .statusList{width:240px; float:left; line-height:68px;margin:0 2px; text- ...
- CSS 静态进度条效果
今天学习到了实现一个静态进度条的方法,固写一篇笔记稳固一下自己的知识. 最终的效果如下,进度条放在一个框里,水平宽自适应. 现在就开始,首先写一个进度条先. .progress-bar{ /* 进度条 ...
- 纯CSS打造进度条
进度条效果如下: CSS部分 body { background-color: white; } .progress-bar { display: flex; flex-direction: row; ...
- 不可思议的纯 CSS 滚动进度条效果
结论先行,如何使用 CSS 实现下述滚动条效果? 就是顶部黄色的滚动进度条,随着页面的滚动进度而变化长短. 在继续阅读下文之前,你可以先缓一缓.尝试思考一下上面的效果或者动手尝试一下,不借助 JS , ...
- css绘制进度条,持续转动的进度条
//只有 progress pregress-par bar,进度条不会转, //增加 active 这个类,进度条会转, //html结构 <div class='progress activ ...
- CSS+DIV进度条
<style type="text/css"> .Bar { position: relative; width: 200px; /* 宽度 */ border: 1p ...
随机推荐
- QTP中类的使用(转)
Call Test Class Tester Dim mvarTesterName,mvarAge,mvarGender Sub Class_Initia ...
- python学习那点事---列表生成式实现大小写字母相互转换
题目: 已知列表list=["pYTHON","iS",eASY],要求使用列表生成式实现,生成一个新的列表,要求将大写字母转换为小写字母,小写字母转换为大写字 ...
- Scrapy框架: 通用爬虫之CrawlSpider
步骤01: 创建爬虫项目 scrapy startproject quotes 步骤02: 创建爬虫模版 scrapy genspider -t quotes quotes.toscrape.com ...
- Nuget--基础连接已经关闭
1.Nuget---基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系 修改一下 Package Source 改为 http://packages.nuget.org 2.Nuget- ...
- 最大公因数数gcd模板
首先蒟蒻是在大佬的博客里学习的代码,代码风格多有相似之处,大佬博客https://www.cnblogs.com/lMonster81/p/10433902.html 最大公因数那,顾名思义就是两个数 ...
- json_value.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MD_DynamicRelease”不匹配值“MT_StaticReleas
注意版本的提示mD mt 注意动态mfc 还是静态mfc
- RabbitMQ学习第三记:发布/订阅模式(Publish/Subscribe)
工作队列模式是直接在生产者与消费者里声明好一个队列,这种情况下消息只会对应同类型的消费者. 举个用户注册的列子:用户在注册完后一般都会发送消息通知用户注册成功(失败).如果在一个系统中,用户注册信息有 ...
- Java集合框架的基础接口有哪些?
Collection为集合层级的根接口.一个集合代表一组对象,这些对象即为它的元素.Java平台不提供这个接口任何直接的实现. Set是一个不能包含重复元素的集合.这个接口对数学集合抽象进行建模,被用 ...
- java命令-jstack
jstack用于生产java虚拟机当前时刻的线程快照.线程快照是当前java虚拟机内每一条线程正在执行的方法 堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,比如线程间死锁.死循环. ...
- Foobar 2000增加APE播放支持的方法
这里说明一下APE,它是一种常用的无损音乐的存储格式,通常会有将原始音乐光盘数字化后存储的APE文件搭配一个CUE文件使用.这个APE存储了音乐的原始数据,而CUE文件则是一个索引文件,用来标记音乐光 ...