2016-10-21 16 views
2

要素の行を並べ替えるのが最も簡単な方法は、1行に横並びに収まらない場合は、要素が重複している固定サイズの行

それは少し、次のようになります。

ul { 
 
    width: 100px; 
 
} 
 

 
li { 
 
    float: left; 
 
}
<ul> 
 
    <li>A</li> 
 
    <li>A</li> 
 
    <li>A</li> 
 
    <li>A</li> 
 
</ul>

が、任意の数の項目を持ちます。この例は最終的にはラップされますが、私は望みません。また、すべてが完全に見えるだけのスペースがあれば、要素が重ならないことが望ましいでしょう。

子要素には画像が含まれ、すべて同じサイズになります。私はデモのためにulをここに使っていますが、何か他のものがうまく機能していれば、私はそれだけです。

答えて

2

完璧ではないが、多分それは正しい方法です:

ul { 
 
    display: table; 
 
    margin: 0; 
 
    padding: 0; 
 
    list-style: none; 
 
    width: 300px; 
 
    height: 30px; 
 
    overflow: hidden; 
 
    background: orange; 
 
} 
 
li { 
 
    display: table-cell; 
 
    position: relative; 
 
} 
 
li > div { 
 
    position: absolute; 
 
    
 
    }
<ul> 
 
    <li><div>Content1</div></li> 
 
    <li><div>Content2</div></li> 
 
    <li><div>Content3</div></li> 
 
    <li><div>Content4</div></li> 
 
    <li><div>Content5</div></li> 
 
    <li><div>Content6</div></li> 
 
    <li><div>Content7</div></li> 
 
</ul>

+0

'li'sは文句を言わない、親に含まれます。 – Schlaus

+0

申し訳ありませんが、私はあなたが欲しいものを理解していません。 downvoteの理由はありません! –

+0

あなたの答えを落としたのは私ではありませんでした。私が意味することは、親が与えられた幅を超えてはならないということでした。すべての子要素は親内にとどまるべきです。あなたの答えでは、あなたが親に幅を設定しても関係ありません、とにかく子供たちはあふれてしまいます。代わりにそれらをお互いに重なり合わせたい。 – Schlaus

1

私の心に来る唯一の解決策は、この場合にはフレキシボックスを使用することです。ただ、親ulタグにプロパティdisplay: flex;を追加し、追加どんな子供で何が起こっているかを見る:)

ul { 
    width: 100%; 
    display: flex; 
} 
li { 
    width: 25%; 
} 
+0

これは機能しますが、量が変化すると子の幅が変更される必要があります。私は、子供の数が動的に変化するにつれてスタイリングに触れる必要のない方法があることを願っていました。 – Schlaus

関連する問題