2017-05-23 4 views
2

限られたサイズのコンテナにいくつかの固定サイズのアイテムがあります。子アイテムが多すぎる場合は、あふれたり折り返したりするのではなく、オーバーラップを開始することをおすすめします。オーバーフローではなくオーバラップする子供

これは、JavaScriptや特別な要素なしで、コンテナと子要素そのものをスタイリングするだけで可能ですか?

<div class="items"> 
    <div>A</div> 
    <div>B</div> 
</div> 

所望の効果はこれで、余分な包装divsと前もって基本アイテム幅(.items > divオン幅)を知ることなく。あなたがzインデックスを使用することができ、その要素が多くて、右、左、最低のzインデックスへの最大の、最もしています。

.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>

+0

https://stackoverflow.com/q/43919067/3597276 –

+0

CSS/HTMLがそれを行うことができないかどうかは、そのようなJSソリューションはオプションです。普通のCSSソリューションがあれば、確かにそれが好きです。 –

+0

私はCSS3のグリッドレイアウトを使って、他の投稿への解決策を投稿しました。これは、質問者が興味がなかったので削除しました。しかし、ここでは、それがあなた(純粋なCSS)に役立つ場合のコンセプトがあります:https://jsfiddle.net/agcxxtxa/1/ –

答えて

0

動的な解決策ではありませんが、参考になるかもしれません。

+0

まだ絶対的な位置付けを意味しますか?これは基本的には今のところですが、JSレイアウトを使わずに動的にラッパーのサイズを調整するにはどうしたらいいですか? –

+0

内側の要素の幅に基づいて幅をとるようにラッパーしたいですか? – wired

+0

理想的には、 'display:inline-block'、または' flex:0 0 auto'のようにオーバーラップオーバーフローの振る舞いをします(おそらく、 'flex-shrink'のように分散/配置されますが、より小さい) –

関連する問題