voglio essere in grado di effettuare le seguenti operazioni:Sass calcolare per cento meno px
height: 25% - 5px;
Ovviamente quando faccio che ottengo l'errore:
Incompatible units: 'px' and '%'.
voglio essere in grado di effettuare le seguenti operazioni:Sass calcolare per cento meno px
height: 25% - 5px;
Ovviamente quando faccio che ottengo l'errore:
Incompatible units: 'px' and '%'.
Sass non può eseguire operazioni aritmetiche su valori che non possono essere convertito da un'unità all'altra. Sass non ha modo di sapere esattamente quanto "100%" sia in termini di pixel o di qualsiasi altra unità. È qualcosa che solo il browser conosce.
È necessario utilizzare calc()
. Check browser compatibility on Can I use...
.foo {
height: -webkit-calc(25% - 5px);
height: -moz-calc(25% - 5px);
height: calc(25% - 5px);
}
Se i valori sono variabili, potrebbe essere necessario usare l'interpolazione trasformarli in stringhe (altrimenti Sass cerca solo di eseguire operazioni aritmetiche):
$a: 25%;
$b: 5px;
.foo {
width: -webkit-calc(#{$a} - #{$b});
width: -moz-calc(#{$a} - #{$b});
width: calc(#{$a} - #{$b});
}
Direi che calc () non funziona affatto nella maggior parte dei browser. Le piattaforme mobili sono importanti tanto quanto i desktop. – dalgard
Nessun argomento lì, ma contare i browser! Più supporto calc() di no, e ancor più lo supporteranno nel prossimo futuro! – chrisgonzalez
Avevo problemi di larghezza usando una variabile all'interno delle funzioni calc, ma ho trovato qui: http: // stackoverflow.com/questions/13542164/using-variables-in-sass-percentage-function che potrei fare riferimento alla variabile in questo modo: 'calc (25% - # {$ var})'. – mlunoe
SE si conosce la larghezza del il contenitore, puoi fare così:
#container
width: #{200}px
#element
width: #{(0.25 * 200) - 5}px
Sono consapevole che in molti casi #contenitore potrebbe avere un parente larghezza. Quindi questo non funzionerebbe.
Ci scusiamo per la rivitalizzazione del thread precedente - L'allungamento della bussola con uno: dopo lo pseudo-selettore potrebbe essere adatto al tuo scopo, ad es. se si desidera un div per riempire larghezza da sinistra a (50% + 10px) dello schermo è possibile utilizzare (in SASS sintassi rientrato):
.example
background: red
+stretch(0, -10px, 0, 0)
&:after
+stretch(0, 0, 0, 50%)
content: ' '
background: blue
L': dopo elemento riempie il 50% alla destra di .Esempio (lasciando disponibile il 50% per la larghezza di .example), quindi .example viene esteso a quella larghezza più 10 px.
c'è un mix minore o meno per questo da qualche parte? calc non sembra funzionare molto bene. – v3nt
C'è una funzione calc
in SCSS [in fase di compilazione] e in CSS [in fase di esecuzione]. Probabilmente stai invocando il primo anziché il secondo.
Per ovvi motivi, le unità di missaggio non funzioneranno in fase di compilazione, ma verranno eseguite in fase di esecuzione.
È possibile forzare quest'ultimo utilizzando unquote
, una funzione SCSS.
.selector { height: unquote("-webkit-calc(100% - 40px)"); }
$var:25%;
$foo:5px;
.selector {
height:unquote("calc(#{$var} - #{$foo})");
}
Grazie per aver postato una risposta a questa domanda! Le risposte al solo codice sono scoraggiate su Stack Overflow, perché un dump del codice senza contesto non spiega come o perché la soluzione funzionerà, rendendo difficile per il poster originale (o per eventuali futuri lettori) capire la logica alla base. Per favore, modifica la tua domanda e includi una spiegazione del tuo codice in modo che gli altri possano beneficiare della tua risposta. Grazie! –
Questo mi ha salvato. width: unquote ("calc (100% - # {$ leftnav-width})"); – httpete
Cosa uscita * fare * si ottiene? – cimmanon
Viene visualizzato l'errore "Valore proprietà non valido". In ogni browser, inclusa la versione di Canary di Chrome. –
Se c'è una funzione Sass che mi fa diventare ciò che voglio, è che stavo giocando con 'calc' ... –