2013-01-02 16 views
7

Ten wpis jest powiązany z this one. Proszę również rozważyć przeczytanie tego. :-)Wyświetlenie widocznej wysokości elementu zamiast faktycznej wysokości za pomocą jquery

W poście, do którego dołączyłem, doszedłem do wniosku, że rozwiązaniem mojego problemu będzie zmiana celu łącza, jeśli widoczna wysokość elementu div jest większa niż wartość innego elementu div. W moim układzie wszystkie elementy div, o których mówię, mają wysokość 1100 pikseli. Ale to nie jest to, co chcę osiągnąć. Chciałbym, aby skrypt dostał wysokość elementu div, który jest obecnie widoczny dla odwiedzającego, a nie jego rzeczywistą wysokość. Czy istnieje sposób, aby to zrobić za pomocą jQuery?

Z góry dziękuję!

+1

Co próbowaliście? Sprawdź funkcję 'jQuery.offset()', wraz z informacjami o rzutni i wysokością elementu, które pomogą Ci to rozgryźć. Tylko kwestia dodania i odejmowania. – Pablo

+0

Czy kiedykolwiek to rozgryzłeś? Próbuję zrobić to samo i nie mam szczęścia. – JacobTheDev

Odpowiedz

1

Zawiń zawartość rzutni DIV za pomocą innego DIV. Wybierz DIV, aby odczytał wysokość całej zawartości jako takiej:

JQuery: $ ("div # contents"). Height();

Układ:

<div id="viewport"> 
    <div id="contents">...all your div contents...</div> 
</div> 

Nadzieja to pomaga. Powodzenia.

-1

Czy musisz użyć stałej wysokości 1100px? Ponieważ możesz również określić maksymalną wysokość: 1100px; a wysokość: 100%; W zależności od tego, co chcesz umieścić wewnątrz div można oczywiście uzyskać bieżącą wysokość przez

$('.divclass').height(); 
7

Co można zrobić, to przyjąć pozycję elementów na szczycie jego kontenera nadrzędnego, a następnie minus go od rodziców wysokość pojemnika. To da ci widoczną wysokość elementu.

$('#container').height() - $('#overflow').position().top 

Oto fiddle pokazujący to.

+0

Nigdy wcześniej nie używałem .offset, więc przede wszystkim dziękuję za odpowiedź, która mnie czegoś nauczyła. :-) Próbowałem wymyślić coś używając twojej metody, ale niestety to nie zadziałało. Powiedzmy, że mam 3 divy, które mają 1100 pikseli wysokości. Mój cały dokument ma 3300 pikseli wysokości. Chciałem tylko obliczyć odległość między wierzchołkiem ostatniego elementu div a górną częścią dokumentu, a następnie zmienić cel linku zgodnie z wynikiem. A więc: alert (3300 - $ ("# div3"). Offset(). Top) –

+0

Kiedy znajdowałem się na górze dokumentu, zwrócono 1100, co było tym, czego oczekiwałem. Ale potem trochę przewinąłem, uruchomiłem scenariusz, ale wciąż wróciłem 1100. Myślałem, że da mi liczbę, która byłaby wyższa niż 1100, ale tak się nie stało. Sądzę więc, że offset nie robi dokładnie tego, co myślałem, że po prostu nie dostosowuje się do aktualnej lokalizacji zwoju. : -/ –

+0

@Toms. dodaj '$ (window) .scrollTop()' do twojego alertu, a dostarczy ci to, co chcesz. [skrzypce] (http://jsfiddle.net/bplumb/mbZby/4/) –

Powiązane problemy