2011-12-15 18 views
7

Sto specificando le dimensioni dei caratteri in Ems, il che significa che sono relativi al contenitore padre. Ho diversi elementi figlio e non voglio ripetere la dimensione genitore ogni volta che eseguo calcoli su di essa. Così ho:Interpolazione stringa MINENTE

@articleFontSize: 21/16; 

Se, più avanti, io uso:

font-size: @articleFontSizeem; 

come ci si aspetterebbe, ottengo '@articleFontSizeem variabile è indefinito'.

Se mi interpolare che:

font-size: @{articleFontSize}em; 

poi di nuovo si rifiuta di compilare e ottengo solo una pianura 'errore di sintassi'.

font-size: @articleFontSize~"em"; 

Questo compila - ma in uscita ottengo un codice simile:

font-size: 1.3125 em; 

cioè viene aggiunto uno spazio prima unità, quindi sono ignorati dal browser.

Sto eseguendo LiveReload su un Mac (2.0 beta 5) che secondo le impostazioni utilizza 'System Ruby 1.8.7' per la compilazione.

SOLUZIONI Aggiornamento:

a. Aggiungi una quantità zero delle unità corrette:

font-size: 0em + @articleFontSize; 

b. (Mio precedente metodo alternativo - utilizzando una funzione):

.rFont(@target, @context) { 
    @ratio: @target/@context; 
    font-size: ~"@{ratio}em"; 
} 

Chiamato con:

.rFont(11,@articleFontSize); 

uscita (corretto, nota senza spazi indesiderati):

font-size: 0.7063571428571428em; 

non mi aspettavo mettendo @ {ratio} all'interno di tilde + quotazioni per espanderlo ancora. Ma funziona (quasi niente altro lo fa.)

Questa domanda ha aiutato: concatenate values in less (css) without a space

+0

Il metodo di fuga mi ha aiutato, grazie – Huangism

risposta

11

Prova

font-size: 0em + @articleFontSize; 
+0

Genius! Funziona perfettamente, grazie. –

+7

bel trucco ma non ne hai più bisogno considerando che puoi scrivere 'font-size: unit (@articleFontSize, em);' – TKrugg

1

Puoi mettere il em nella variabile articleFontSize? Per esempio:

@articleFontSize: 21/16em; 

O se questo non funziona forse:

@articleFontSize: (21/16)em; 
+0

Sì, è possibile. In precedenza l'avevo escluso, ma sembra che la mia logica fosse sbagliata: dovrei davvero impostare: –

+0

(2 ° tentativo) In realtà avrei bisogno di impostare la dimensione iniziale su "21" (nessuna formula o unità) quindi può più tardi fare: font-size: 12/@ articleFontSize ed esprimerlo Ems. (Se avessi scritto senza LESS, dovrei cambiare 12/16em a 12/21em per ottenere la giusta misura, se capisci cosa intendo ..) Forse è meglio metterlo a mano. .. –

+0

@articleFontSize: (21/@ articleFontSize) em; Anche le parentesi non funzionano - si convalida, ma di nuovo c'è uno spazio estraneo * indipendentemente dal fatto che si usi il nome variabile di solo 21/16 ecc. Non capisco da dove proviene lo spazio ... –

-1

Dai un'occhiata alla dell'unità 'rem' di misura, invece: http://snook.ca/archives/html_and_css/font-size-with-rem Ha tutto i vantaggi di relativi ems /%, pur mantenendo la prevedibilità di px e previene l'elemosina del 'dimension dimensionamento'.

saluti,

+0

Questo non ha nulla a che fare con la domanda. Il tipo di unità è irrilevante – WickyNilliams