2016-09-23 3 views
3

divには、水平スクロールが適用されているulがあります。 divは180ピクセルで、ulのアイテムはこれより大きいです。水平スクロールでdivにULを作成する方法全幅があります

この問題は、ulliが本来の幅に拡大されず、スクロールが適用された要素の幅があるということです。これは、リスト項目に背景色を適用すると、要素全体をカバーしないことを意味します。

誰もこれを解決する方法を知っていますか?

div.wrapper { 
 
     float: left; 
 
    display: block; 
 
    width: 180px; 
 
} 
 

 
div { 
 
    overflow-x: auto; 
 
} 
 

 
ul { 
 
    margin: 0; 
 
    padding: 0; 
 
    list-style: none; 
 
} 
 

 
li { 
 
    display: block; 
 
    background: red; 
 
    white-space: nowrap; 
 
}
<div class="wrapper"> 
 
    <div> 
 
    <ul> 
 
    <li><h3>sdf df sdijr wafl;k qwroksal wasdlk was</h3></li> 
 
    <li><h3>sdf df sdijr wafl;k wasdlk was</h3></li> 
 
    <li><h3>sdf df sdijr wafl;k qwroksal wasdlk was</h3></li> 
 
    <li><h3>sdf df sdijdsf r wafl;k qwroksal wasdlk was</h3></li> 
 
    <li><h3>sdf df sdijr d df dfswe ef ewf wafl;k qwroksal wdsfdsfasdlk was</h3></li> 
 
    <li><h3>sdf df sdijr wafl;k wasdlk was</h3></li> 
 
    </ul> 
 
    </div> 
 
    </div>

答えて

3

これは、問題を助けるかもしれないことにfloat:leftを設定し、.wrapperの子div要素です。

div.wrapper { 
 
    float: left; 
 
    display: block; 
 
    width: 180px; 
 
} 
 
div { 
 
    overflow-x: auto; 
 
    float: left; 
 
} 
 
ul { 
 
    margin: 0; 
 
    padding: 0; 
 
    list-style: none; 
 
} 
 
li { 
 
    display: block; 
 
    background: red; 
 
    white-space: nowrap; 
 
}
<div class="wrapper"> 
 
    <div> 
 
    <ul> 
 
     <li> 
 
     <h3>sdf df sdijr wafl;k qwroksal wasdlk was</h3> 
 
     </li> 
 
     <li> 
 
     <h3>sdf df sdijr wafl;k wasdlk was</h3> 
 
     </li> 
 
     <li> 
 
     <h3>sdf df sdijr wafl;k qwroksal wasdlk was</h3> 
 
     </li> 
 
     <li> 
 
     <h3>sdf df sdijdsf r wafl;k qwroksal wasdlk was</h3> 
 
     </li> 
 
     <li> 
 
     <h3>sdf df sdijr d df dfswe ef ewf wafl;k qwroksal wdsfdsfasdlk was</h3> 
 
     </li> 
 
     <li> 
 
     <h3>sdf df sdijr wafl;k wasdlk was</h3> 
 
     </li> 
 
    </ul> 
 
    </div> 
 
</div>

+1

これで解決しましたが、解決策ではありません。 – Chris

+0

もう一度 'snippet'をチェックしてください。@Chris –

+0

これで問題は解決されますので、' float:left'を追加すると、将来これに来る人のための修正が何であるかをあなたの答えからもっと明瞭にするべきである – Chris

1

は、あなたは、あなたの特定の要件に対して、クロスブラウザのサポートを確認する必要があるだろう、しかしin this fiddle

のように、liに固有の幅値width: min-content;を適用することができます。

別の方法(example fiddle)は、li要素でdisplay: inline-block;を使用することがありますか? line-heightを採用する予定であるため、スペースを取るために余裕をもたせました。

+0

ありがとう、この種の作品が、それは 'li'の幅が異なることを意味する – Chris

+0

あなたが完全なブラウザのサポートをしたいのであれば、これを使ってjsソリューションを見ていることをお勧めします。これはうまくいくようです。 –

+0

@Chris私は別の方法で上記の答えを更新しました。 – bbodien

-1

display: inline-block;divに追加すると、.wrapperの次に問題が解決するはずです。

関連する問題