2013-05-17 20 views
57

E 'possibile fare qualcosa di simileCalc di max, o massimo di calc in CSS

max-width: calc(max(500px, 100% - 80px)) 

o

max-width: max(500px, calc(100% - 80px))) 

in CSS?

+0

li avete provato voi stessi? –

+1

Come ha detto @ gert-sønderby, basta usare questi due: min-width: 500px; larghezza: calc (100% - 80px); – paulie4

risposta

57

No, non è possibile. max() e min() sono stati eliminati dai valori e dalle unità CSS3. Possono tuttavia essere re-introduced in CSS4 Values and Units. Non esiste attualmente alcuna specifica per loro e la specifica calc() non menziona che entrambi sono validi all'interno di una funzione calc().

+0

Grazie. Esiste un'alternativa per avere lo stesso risultato? – Arnaud

+1

È possibile utilizzare JavaScript per ottenere lo stile calcolato (in realtà lo stile utilizzato) dell'elemento. Rimuovi 80px da esso e confrontalo a 500 per vedere quale è maggiore. Qualcosa come var val = parseInt (window.getComputedStyle (el, null) .getPropertyValue ("width")) - 80) per ottenere la larghezza - 80 e el.style.maxWidth per l'impostazione della larghezza massima. –

+6

Grazie. Tuttavia, preferirei una soluzione CSS pura. – Arnaud

22

Una soluzione alternativa sarebbe quella di utilizzare width stesso.

max-width: 500px; 
width: calc(100% - 80px); 
+2

Questa è una buona idea, ma se capisco correttamente la domanda di Arnaud, vuole la larghezza massima di '500px' o' 100% - 80px'. La tua soluzione limita la larghezza massima a '500px' anche se' 100% - 80px' è maggiore. – Theophilus

+2

Ma è lo stesso che usare 'min()' quindi forse utile per gli altri. – Seika85

+9

Mi sembra che l'utilizzo di min-width anziché max-width nell'esempio precedente potrebbe essere equivalente al comportamento richiesto. –

38

Una soluzione 'puro' CSS è effettivamente possibile ora utilizzando media query:

.yourselector { 
    max-width: calc(100% - 80px); 
} 

@media screen and (max-width: 500px) { 
    .yourselector { 
    max-width: 500px; 
    } 
} 
+0

Ottima soluzione! L'ho usato effettivamente per l'altezza minima, apparentemente potresti usare anche le medie per 'max-height' e +1 – avishic

0

@Amaud Esiste un'alternativa in modo da avere lo stesso risultato?

C'è un approccio css non js puro che otterrebbe risultati simili. Dovresti modificare il riempimento/margine del contenitore degli elementi parent.

.parent { 
 
    padding: 0 50px 0 0; 
 
    width: calc(50%-50px); 
 
    background-color: #000; 
 
} 
 

 
.parent .child { 
 
    max-width:100%; 
 
    height:50px; 
 
    background-color: #999; 
 
}
<div class="parent"> 
 
<div class="child"></div> 
 
</div>

Problemi correlati