6

次のことをしようとすると、奇妙な動作が発生します (jsfiddle: http://jsfiddle.net/9nS47/を参照)。

HTML:

<div id="slider">
    <div id="wrapper">
        <div id="navigation"></div>
        <div id="container">
            <div id="button"></div>
        </div>
    </div>
</div>

CSS:

HTML,BODY 
{ width:100%; height:100%; }
* { margin: 0; padding: 0; }
#slider
{
    position: fixed;

    top: 0;
    bottom: 0px;
    left: 100px;

    overflow-y: auto;

    background-color: red;
}

#wrapper
{
    position: relative;

    height: 100%;

    background-color: #000000;

    min-height:400px;
}

#navigation
{
    display: inline-block;
    width: 80px;
    height: 100%;

    background-color: #0000FF;
}

#container
{
display: inline-block;
    height: 100%;

    background-color: #00FF00;
}

#button
{
    width: 22px; height: 100%;
    float:right;

    background-color: #CCFFCC;
    cursor:pointer;
}

私がやろうとしているのは、表示されているウィンドウの高さ全体にまたがる左側のナビゲーション バーを作成し、高さがたとえば 400px より小さい場合にのみスクロールバーを表示することです。そのdivのスクロールバーは、サイズ変更の問題により常に表示されているようです(説明できない余分なピクセルが下部にあります[色:赤])。

また、Firefox は、スクロールバーがコンテンツ領域の一部であるように見えるため、スクロールバーが表示されているときに 2 番目の子要素を最初の子要素の下に移動し、最大で約 20px のスペースを占有します。ただし、Overflow: Auto が Overflow: scroll に置き換えられた場合、これは発生しません。

レイアウトを変更する ATM (具体的には、Position: fixed のコンテナー) はオプションではありません。

緑と青のボックスの間のスペースは気にしないでください。空白の問題のようです。

4

1 に答える 1