2015-06-01 20 views
9

voglio limitare la larghezza di un <div> non più di 50%, e non più di 200px.min/max larghezza/altezza con più valori

Il che significa che, quando 50% è inferiore a 200px, dovrebbe avere lo stesso comportamento max-width: 50%, altrimenti il ​​suo comportamento diventa max-width: 200px.

Come posso definire questo con i CSS?
(senza min funzione, che non sono stati ancora supportato)

<div class="some_element">Text here</div> 
<style> 
.some_element { 
    background: red; 
    float: left; 
    width: auto; 
    max-width: 200px; 
    max-width: 50%; /* this will override previous one, but i want both of them work */ 
} 
</style> 
+0

Secondo http://caniuse.com/#feat=minmaxwh ha un supporto piuttosto buono (la larghezza minima di cui stai parlando) –

+1

@DouwedeHaan Sì, questa funzione è abbastanza vecchia e ampiamente supportata. Ma accetta solo un valore. Ma io voglio due. – tsh

risposta

0

Si può provare come menzione qui sotto

.some_element { 
    background: red; 
    float: left; 
    width: auto; 
    width: 50%; 
    max-width: 200px;   
} 
+2

larghezza: auto non ha significato qui –

+0

scusa. hai ragione puoi rimuovere la larghezza: auto; –

+0

ricontrolla il codice –

6

Non è possibile impostare max-width sia 200px e il 50%. Si potrebbe mettere l'elemento in un altro elemento con max-width di 400px:

<div id="parent"> 
    <div id="child">Text here</div> 
</div> 


#parent { 
    background-color: red; 
    max-width: 400px; 
} 
#child { 
    background-color: green; 
    max-width: 50%; 
} 
+0

Perché modificato? Quello precedente (con 'max-width: 50%') sembra corretto ma non questo? – tsh

+0

Beh, l'ho rimesso a posto, la larghezza mi sembrava più corretta;) –

+0

Che dire di un'immagine? Le immagini non si adattano ai genitori, credo. –

1

creare classi separate e aggiungerli in modo dinamico sulla base outerWidth()

.some_element { 
     background: red; 
     float: left; 
     width: auto; 
    } 

    .widthClass1{ 
    max-width:50%; 
    } 

    .widthClass2{ 
    max-width:200px; 
    } 


    $(document).ready(function(){ 
     if($("textDiv").outerWidth()<400){//instead of dividing by 2 I am comparing with 400 
     $("textDiv").addClass('widthClass1') 
     }else{ 
     $("textDiv").addClass('widthClass2') 
     } 
    }); 
+0

Utilizzare javascript risolverà sempre tali problemi, che è proprio come 'max-width: expression (Math.min (this.parentNode.clientWidth/2, 200) + 'px');' (codici non testati) nei vecchi giorni. Ma l'aggiornamento di 'classList' o' max-width' di questi elementi sembra troppo complesso. cioè quando la finestra viene ridimensionata, quando gli elementi mostrati/nascosti ... – tsh

+0

puoi mantenere tutti questi css orientati alla larghezza in una funzione e può fare anche su window.onresize –

0
<div id="parent"> 
    <div id="sub">test content</div> 
</div> 

// css

#parent { 
    max-width: 200px; 
} 
#sub { 
    width: 50%; 
} 
3

È possibile specificare la regola desiderata come larghezza massima del 50% quando la larghezza della pagina è inferiore o uguale a 400 px e 200 px quando la pagina w l'ID è maggiore o uguale a 400 px. Sembra molto simile a una query sui media! Mi occupo larghezza dello schermo più piccoli e poi override per larghezze di grande, che è questo CSS:

.some_element { 
    background: red; 
    float: left; 
    width: auto; 
    max-width: 50%; 
} 
@media (min-width: 400px) { 
    .some_element { 
    max-width: 200px; 
    } 
} 

Se si preferisce, è possibile scambiare la 50% e la 200px e cambiarne anche l'min-width-max-width.