2012-01-25 4 views
3

divの "カルーセル"を持つサイトを設定しようとしていますが、すべてサイドバイサイド(左に浮動)で、フルスクリーンの幅で表示されます。 javascriptを使用して、私は "カルーセル"を動かすことによって異なるdivをビューに移動することを計画しています。オーバーフローを設定する:親に隠れてすべてのコンテンツを非表示にする

私の問題は、オーバーフローを設定する何らかの理由で、カルーセルを含むdivに隠されているすべてのコンテンツが隠されていることです。火かき棒で調べると、divが正しい場所に表示されますが、コンテンツは表示されません。私はオーバーフローを取る場合

#content_window 
{ 
    position:relative; 
width:100%; 
overflow:hidden; 
} 

#carousel 
{ 
    position:absolute; 
    width:400%; 
    top:50px; 
    left:0; 
    overflow:hidden; 
} 

.pane 
{ 
    float:left; 
    width:25%; 
    color:White; 
    text-align:left; 
    margin-top:50px; 
} 

:#content_windowのオフに隠された、その後のペイン内のコンテンツが見えるようになりますが、水平スクロールバーがある

<div id="content_window"> 
    <div id="carousel"> 
     <div id="p_home" class="pane"> 
      Home! 
     </div> 
     <div id="p_about" class="pane"> 
      About! 
     </div> 
     <div id="p_services" class="pane"> 
      Services! 
     </div> 
     <div id="p_contact" class="pane"> 
      Contact! 
     </div> 
    </div> 
</div> 

とCSS:ここ

はHTMLですスクロールしてすべての枠を表示することができます。誰かが私が間違っていることを知っていますか?

+0

明確なのdiv: ''

迅速な対応のための最後の1 –

答えて

8

第三ペインがmargin-left: -200%;である、等...たとえば、ここペイン2でありますdivには浮動要素または配置要素以外は何も含まれていません。その高さは0になります。はdiv#content_windowの問題です。そのdiv要素に高さを追加してみてください:

#content_window 
{ 
height: 120px; 
} 
+0

はい!これが問題でした。どうもありがとうございます! – bb89

0

絶対配置を使用する必要は全くありません。 content_windowにカルーセルのビューポートをクリップさせるだけです。 http://jsbin.com/uhubij/edit#htmlを参照してください。

CSSは、はるかに簡単です:

#content_window { 
    width:100%; 
    overflow:hidden; 
} 

#carousel { 
    width:400%; 
} 

.pane { 
    float:left; 
    width:25%; 
    text-align:left; 
    margin-top:50px; 
} 

#carouselmargin-leftを追加し、ペインを切り替えるには。最初のペインはmargin-left: 0%(デフォルト)です。 2番目のペインはmargin-left: -100%;です。 (私はあなたのためにクリアdiv要素を追加した以外)http://jsbin.com/uhubij/2/edit#html

HTMLは基本的に同じである:

<div id="content_window"> 
    <div id="carousel"> 
     <div id="p_home" class="pane"> 
      Home! 
     </div> 
     <div id="p_about" class="pane"> 
      About! 
     </div> 
     <div id="p_services" class="pane"> 
      Services! 
     </div> 
     <div id="p_contact" class="pane"> 
      Contact! 
     </div> 
     <div style="clear: both;"></div> 
    </div> 
</div> 
+0

感謝しました。私は、カルーセルを絶対的に配置して、javascriptを使って "left"プロパティを調整できるようにしました。私が間違っている場合は私を修正してください。しかし、私はカルーセルの絶対位置を使用しないと、私は左の属性を調整することができないと思った。左に調整せずにカルーセルを水平に動かすことができる別の方法がありますか?カルーセルの幅を400%に設定しているため、ペイントの幅は25%です(4つのペインがあるので、400%の25%が100%です)。 – bb89

+0

外部のコンテナにはいつでも 'margin-left:50px;'を置くことができます。しかし、カルーセルを50ピクセル右に移動すると、ビューポートの幅を調整する必要があります。ビューポートの幅を100%に設定することはできません。また、右に50px移動したり、右側の50pxを切り捨てたりすることはできません。 –

+0

全体の点はそれが断たれるためです。各ペインは、一度に1つのペインだけが表示されるように、ビューポートのサイズとされています。私の計画は、カルーセルを左右にずらして表示するウィンドウを変更することです。したがって、画面の外にある、左右のいずれかのペインを非表示にする必要があります。したがって、ビューポートの幅が1000ピクセルの場合、各ペインの幅は1000ピクセルになります。最初のペインを表示したければ、カルーセルに0を残しておきます。 2番目のペインを表示したければ-1000などのままにしておきます。それは理にかなっていますか? – bb89

関連する問題