2015-05-07 20 views
20

mam ten kod:Scroll dany div tag

#points{ 
 
    width:25%; 
 
    background:#2a2a2a; 
 
    height:20px; 
 
    color:white; 
 
    z-index:2; 
 
    position:absolute; 
 
} 
 
#areas{ 
 
    position:absolute; 
 
    color:white; 
 
    border-right:2px solid black; 
 
    height:120%; 
 
}
<div class="container" style="width:100%"> 
 
    <div class="scale" style="width:100%; position:relative;"> 
 
    <div id="points" style="left:0; ">0</div> 
 
    <div id="points" style="left:25%;">25</div> 
 
    <div id="points" style="left:50%;">50</div> 
 
    <div id="points" style=" left:75%;">75</div> 
 
    <div id="points" style=" left:100%;">100</div> 
 
    <div id="points" style=" left:125%;">125</div> 
 
    <div id="points" style=" left:150%;">150</div> 
 
    </div> 
 

 
    <div class="area" style="width:100%; background:orange;"> 
 
    <div id="areas" style="left:0;"></div> 
 
    <div id="areas" style="left:25%;"></div> 
 
    <div id="areas" style="left:50%;"></div> 
 
    <div id="areas" style="left:75%;"></div> 
 
    <div id="areas" style="left:100%;"></div> 
 
    <div id="areas" style="left:125%;"></div> 
 
    <div id="areas" style="left:150%;"></div> 
 
    <div id="areas" style="left:175%;"></div> 
 
    </div> 
 
</div>

Podczas przewijania do góry i na dole, chciałbym tylko, aby przewinąć area div; Nie chcę, aby element div ukrył się przed kontenerem podczas przewijania.

Próbowałem za pomocą position: fixed dla scale div, ale nie pasowała prawidłowo z przewijania w lewo, tylko w tym przypadku wyświetlenia 0 25 50 75, ale każdy z punktów skalowania są zgodne z tagiem Obszar div więc wyświetlić wszystkie div tag 0,25,50,.. 150 z odpowiednimi znacznikami div

Czy istnieje inny sposób zrobienia tego bez positon: fixed?

Praca skrzypce z postion: absolute. Ale elementy div points są ukryte w kontenerze.

position: fixed. Tagi po lewej stronie są niewidoczne.

+0

Być może można przewijać tylko div 'area', a nie cały "container"? Ustaw pewną stałą wysokość na 'obszar' i' przepełnienie: auto' i powinno załatwić sprawę – Dygestor

+0

@Dygestor Chcę przewinąć cały kontener. –

+0

Czy możesz utworzyć JSFiddle, abyśmy mogli dokładnie zobaczyć, co chcesz osiągnąć? – Dygestor

Odpowiedz

10

Chcesz coś takiego?

https://jsfiddle.net/qk37kson/(redakcją: dodano trochę JQuery aby ruch nagłówka poziomo)

1) atrybut id musi być unikalne. Dlatego w JavaScript mamy getElementById i getElementsByClassName.

Od W3Schools:

http://www.w3schools.com/tags/att_global_id.asp

atrybut id określa unikatowy identyfikator dla elementu HTML.

http://www.w3schools.com/tags/att_global_class.asp

atrybut class określa jeden lub więcej classnames dla elementu.

2) zmiana

<div class="scale" style="width:100%; position:relative;"> 

do

<div id="scale" style="width:100%; position:fixed;"> 

3) Następnie, w ty CSS, dodać to:

#scale { 
    top:0px; 
    left:0px; 
    z-index:2; 
} 

Edit:

4) Na koniec dodać trochę JQuery:

$(window).scroll(function(){ 
    $('#scale').css('left','-'+$(window).scrollLeft()+'px'); 
}); 
+0

Każda linia odpowiadająca "punktom" w twoim przypadku wyświetla tylko '0 25 50 75'. Ale chcę wyświetlić wszystkie punkty. W takim przypadku 'position: relative' jest odpowiedni dla mnie, ale problem z położeniem względnym był wtedy, gdy punkty przewijania od góry do dołu są ukryte z obszaru. –

+0

Och, nie widziałem, żeby nagłówek w ogóle się nie poruszał. Dodałem trochę JQuery, aby wykonać tę pracę. – Seblor

+0

Nie znalazłem odpowiedzi, to mój błąd. przepraszam i zobacz https://jsfiddle.net/qk37kson/1/. I dziękuję za twój wysiłek dla mnie –

1

Można zachować .container 's overflow-y do ukrytych i .area' s overflow-y do przewijania. W ten sposób pojemnik będzie przewijany .scale i wzdłuż x, ale nie y, ale .area będzie przewijać w sobie y, dając ci efekt.