我一直在尝试构建一个仅由HTML和CSS构建的进度条,尽管在获取连接点时遇到了一些困难。风格。
因为它基于:在元素之后如何让它们在圆圈后面,z-indexed?
理想情况下,点1应连接2,2连接3和3连接4。
https://jsfiddle.net/bzjs1h9r/1/
<section class="steps">
<ul class="checkout">
<li class="current">
<div class="index">...</div>
<div class="caption">Email</div>
</li>
<li class="inactive">
<div class="index">2</div>
<div class="caption">Your Info</div>
</li>
<li class="inactive">
<div class="index">3</div>
<div class="caption">Delivery</div>
</li>
<li class="inactive">
<div class="index">4</div>
<div class="caption">Review</div>
</li>
</ul>
.steps {
.checkout {
display: table;
table-layout: fixed;
width: 100%;
li {
display: table-cell;
padding-left: 0;
text-align: center;
&:before {
margin: 0 auto;
display: block;
width: 30px;
height: 30px;
content: "";
text-align: center;
float: none;
position: relative;
top: 30px;
border-radius: 100%;
border: 2px solid #79b93e;
}
&:after {
content: "";
border: 1px solid rgba(135, 135, 135, 0.2);
width: 100%;
webkit-transform: rotate(90deg);
-moz-transform: rotate(90deg);
-o-transform: rotate(90deg);
-ms-transform: rotate(90deg);
transform: rotate(180deg);
display: block;
position: absolute;
top: 60px;
right: -53px;
}
&:last-child {
&:after {
display: none;
}
}
.caption {
text-transform: uppercase;
margin-top: 5px;
font-weight: 900;
}
}
}
.container-fluid {
max-width: 550px;
overflow:hidden;
}
}
答案 0 :(得分:2)
您的问题是,您错过了将position:relative
设置为li
。 li:after
的连接线绝对是first not position:inherit ancestor, body if none
,在您的版本中,该行应该是li元素的绝对值。
https://jsfiddle.net/bzjs1h9r/2/
我的修正:
li {
position:relative;
&.index: {
position:relative;
z-index: 3;
}
&:before {
z-index: 2;
background: #fff;
}
&:after {
z-index: 1;
}
}
还有一些位置调整。
ps:李的旋转:此后似乎毫无意义。
答案 1 :(得分:2)
当我遇到这个链接时,我遇到了一个非常类似的问题。它提供了一个如何仅使用css创建进度条的示例。我刚拿出css并在我的项目中使用它。
http://thecodeplayer.com/walkthrough/jquery-multi-step-form-with-progress-bar
这是一个基本示例的小提琴 https://jsfiddle.net/matt_laza/6rdurftm/
#progressbar { margin-bottom: 30px; text-align:center; overflow: hidden; /*CSS counters to number the steps*/ counter-reset: step}
#progressbar li {width:25%; list-style-type: none; text-transform: uppercase; font-size: 11px; float: left; position: relative;}
#progressbar li:before { content: counter(step);counter-increment: step; width: 20px; line-height: 20px; display: block; font-size: 10px; color: #333; background: #CCC; border-radius: 3px; margin: 0 auto 5px auto;}
#progressbar li:after { content: ''; width: 100%; height: 2px; background: #CCC; position: absolute; left: -50%; top: 9px; z-index: -1; /*put it behind the numbers*/}
#progressbar li:first-child:after { /*connector not needed before the first step*/ content: none;}
#progressbar li.active:before, #progressbar li.active:after{ background: #27AE60; color: white;}
&#13;
<ul id="progressbar">
<li class="active">Email</li>
<li>Info</li>
<li>Delivery</li>
<li>Review</li>
</ul>
&#13;
答案 2 :(得分:0)
<div class="container">
<ul class="progressbar">
<li class="active">EMAIL</li>
<li>YOUR INFO</li>
<li>DELIVERY</li>
<li>REVIEW</li>
<ul>
</div>
.container{
width:100%;
}
.progressbar{
counter-reset:step;
}
.progressbar li{
list-style-type: none;
float:left;
width:22.22%;
position:relative;
text-align:center;
}
.progressbar li:before{
content:counter(step);
counter-increment:step;
width:30px;
height:30px;
line-height:30px;
border:1px solid #0F0;
display:block;
text-align:center;
margin:0 auto 10px auto;
border-radius:50%;
}
.progressbar li:after{
content:'';
position:absolute;
width:100%;
height:1px;
background-color:#ddd;
top:15px;
left:-50%;
z-index:-1;
}
progressbar li:first-child:after{
content:none;
}