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?
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?
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()
.
Grazie. Esiste un'alternativa per avere lo stesso risultato? – Arnaud
È 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. –
Grazie. Tuttavia, preferirei una soluzione CSS pura. – Arnaud
Una soluzione alternativa sarebbe quella di utilizzare width
stesso.
max-width: 500px;
width: calc(100% - 80px);
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
Ma è lo stesso che usare 'min()' quindi forse utile per gli altri. – Seika85
Mi sembra che l'utilizzo di min-width anziché max-width nell'esempio precedente potrebbe essere equivalente al comportamento richiesto. –
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;
}
}
Ottima soluzione! L'ho usato effettivamente per l'altezza minima, apparentemente potresti usare anche le medie per 'max-height' e +1 – avishic
@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>
li avete provato voi stessi? –
Come ha detto @ gert-sønderby, basta usare questi due: min-width: 500px; larghezza: calc (100% - 80px); – paulie4