2015-05-23 8 views
12

L'ho provato nelle versioni più recenti di Firefox, Chrome, IE 11. In nessuno di questi browser funziona quando si utilizza la funzione CSS calc() per calcolare ad es. width. Per quanto posso vedere, l'ho applicato correttamente. Per avere un riferimento si potrebbe voler controllarePerché il calcolo CSS (100% -250px) non funziona?

http://www.sitepoint.com/css3-calc-function/

Perché questo non funziona?

div { 
 
    background-color: blue; 
 
    height: 50px; 
 
    width: calc(100%-250px); 
 
}
<div></div>

Demos:

http://codepen.io/anon/pen/wazZWm

http://jsfiddle.net/h5mzcow1/

Edit:

Sì, questa domanda si è sviluppata per diventare un duplicato nel corso di numerose modifiche, ma ritengo che questo dovrebbe rimanere qui, poiché illustra il problema meglio di ad esempio CSS calc() not working. Inoltre, la risposta è molto meglio.

+0

Sì, si è rivelato essere un duplicato dopo diversi editing (in origine ero dal presupposto che non funziona su editor di codice online come jsfiddle e codepen), ma questo ha una risposta formattata molto migliore. – connexo

+0

Non sarei d'accordo sul fatto che l'altro dovrebbe essere contrassegnato come duplicato di questo poiché, in realtà, questa domanda avrebbe dovuto essere risolta effettuando una ricerca. È stato risposto molte volte: http://stackoverflow.com/q/15108285/3150271 | http: // StackOverflow.it/q/14967421/3150271 | http://stackoverflow.com/q/25211621/3150271 – Anonymous

+0

Ofc Ho cercato prima, ma la mia ricerca includeva "Codepen" e "Snippet", così come il mio titolo di domanda originale, e non ha restituito risultati adatti. Ecco come si è sviluppato (già spiegato nel commento precedente). – connexo

risposta

35

E 'perché devi mettere uno spazio tra l'operatore + o - in modo per farlo funzionare correttamente.

div { 
 
    background-color: blue; 
 
    height: 50px; 
 
    width: calc(100% - 250px); 
 
}
<div></div>

Dalla documentazione MDN:

Nota: I + e - gli operatori devono sempre essere circondato da spazi bianchi. L'operando di calc(50% -8px) per esempio verrà analizzato come percentuale seguita da un tratto negativo, un'espressione non valida, mentre l'operando di calc(50% - 8px) è una percentuale seguito da un meno segno e una lunghezza. Inoltre, calc(8px + -50%) viene considerato come una lunghezza seguita da un segno più e una percentuale negativa. Gli operatori * e / non richiedono spazi bianchi, ma l'aggiunta per coerenza è consentita e consigliata.

Fonte: MDN

W3C Documentation

+2

Puoi condividere perché lo spazio da includere? È questa l'espressione corretta o perché non calcola senza lo spazio? –

+1

Questo lo risolve! Nessuna delle documentazioni che ho controcorrente ha trovato degno di nota, non è strano? – connexo

+3

È menzionato su [MDN] (https://developer.mozilla.org/en-US/docs/Web/CSS/calc) –