2013-08-20 26 views
6

Z poniższego skrzypca próbuję ustawić pozycję "wewnętrzna nawigacja" absolutnie ustawioną tak, aby była ustawiona w polu "porównaj-wyświetl". Problem, który mam, polega na tym, że kiedy przewijasz, div "nawigacji wewnętrznej" nie jest stały. Jak mogę zaradzić temu problemowi?Podziałka bezwzględna nie jest przewijana ze stroną

Oto moje skrzypce:

http://jsfiddle.net/Cd9eZ/

HTML kod

<div class="compare-display"> 
    <div class="table"> 
     <div class="source-compare col-50"> 
      <div class="page"></div> 
     </div> 
     <div class="navigation-compare"> 
      <div class="inner-navigation"></div> 
     </div> 
     <div class="target-compare col-50"> 
      <div class="page"></div> 
     </div> 
    </div> 
</div> 

CSS Kod

.table { 
    display: table; 
    height: 100%; 
    width: 100%; 
} 
.table > div { 
    display: table-cell; 
    vertical-align: top; 
} 
.table > .col-50 { 
    width: 50%; 
    background: green; 
} 
.compare-display { 
    position: relative; 
    overflow: auto; 
    height: 200px; 
} 
.compare-display .navigation-compare { 
    min-width: 50px; 
    background: blue; 

} 
.compare-display .page { 
    margin: 20px; 
    height: 500px; 
    background: orange; 
} 
.compare-display .inner-navigation { 
    position: absolute; 
    width: 50px; 
    top: 0; 
    bottom: 0; 
    background: red; 
} 

Odpowiedz

3

Zawiń ustalony element div wokół ".compare-display" i usuń względną pozycję z ".compare-display".

tak:

jsfiddle.net/Cd9eZ/4

.compare-wrapper { 
    position:fixed; 
} 

.compare-display { 
    /*position: relative;*/ 
} 

<div class="compare-wrapper"> 
    <div class="compare-display">...</div> 
</div> 
10

że chcesz position:fixed zamiast position:absolute.

Fiddle

CSS Position Documentation

+0

chcę być ustalona w stosunku do '.compare-display' div. Naprawiono wypycha go z elementu div i czyni go względnym względem dokumentu. – Vakey

+0

Hmm .. to ciekawa myśl. Niestety nie ma rozwiązania CSS, które odzwierciedlałoby twój pomysł. Ponieważ "wewnętrzna nawigacja" div jest częścią treści HTML jej obiektu nadrzędnego, możesz ustawić ją tylko względem treści w jej rodzica. W tym przypadku klasa 'compare-display' ma przepełnienie, więc cała jej relatywna zawartość będzie przewijana. –

+0

Możesz także zejść z tej ścieżki JavaScript. Czy istnieje jakieś szczególne zachowanie spowodowane przez właściwość 'position: fixed', która jest niepożądana? –

0

Czy to, co zamierzałeś?

http://jsfiddle.net/Cd9eZ/3/

.compare-display .inner-navigation { 
    **position: fixed;** 
    width: 50px; 
    top: 0; 
    bottom: 0; 
    background: red; 
} 

Jeśli chcesz nawigacji przymocowany do okna, absolutny nie będzie działać. Wartość bezwzględna nie usuwa elementu ze strumienia stron, więc przewijanie zawsze przesunie element pozycjonowany absolutnie, ponieważ ramka odniesienia jest sama w sobie, a nie okno .

Naprawione elementy są całkowicie usuwane ze strony i są zakorzenione w samym obszarze okna.

+0

To nie jest to, co zamierzałem. Chcę, aby pozostawał w absolutnej pozycji względem elementu div ".compare-display". Myślę jednak, że częściowo odpowiedziałeś na moje pytanie. Co oznacza, że ​​nie można uzyskać absolutnie ustawionego przewijania div za pomocą paska przewijania. – Vakey