2015-04-08 11 views
13

È possibile utilizzare calc() per moltiplicare o dividere con valori basati su unità (come 100%, 5px, ecc.).Calc CSS() - Moltiplicazione e divisione con valori unitari

Per esempio speravo di fare qualcosa di simile:

width: calc(100% * (.7 - 120px/100%)); 

Sperando che ha deliberato di qualcosa di simile (assumendo 100% = 500px):

width: calc(500px * (.7 - 120px/500px)); 
width: calc(500px * (.7 - .24)); 
width: calc(500px * .46); 
width: calc(230px); 

Tuttavia dopo alcuni esperimenti che sembra Non posso avere un valore basato su unità come denominatore per la divisione.

Inoltre, non riesco a collegare più due valori come 5px * 10px o 5px * 100%.

So che non ha senso nel 100% dei casi consentire questo, ma nel mio caso d'uso, mi piacerebbe sapere qual è la percentuale 120px della larghezza complessiva, che poi mi nutro di il resto dei miei calcoli.

O questo, o se qualcuno potesse immaginare un modo diverso di scriverlo, funzionerebbe altrettanto bene. Mi sono tormentato il cervello e non ho potuto inventare nulla.

risposta

21

Nella divisione CSS calc() - il lato destro deve essere un <number> pertanto i valori basati su unità non possono essere utilizzati in una divisione come questa.

Si noti inoltre che nella moltiplicazione almeno uno degli argomenti deve essere un numero.

Il MDN ha una grande documentazione su questo.

Se si desidera un metodo migliore per eseguire calcoli, è possibile utilizzare un preprocessore (mi piace Sass). Quel collegamento ti porterà alle loro guide (in quella pagina c'è una sezione sugli operatori).

+0

Wow ... Ho letto quella pagina 5 volte in cerca di quella regola. Non sono sicuro di come mi sono perso seduto proprio accanto alla descrizione degli operatori. Grazie. Questo è ciò di cui avevo paura. In realtà sto usando MENO, anche se la formula che ti ho dato sopra ho bisogno di calcolare con calc() poiché ho bisogno di conoscere la larghezza, che è variabile. Torna al tavolo da disegno per trovare un approccio completamente diverso. Grazie per la risposta definitiva, almeno ora so che in questo modo è un vicolo cieco. – samanime

+2

I preprocessori non possono gestire tanto quanto calc() può, dal momento che tali calcoli devono essere eseguiti al momento del rendering, il che rende qualcosa come Sass inutile. – TylerH

Problemi correlati