2011-08-17 14 views

risposta

20

Si desidera trovare il valore della proprietà CSS right?

$('#foo').css('right'); 

In parole povere Javascript:

document.getElementById('foo').style.right; 

Ma, se si vuole trovare il calcolata distanza dal bordo destro di un elemento al bordo destro di un altro, allora si dovrà per farlo da soli, che unisce .position().left e .offsetWidth

+0

grazie ho appena richiesto il giusto valore che viene calcolato prima.Grazie – Xavier

+3

Trovo frustrante che JavaScript (e jQuery) non eseguano il lavoro di calcolo della posizione giusta per conto dell'utente. Sembra una cosa molto ovvia da fare, e sarebbe bello se la struttura ti permettesse di astrarre dal dover calcolare per te stesso. – cartbeforehorse

+0

@nickf Non vedo come '.position(). Left' e' .offsetWidth' possano darti l'equivalente di un ipotetico '.position(). Right'. Per calcolare il valore di un '.position(). Right' * relativo al genitore di offset *, dovresti sapere" .offsetWidth' dell'elemento corrente ** e ** di quel genitore offset, quest'ultimo essendo parte mancante. Mi sto perdendo qualcosa? – avernet

2

si può provare .css

.css("right");

+0

Che funziona solo se" right "è già impostato – user3152459

3
$(document).width() - ($('#elem').offset().left + $('#elem').width()); 

dovrebbe farti lo spazio sul lato destro dell'elemento che è quindi possibile impostare come valore per la proprietà 'giusta' della posizione dell'elemento;

0

Il valore CSS è valido solo se è impostato tramite lo stile o $ .css().

Ma se hai bisogno di ottenere la giusta posizione di un oggetto, dovresti farlo usando javascript/jquery.

Sebbene esistano alcune soluzioni valide, è importante notare che $ .fn.width() non prende padding e bordi nell'account. Quindi è meglio usare outerWidth().

Esempio:

$(document).width() - ($('#elem').offset().left + $('#elem').outerWidth()); 

È anche possibile creare una funzione $ .fn per ottenere il valore:

$.fn.right = function() { 
    return $(document).width() - (this.offset().left + this.outerWidth()); 
} 

E poi usarlo:

$('#elem').right(); 
0

Come notato da @ avernet nei commenti, l'equivalente di un ipotetico .position(). right sarebbe espressione come questa:

$('#foo').offsetParent().width() - ($('#foo').position().left + $('#foo').width()); 
Problemi correlati