我尝试构建一个动态工具栏,其中:
工具的数量是动态的
所有工具应具有相同的宽度(基于最宽的工具)
工具可以通过分隔符分隔,该分隔符占用所有可用空间(拉伸)
分隔符可以放置在任何地方
html无法更改
预期输出(给定BBB
最广泛的工具):
—————————————————————————————————————————————————————
| A |BBB| CC| SEPARATOR | D |
—————————————————————————————————————————————————————
柔性
我尝试了该flex方法,但无法合并所有规则:
分隔符占据了所有空间,但工具宽度不相等:
—————————————————————————————————————————————————————
|A|BBB|CC| SEPARATOR |D|
—————————————————————————————————————————————————————
nav {
display: flex;
background: #e8e8e8;
width: 100%;
}
.item {
flex: 1;
text-align: center;
}
.separator {
width: 100%;
background: #d3d3d3;
}
<nav>
<div class="item">A</div>
<div class="item">BBB</div>
<div class="item">CC</div>
<div class="separator"></div>
<div class="item">D</div>
</nav>
所有工具(包括分隔符)都具有相同的宽度:
—————————————————————————————————————————————————————
| A | BBB | CC | SEPARATOR | D |
—————————————————————————————————————————————————————
nav {
display: flex;
background: #e8e8e8;
width: 100%;
}
.item {
flex: 1;
text-align: center;
}
.separator {
flex: 1;
background: #d3d3d3;
}
<nav>
<div class="item">A</div>
<div class="item">BBB</div>
<div class="item">CC</div>
<div class="separator"></div>
<div class="item">D</div>
</nav>
使用grid
系统,如果不指定 a ,我就无法获取分隔符grid-template-columns
,这是我想避免的。我需要一些动态的东西。
nav {
display: flex;
background: #e8e8e8;
width: 100%;
}
.item {
flex: 1;
text-align: center;
}
.separator {
flex: 1;
background: #d3d3d3;
}
<nav>
<div class="item">A</div>
<div class="item">BBB</div>
<div class="item">CC</div>
<div class="separator"></div>
<div class="item">D</div>
</nav>
如果没有 CSS 解决方案,我愿意接受 JavaScript 解决方案。感谢您的帮助。
森林海
相关分类