【发布时间】:2017-10-23 16:14:36
【问题描述】:
我在一个尺寸有限的容器中有许多固定尺寸的物品。如果子项太多,我希望它们开始重叠(最右边),而不是溢出或包裹。
这可以通过仅设置容器和子元素本身的样式来完成,而不需要 JavaScript 或特殊元素吗?
<div class="items">
<div>A</div>
<div>B</div>
</div>
想要的效果是这样,但没有额外的包装 divs 并且必须提前知道基本项目的宽度(.items > div 上的宽度)。
.items {
background: #FFB600;
display: flex;
flex-direction: row;
left: 5px;
bottom: 5px;
width: 90px;
padding: 8px;
margin: 10px;
}
.items > div {
flex: 0 1 20px;/*16px icon + 4px spacing*/
height: 16px;
position: relative;
}
.items > div > div {
position: absolute;
width: 16px;
height: 16px;
opacity: 0.9;
}
/*Give each a different colour / apperance*/
.items > div:nth-child(1) > div {
background: #0026FF;
}
.items > div:nth-child(2) > div {
background: #0094FF;
}
.items > div:nth-child(3) > div {
background: #004A7F;
}
.items > div:nth-child(4) > div {
background: #00137F;
}
.items > div:nth-child(5) > div {
background: #7F92FF;
}
.items > div:nth-child(6) > div {
background: #7FC9FF;
}
.items > div:nth-child(7) > div {
background: #007F7F;
}
.items > div:nth-child(8) > div {
background: #00FFFF;
}
<div class="items">
<div>
<div></div>
</div>
</div>
<div class="items"><div><div></div></div><div><div></div></div></div>
<div class="items"><div><div></div></div><div><div></div></div><div><div></div></div></div>
<div class="items"><div><div></div></div><div><div></div></div><div><div></div></div><div><div></div></div></div>
<div class="items"><div><div></div></div><div><div></div></div><div><div></div></div><div><div></div></div><div><div></div></div></div>
<div class="items"><div><div></div></div><div><div></div></div><div><div></div></div><div><div></div></div><div><div></div></div><div><div></div></div></div>
<div class="items"><div><div></div></div><div><div></div></div><div><div></div></div><div><div></div></div><div><div></div></div><div><div></div></div><div><div></div></div></div>
【问题讨论】:
-
好吧,我猜如果 CSS/HTML 不能做到这一点,那么像这样的 JS 解决方案是一种选择。如果有一个简单的 CSS 解决方案 id 当然更喜欢那个。
-
我使用 CSS3 网格布局发布了另一个帖子的解决方案,由于提问者不感兴趣,我删除了该解决方案。但如果它对您有帮助(纯 CSS),请提供以下概念:jsfiddle.net/agcxxtxa/1