2 回答
TA贡献1862条经验 获得超7个赞
仍然不确定你的期望是什么......所以我用<label>
s 和隐藏的复选框做了一个 4 步 Whatchamacallit。向前单击它们,它们就会发生变化。如果向后走,则需要按顺序进行。做出这种行为是为了不存在任何间隙。
这种纯 CSS 动态行为可以通过以下方式实现:
通用兄弟组合器
标签标签
[for]
属性:checked
CSS伪类justify-content: space-between;
演示
:root,
body {
width: 100%;
height: 100%;
padding: 20px 10px;
font: 400 5vw/1 Consolas, monospace;
}
main {
display: flex;
justify-content: start;
align-items: center;
overflow: hidden;
margin: 0 30px 0 -30px;
}
.box {
display: flex;
flex-flow: row nowrap;
justify-content: space-between;
align-items: center;
width: 90%;
height: 5vw;
line-height: 1;
margin: 0 auto;
padding: 0;
background: linear-gradient(180deg, rgba(255, 255, 255, 0) calc(50% - 1px), rgba(0, 0, 0, 1) calc(50%), rgba(255, 255, 255, 0) calc(50% + 1px));
}
.s {
position: relative;
display: inline-block;
width: 5vw;
height: 5vw;
margin: 0;
padding: 0;
color: #000;
background: #fff;
outline: 2px solid #000;
text-align: center;
}
#s1 {
align-self: start;
order: 4;
}
#s2 {
order: 3;
}
#s3 {
order: 2;
}
#s4 {
align-self: end;
order: 1;
}
.c {
display: none;
}
.c:checked~.s {
color: #fff;
background: #000;
}
.c,
.s {
cursor: pointer;
}
<main>
<section class='box'>
<input id='c1' class='c' type='checkbox'>
<label id='s1' class='s' for='c1'>4</label>
<input id='c2' class='c' type='checkbox'>
<label id='s2' class='s' for='c2'>3</label>
<input id='c3' class='c' type='checkbox'>
<label id='s3' class='s' for='c3'>2</label>
<input id='c4' class='c' type='checkbox'>
<label id='s4' class='s' for='c4'>1</label>
</section>
</main>
TA贡献1802条经验 获得超5个赞
对于三个项目,您需要更改.bullet.completed::after
width
为calc(200% - 21px);
。根据项目数量更改父级的类:https://jsfiddle.net/bortao/buw28o53/
- 2 回答
- 0 关注
- 126 浏览
添加回答
举报