2011-01-10 13 views
11

Mentre lavoravo su un cursore dell'intervallo dell'interfaccia utente di jQuery, eseguivo principalmente il debug in chrome. Avevo bisogno di fare la gamma hanno un limite quindi vorrei prendere la posizione sinistra di una delle maniglie in questo modo:jQuery differenze di posizionamento tra Chrome (webkit) e Firefox

$el.css('left');

Il che mi avrebbe dato la posizione di sinistra in percentuale: 84%. Tuttavia, quando ho provato in Firefox, restituiva il valore in pixel.

Qualcuno ha provato questo prima? Basandosi sull'osservazione del DOM in Firebug, Firefox riconosce il posizionamento a sinistra basato sulla percentuale, ma non sembra che lo restituisca come valore. Questo comportamento predefinito è per Firefox? È lo stesso anche in IE?

+0

Buona domanda. Recentemente sono stato sorpreso di trovare i pixel di ritorno css ('left') in Firefox quando la proprietà è stata specificata come percentuale (o ems). Dopo tutto, puoi sempre ottenere il valore del pixel usando position(). Non l'ho verificato in Chrome, però. – harpo

+0

Ya, sono rimasto sorpreso quando uno degli elementi si è appena sparato dallo schermo quando ho pensato che sostanzialmente avessi finito con quella funzionalità. Lavorare su un MBP senza VMWare o simili, quindi non è possibile testare realmente per IE in questo momento. – hellatan

+0

Questo non risponde alla tua domanda, ma una soluzione alternativa basata su jQuery è usare 'position' (http://api.jquery.com/position/), che restituisce lo stesso valore (in pixel) su ogni browser. – Emmett

risposta

0

Non credo che esistano differenze note per il posizionamento con jQuery a partire dall'ultima versione 1.4.4.

1

La funzione css() restituisce il valore della proprietà css specificato come riportato dal browser. Di conseguenza, è specifico per il browser e non deve essere utilizzato quando si tratta di lunghezze e posizionamento in questo modo.

+0

Sono d'accordo, la funzione css() consente di manipolare o leggere le proprietà css e quelle sono (purtroppo) interpretate in modo diverso per browser. Usa la funzione position() se vuoi dati e risultati indipendenti dal browser. – Ivanhoe

0

uso $el.position().left; invece :)

+0

Questo può restituire lo stesso risultato se non hai fortuna. (al momento per me) – Sascha

0

ho lavorato intorno a questo problema accedendo direttamente DOM, in questo modo:

$el.get(0).style.left

restituisce il valore% per FF, Chrome, Safari e IE9. (Non l'ho provato su Opera, però)

Problemi correlati