【发布时间】:2019-11-01 16:32:20
【问题描述】:
我正在尝试找到一种将 div 插入容器并能够以像素为单位定义每个 div 的左侧起始位置的方法,而每个 div 的宽度会自动填充到相邻兄弟的左侧。我将拥有每个 div 的起始位置数组,因此可以计算 js 中每个 div 的宽度。但我希望有一个更优雅的解决方案。
我已经广泛搜索了一个解决方案,但到目前为止,我能找到的最好的是依赖于计算宽度的 flex 解决方案:
.s-container {
height: 20px;
background-color: red;
min-width: 100%;
display: flex;
}
.s-child {
border-left: 1px solid black;
background-color: yellow;
height: 100%;
}
<div class="s-container">
<div style="flex-basis:50px;" class="s-child">left: 0</div>
<div style="flex-basis:100px;" class="s-child">left: 50px</div>
<div style="flex-grow:1;" class="s-child">left: 150px</div>
</div>
是否可以在每个 div 上给出左侧位置并让每个 div 填充自己的宽度到右侧的邻居?
【问题讨论】:
-
没有。这不可能。 “定位”每个元素的唯一方法是在相对容器中使用 actual
position:absolute。如果你这样做了,那么元素就会从流程中取出,你就会回到你开始的地方。我不太清楚你在寻找什么效果,但 CSS-Grid 和auto-fit/fill可能是你的选择。 -
@Paulie_D,感谢您的意见。根据我的发现,我认为你是对的。无论如何,我想那是在黑暗中拍摄的。我只是希望找到一个解决方案,我可以轻松地将 div 插入一行其他 div,指定该 div 的左侧位置,并自动调整宽度。例如,如果我有一排两个 div,每个 200 像素,然后我在位置 100px 处插入一个额外的 div - 我的第一个 div 的宽度应该是 100px,第二个 div 的宽度是 100px,第三个仍然是200 像素宽。
标签: javascript html css angular angular2-template