我正在尝试使用HTML和CSS创建可重用的VR(垂直规则,如<hr>
,但垂直)组件。
使用当前状态的HTML和CSS可能无法实现我的要求,但希望这是我缺乏经验/知识才是真正的问题。
<div class="vr"></div>
,并带有一些CSS才能正确设置.vr { ... }
的样式。仅SO方面就有很多建议,甚至更多建议遍布互联网的其余部分。但是这些建议通常是过时的,并且经常使用不灵活的技术。
.vr
border-left
,但什么都不会显示。vr-fixedheight
.vr-100pheight
,但这会在div中创建“死空间”。即该行的宽度为2px,但div的总宽度约为7px。vr-d-inlineblock
display: inline-block
。我认为在flexbox内不要紧,设置它仍然不会渲染线条。我整理了一个jsFiddle,显示了我尝试过的内容:https://jsfiddle.net/758dn6ph/
这是一段代码粘贴,以防无法使用jsFiddle:
<div class="test d-flex flex-row align-items-center border p-2 bg-dark text-light">
<span>One</span>
<div class="vr"></div>
<span>Two</span>
<div class="vr-fixedheight"></div>
<span>Three</span>
<div class="vr-100pheight"></div>
<span>Four</span>
<div class="vr"> </div>
<span>Five</span>
<div class="vr-d-inlineblock"></div>
<span>Six</span>
</div>
/* These classes are (failed) attempts at making the VR div "work" */
.vr {
background: yellow;
border-left: 2px solid magenta;
}
.vr-fixedheight {
height: 10px;
background: yellow;
border-left: 2px solid magenta;
}
.vr-100pheight {
height: 100%;
background: yellow;
border-left: 2px solid magenta;
}
.vr-d-inlineblock {
display: inline-block;
background: yellow;
border-left: 2px solid magenta;
}
/* These classes a purely for making the example easier to see, and are not part of the VR */
.test span:not(:first-child) {
margin-left: 5px;
}
.test span:not(:last-child) {
margin-right: 5px;
}
注意:示例中使用Bootstrap 4和目标应用程序。它已经在jSFiddle中链接了,但是如果使用原始代码,则必须手动将其拉入。