如何使虚线动态,同时保持其他功能(单击set 1或set 2时的展开-折叠按钮)不变。不希望虚线位于数据下方。这样它就像数据之间的连接器一样开始和结束。显示相同的小提琴:https://jsfiddle.net/vcjzn5hs/1/
会很感激你的建议。
我能够使动态虚线和展开-折叠独立工作,但不能一起工作。供您参考:动态虚线应如何为http://jsfiddle.net/bwpugnd3/11/的示例。但是这个例子不能和展开折叠按钮一起工作。
代码片段:
.flex {
display: flex;
justify-content: space-between;
}
.lev1,
.lev2,
.lev3 {
position: relative;
margin-top: 5px;
margin-left: 15px;
}
.lev1::after,
.lev2::after,
.lev3::after {
content: '';
position: absolute;
width: 80%;
top: 100%;
left: 50%;
transform: translateX(-50%);
margin: 0 6px;
height: 2px;
color: lightgrey;
margin-bottom: 4px;
background-image: linear-gradient(to right, currentColor 2px, transparent 1px);
background-size: 4px 2px;
}
.DataRightAlign {
word-wrap: break-word;
white-space: break-spaces;
margin-right: 20px;
margin-left: 10px;
color: black;
}
<!--jquery and bootstrap-->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/css/bootstrap.min.css">
<link href="css/bootstrap/bootstrap.min.css" rel="stylesheet" />
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.12.9/dist/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
<div class="itemDiv">
<div>
<a class="accordion-button " data-toggle="collapse" data-target=".lev1"> Set1 </a>
<div class="collapse multi-collapse lev1 show">
<p class="flex">
<span>item1data</span>
<span class="DataRightAlign"> Set1val here</span>
</p>
</div>
<div class="collapse multi-collapse lev1 show">
<p class="flex">
<span>item2</span>
<span class="DataRightAlign">Set1</span>
</p>
</div>
</div>
<div>
<a class="accordion-button " data-toggle="collapse" data-target=".lev3">Set2 </a>
<div class="collapse multi-collapse lev3 show">
<p class="flex">
<span>item3</span>
<span class="DataRightAlign">Set2val</span>
</p>
</div>
</div>
2条答案
按热度按时间pjngdqdw1#
一种方法,坦率地说是最简单的,是下面的代码中的解释性注解;请注意,我从你自己的演示中删除了所有的CSS,因为它使创建演示稍微容易一些,但是-当然-没有什么可以阻止你添加自己的CSS回来:
JS Fiddle demo。
另一种方法是使用CSS生成的内容来保持前导(位于项目数据和设置值之间的点),但这有问题;同样,代码中有解释性注解:
JS Fiddle demo。
不幸的是,使用:
意味着我们不能再使用
background-color
或border
等样式化元素;这是这种方法不可避免的后果。最后,虽然,想到比我想的要晚,我们可以选择嵌套flex-layout,如下所示:
JS Fiddle demo。
参考文献:
background
。background-image
。background-position
。background-size
。block-size
。calc()
。clamp()
。content
。display
。flex-grow
。gap
。justify-content
。margin
。margin-inline
。repeating-linear-gradient()
。hkmswyz62#
这有点像CSS样式的目录
基本的想法是把
content: '...
很长,使溢出隐藏,使左侧文本和右侧文本的div背景白色,所以这些点将不会在右侧文本或左侧文本之后或之下可见,但实际上是为整行绘制的虚线。height: 40px
和top: -42px
修复虚线移动到略低于左侧文本和右侧文本z-index: -1;
使虚线隐藏在右侧文本和左侧文本后面