2012-11-29 18 views
6

ラッパーを絶対位置にして右に置くと、ウィンドウを縮小するときに水平スクロールバーがトリガーされません。絶対絶対位置 - スクロールバーが表示されない

例: http://jsfiddle.net/Ue6aN/

コード:

<div id="wrapper"></div> 


#wrapper { 
width: 400px; 
height: 400px; 
position: absolute; 
right: 20px; 
top: 0px; 
border: 1px solid red; 
} 

私は切り替えた場合、右:20ピクセル;左:20ピクセル。それは機能していますが、そうでなければ機能しません。どのようにjavascriptなしでそれを修正するための任意のアイデア?

答えて

1

問題が#wrapper次まったく内容がないことです。水平スクロールを取得するには、ドキュメントの左端にコンテンツが固定されている必要があります。このコンテンツは、ビューポートが縮小されたときに非表示になるか、コンテンツがビューポート幅を超えます。 #wrapperは右浮動小数点型なので、左辺のアンカーポイントがないため不可能です。 :afterが動作します。

#wrapper { float:right ... } 

body:after { 
    clear:right; 
    content:' '; 
    display:block; 
    height:1px; 
    min-width:420px 
} 

は、CSSは、上記#wrapperあるbodyの内容、後にスペースを追加します。そのスペースは少なくとも#wrapperのボックスモデルの幅ですが、浮動小数点はなく、ビューポートの左端に固定されています。だから...右端が隠されると、水平スクロールが開始されます。 #wrapperがスクロールイベントを引き起こしているとの錯覚を与えます。

フィドル:http://jsfiddle.net/jg3nH/

1

右浮動小数点を使用する方がより論理的ですが、絶対配置する必要があるのは、含まれている要素の幅または分の幅を設定できます。

body { 
    position: relative; 
    height: 400px; //needs to be at least 1px 
    width: 100%; 
    min-width: 422px; // the width you'd like to horizontal scrollbar to appear 
} 
+0

親寸法(この場合は体)で動作するように子供たちの絶対的な位置決めのために注意してください、あなたは、相対または絶対のようなものに体の位置を変更する必要があります。 – chrisgonzalez

+0

ねえ、ありがとう!残念ながら、これはうまくいかなかった。本文のサイズを設定し、ラッパーの絶対位置を設定した場合、スクロールバーは表示されますが、非表示領域でスクロールすることはできません。右側を浮動させるだけでも、スクロールバーは起動しません。 しかし、体の幅と浮動小数点の組み合わせは、トリックでした! ここをクリックしてください:http://jsfiddle.net/Ue6aN/11/ 回答を変更して受け入れることができます: – Lizzaran

+0

あなたが見ているのは、 'div#wrapper'ではなく' body'に及ぼす影響です。 @ドーソン私は知っている。 – Dawson