2010-02-11 10 views
5

Ho una quantità indefinita di elementi in linea in uscita. Ora, a seconda della larghezza del browser, alcuni elementi, ovviamente, verranno inseriti in una nuova riga. È possibile rilevare e individuare queste righe di elementi o la dom la vede solo come una grande linea?JS: rilevamento di elementi inline spostati?

Grazie per l'aiuto !!

MODIFICA: Provare a rilevare elementi avvolti tramite altezza offset (Grazie Matchu). Gli elementi avvolti producono gli stessi valori (altezza totale dell'elemento) di quelli trovati sulla prima riga. Qualche ragione per cui?

$('#content').children().each(function() { 
     alert($(this)[0].offsetHeight); 
    }); 

risposta

12

È possibile controllare la proprietà offsetHeight degli elementi e fare in modo che salti. Quando un elemento in linea ha un valore maggiore di offsetHeight rispetto all'elemento precedente, questo elemento si trova su una nuova riga.

+0

Molto intelligente! L'ho appena provato e non ha funzionato. Sto ottenendo gli stessi valori sulla seconda riga che faccio nel primo. Ho aggiunto il codice jquery che sto usando per ottenere offsetheight nella mia domanda di cui sopra .. – user239237

+0

Funziona per me: http://jsbin.com/awago3/edit - Dato che stai usando jQuery, l'ho fatto anche io. – Matchu

+3

Ho usato .offset(). All'inizio come nel tuo esempio e ora funziona anche per me! Grazie per tutto l'aiuto! – user239237

-2

No, non è possibile direttamente. Puoi solo provare a misurare la larghezza di ogni elemento, calcolare la posizione ed elaborare quelli che non si adattano.

1

element.getClientRects() quando eseguito su un elemento inline che viene compresso restituirà un array, con un oggetto rect per ogni riga. Il supporto Bowser è limited.

Problemi correlati