2012-01-05 9 views
9

Sto provando a configurare il riempimento su alcuni \ elementi disegnati come pillole e voglio modificare dinamicamente il padding. So che posso fare:Come posso moltiplicare un valore di larghezza del pixel con LESS Css?

@pill-padding-v: 8px; 
@pill-padding-h: 15px; 

padding:@pill-padding-v @pill-padding-h; 

che rende questo - e sembra funzionare bene:

padding:8px 15px; 

Ma come posso avere meno aggiungere 1px di imbottitura a questo?

@pill-padding-v: 8; 
@pill-padding-h: 15; 

@pill-padding-v: (@pill-padding-v + 1) 
@pill-padding-h: (@pill-padding-h + 1) 

padding:@pill-padding-vpx @pill-padding-hpx; 

Il probelem principale sembra essere l'aggiunta di "px" come parte del nome della variabile sto ottenendo un errore di compilazione. Inoltre penso che sia sintatticamente scorretto usare 8 px invece di 8px e che sembra irrompere anche nei browser.

Come posso moltiplicare un valore di larghezza di pixel con LESS Css?

+2

"Moltiplica" o "aggiungi"? Sembri confuso (o forse sono solo io). –

risposta

14

Hai ragione, l'aggiunta del px alla variabile sta causando problemi. Ho effettivamente provato la sintassi di interpolazione e non ha aiutato, ma dovresti specificare le unità comunque nelle tue variabili (px, em, % ...), come nel tuo primo esempio di lavoro.

Hai detto "moltiplica" ma penso che volevi dire "aggiungi". Non ci dovrebbe essere alcun problema, provate questo:

@pill-padding-v: 8px; 
@pill-padding-h: 15px; 

@pill-padding-v: (@pill-padding-v + 1); 
@pill-padding-h: (@pill-padding-h + 1); 

element { 
    padding:@pill-padding-v @pill-padding-h; 
} 

uscita dovrebbe essere:

element { padding:9px 16px; } 

... anche se, si potrebbe desiderare di utilizzare solo un altro nome variabile o aggiungere la giusta 1px in dichiarazione di stile. Non penso che la re-dichiarare le variabili sia una buona pratica, ed è stato in realtà sorpreso che abbia funzionato.

+0

Bello. Logicamente non sembra che la sintassi in stile javascript di LESS possa prendere (8px + 1) e ottenere 9px. – cwd

+1

Non sono sicuro del motivo per cui questo dovrebbe essere il caso, ma le parentesi intorno all'equazione sono assolutamente obbligatorie - il "+" ha un significato nel CSS (a parte "il fratello immediato" quando viene utilizzato in un selettore)? –

+0

@Jonz Per quanto ne so, '+' non è usato nei CSS per nessun altro scopo. Sto usando una porta PHP di LESS ed è piuttosto "intelligente" per gli operatori, di solito non uso i paren. –

6

parte aggiuntivo, è possibile effettuare qualsiasi calcolo matematico usando meno in questo modo:

@pill-padding-v: 8; 
@pill-padding-h: 15; 

element { 
/* the numbers I'm multiplying by are arbitrary, 
but the value defined in the LESS variable will append 
the unit that you multiply it by. */ 
padding: calc(@pill-padding-v * 3px) calc(@pill-padding-h * 2px); 
} 

MENO uscite:

element { 
    padding:calc(24px) calc(30px); 
} 

Anche se è avvolto nella funzione calc, va bene, perché la risultato dell '"equazione" senza operatore matematico, è comunque quel valore.

L'utente seven-fasi-max offre un buon punto: non è necessaria la funzione calc() in MENO. Può essere scritto in MENO come:

element { 
    padding: (@pill-padding-v * 3px) (@pill-padding-h * 2px); 
} 
+0

E di è lo scopo del 'calc' lì? –

+0

La funzione calc() farà alcuni calcoli per calcolare un valore per te. E la magia è quando lo si moltiplica per un numero con un'unità (em, px, ecc.), Il risultato assume quell'unità. – itsmikem

+1

Sì, mi dispiace per la domanda non chiara. So cosa significa 'calc' in CSS, ma cosa sta facendo in 'calc (24px)'? Suggerimento: non * hai bisogno di 'calc' per' @ pill-padding-v * 3px' ecc. –

Problemi correlati