2013-01-02 20 views
7

Questo post è correlato a this one. Si prega di prendere in considerazione anche la lettura. :-)Ottieni altezza visibile di un elemento invece della sua altezza effettiva con jquery

Nel post a cui ho collegato, ho pensato che la soluzione al mio problema sarebbe quella di cambiare il target di un collegamento se l'altezza visibile di un div è maggiore di quella di un altro div. Nel mio layout, tutte le div che mi riferisco hanno un'altezza di 1100 px. Ma non è quello che voglio ottenere. Mi piacerebbe che lo script ottenga l'altezza del div attualmente visibile al visitatore, non la sua altezza reale. C'è un modo per farlo usando jQuery?

Grazie in anticipo!

+1

Cosa hai provato? Controlla la funzione 'jQuery.offset()', insieme alle informazioni sulla vista e l'altezza dell'elemento ti aiuterà a capirlo. Solo una questione di addizioni e sottrazioni. – Pablo

+0

Lo hai mai capito? Sto cercando di fare la stessa cosa, e non ho fortuna. – JacobTheDev

risposta

1

Avvolgere il contenuto del DIV viewport con un altro DIV. Indirizza il DIV per leggere l'altezza di tutti i contenuti in questo modo:

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

Disposizione:

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

Spero che questo aiuti. In bocca al lupo.

-1

Devi utilizzare un'altezza fissa di 1100 px? Perché potresti anche specificare un'altezza massima: 1100 px; e un'altezza: 100%; A seconda di cosa si desidera inserire all'interno del div si può ovviamente ottenere l'altezza attuale

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

Che cosa si può fare è prendere la posizione elementi alla parte superiore del suo contenitore padre e quindi meno che da parte dei genitori altezza del contenitore. Questo ti darà l'altezza visibile dell'elemento.

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

Qui è un fiddle mostrando questo.

+0

Non l'avevo mai usato. Offset prima, quindi prima di tutto grazie per la risposta che mi ha insegnato qualcosa. :-) Ho provato a inventare qualcosa usando il tuo metodo, ma sfortunatamente non ha funzionato. Diciamo che ho 3 div che sono tutti alti 1100 px. Il mio intero documento è quindi alto 3300 px. Quello che volevo fare è calcolare la distanza tra la parte superiore dell'ultimo div e la parte superiore del documento e quindi cambiare il target del mio link in base al risultato. Quindi: alert (3300 - $ ('# div3'). Offset(). Top) –

+0

Quando ero in cima al documento, restituiva 1100, che era quello che mi aspettavo. Ma poi ho sceso un po ', ho lanciato la sceneggiatura, ma ne ho restituito ancora 1100. Ho pensato che mi avrebbe dato un numero che sarebbe superiore a 1100, ma non è così. Suppongo che .offset non faccia esattamente quello che pensavo e non si adatta alla posizione corrente del rotolo. : -/ –

+0

@TomS. aggiungi '$ (window) .scrollTop()' al tuo avviso e ti darà quello che vuoi. [fiddle] (http://jsfiddle.net/bplumb/mbZby/4/) –