2014-12-12 6 views
5

E 'possibile dare a div una larghezza che è una percentuale della finestra, e un'altezza che è una certa percentuale della sua larghezza attuale? Quindi il div ridimensiona, ma mantiene lo stesso rapporto quando ridimensiona la finestra del browser.Posso programmare l'altezza div per essere una certa percentuale della sua larghezza attuale?

Grazie Ciao

+0

@bart Qualcuno di queste risposte adatto alle vostre esigenze? compresi i possibili duplicati? se è così, mostra un po 'd'amore. – Todd

+0

Scusa, non lo so ancora! Sto ancora provando ..: p Non sono certamente un professionista in questo, lo sto facendo nel mio tempo libero. Al momento, sto costruendo un piccolo sito web per un esperto di me. Ma mi servirà un po 'di tempo per capire come funziona tutto e come posso applicare le soluzioni suggerite. Ma quando lo faccio funzionare, segnerò sicuramente la risposta che mi ha aiutato di più. Sembrano tutti molto utili. – Bart

+0

continua così! Ho iniziato anche come hobby, mentre mi sono laureato, ora lo faccio a tempo pieno. – Todd

risposta

6

C'è il padding trucco, già risposto, ma io uso un altro approccio, envolving due div annidati.

Quello genitore, ho impostato la larghezza. Il bambino, io uso il valore height come unità container vw - (significa viewport width).

It works well, see here (ridimensionare la finestra)

<div> 
    <div></div> 
</div> 

CSS:

div { 
    width: 100%; 
} 

div > div { 
    background: silver; 
    height: 10vw; 
} 
+0

piace! approccio interessante – Todd

+0

sebbene non sia necessario nidificare divs affinché funzioni. 'div {larghezza: 100%; altezza: 10vw; sfondo: argento; } 'produrrebbe lo stesso risultato, no? Ho ancora capito, specialmente dal momento che le unità viewport sono fantastiche e stanno migliorando il mio supporto. – Todd

+0

http://jsfiddle.net/k3855hLc/4/ – Todd

3

Se si imposta il padding superiore e inferiore di un elemento in percentuali sarà relativo alla larghezza dell'elemento.

+0

Se hai intenzione di ignorare i due link duplicati nei commenti alla rep farm, potresti almeno fornire qualche codice di esempio di lavoro per i futuri visitatori. – AlienWebguy

+0

Non ho notato i commenti. Dovrei collegarmi al link che hai fornito nel tuo commento? Dovrei votare per chiudere? –

+0

potresti collegare a un voto per chiudere? – Todd

5

usa questo

DEMO 1

.aspect-ratio { 
    max-width: 100%; 

} 
.aspect-ratio:before { 
    content: ''; 
    display: block; 
    width: 100%; 
    padding-bottom: ({height-aspect}/{width-aspect} * 100)%; // for 3 x 4, for instance: 75% 
} 

DEMO 2

se si preferisce di meno come me, si può fare una mixin:

.aspectRatio(@widthAspect, @heightAspect) { 
    @aspect: @heightAspect/@widthAspect * 100; 
    max-width: 100%; 

    &:before { 
     content: ''; 
     display: block; 
     width: 100%; 
     padding-bottom: ~"@{aspect}%"; 
    } 
} 
2

Quando si utilizza una percentuale in height, è calcolata rispetto all'altezza del blocco contenitore del riquadrato generato.

Poiché si desidera calcolarlo rispetto alla larghezza, è possibile utilizzare, ad esempio, padding-top.

Per evitare che si ripercuotano sul contenuto, posizionarli in un involucro assolutamente posizionato.

#wrapper { 
 
    padding-top: 25%; /* ratio */ 
 
    border: 1px solid; 
 
    position: relative; 
 
} 
 
#content { 
 
    position: absolute; 
 
    top: 0; 
 
    right: 0; 
 
    bottom: 0; 
 
    left: 0; 
 
}
<div id="wrapper"> 
 
    <div id="content"> 
 
    <p>Foo</p> 
 
    <p>Bar</p> 
 
    <p>Baz</p> 
 
    </div> 
 
</div>

Problemi correlati