differenza tra larghezza automatica e larghezza 100 percento


99

In precedenza, la mia ipotesi width: autoera che la larghezza fosse impostata su quella del contenuto. Ora vedo che prende l'intera larghezza del genitore.

Qualcuno può descrivere le differenze tra questi?



In poche parole: 1) auto, la larghezza / altezza del div genitore sarà la somma dei suoi figli. 2) 100 percento, la sua larghezza / altezza sarà quella dei suoi genitori. Vedi l'articolo qui
Alan Dong

Risposte:


141

Larghezza automatica

La larghezza iniziale di un elemento a livello di blocco come div o p è auto. Questo lo fa espandere per occupare tutto lo spazio orizzontale disponibile all'interno del suo blocco contenitore. Se ha una spaziatura orizzontale o un bordo, le larghezze di questi non si aggiungono alla larghezza totale dell'elemento.

Larghezza 100%

D'altra parte, se specifichi larghezza: 100%, la larghezza totale dell'elemento sarà il 100% del suo blocco contenitore più qualsiasi margine orizzontale, padding e bordo (a meno che tu non abbia usato box-sizing: border-box, nel qual caso solo i margini vengono aggiunti al 100% per modificare il modo in cui viene calcolata la larghezza totale). Questo potrebbe essere quello che vuoi, ma molto probabilmente non lo è.

Per visualizzare la differenza vedere questa immagine:

inserisci qui la descrizione dell'immagine

fonte


3
Per coloro che sono curiosi di sapere il motivo per cui width: autosi comporta in questo modo: stackoverflow.com/questions/28353625/...
Hashem Qolami

1
così autofa lo stesso difill-available
jiggunjer

2
Quindi fondamentalmente non ha nulla a che fare con la dimensione del contenuto degli elementi, ma si riferisce totalmente alla larghezza genitore?
haemse

82
  • width: auto; proverà il più possibile a mantenere un elemento della stessa larghezza del suo contenitore genitore quando viene aggiunto spazio aggiuntivo da margini, spaziatura interna o bordi.

  • width: 100%;renderà l'elemento largo quanto il contenitore genitore. La spaziatura extra verrà aggiunta alla dimensione dell'elemento indipendentemente dal genitore. Questo in genere causa problemi.

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine


2
la stessa cosa di @ C-link fornito ma un'interfaccia grafica extra. così +1
Navin Rauniyar

8

Si tratta di margini e bordi. Se usi width: auto, quindi aggiungi bordo, il tuo div non diventerà più grande del suo contenitore. D'altra parte, se usi width: 100%e un bordo, la larghezza dell'elemento sarà 100% + bordo o margine. Per maggiori informazioni vedi questo .


4

Finché il valore di larghezza è auto, l'elemento può avere margine orizzontale, padding e bordo senza diventare più largo del suo contenitore (a meno che, ovviamente, la somma di margin-left + border-left-width + padding-left + padding-right + border-right-width + margin-right è più grande del contenitore). La larghezza della sua casella di contenuto sarà quella che rimane quando il margine, la spaziatura interna e il bordo sono stati sottratti dalla larghezza del contenitore.

D'altra parte, se specifichi larghezza: 100%, la larghezza totale dell'elemento sarà il 100% del suo blocco contenitore più qualsiasi margine orizzontale, padding e bordo (a meno che tu non abbia usato box-sizing: border-box, nel qual caso solo i margini vengono aggiunti al 100% per modificare il modo in cui viene calcolata la larghezza totale). Questo potrebbe essere quello che vuoi, ma molto probabilmente non lo è.

Fonte:

http://www.456bereastreet.com/archive/201112/the_difference_between_widthauto_and_width100/


3

La larghezza iniziale di un elemento a livello di blocco come div o p è auto.

Usa width: auto per annullare le larghezze specificate in modo esplicito.

se si specifica larghezza: 100%, la larghezza totale dell'elemento sarà il 100% del suo blocco contenitore più qualsiasi margine orizzontale, riempimento e bordo.

Quindi, la prossima volta che ti ritrovi a impostare la larghezza di un elemento a livello di blocco al 100% per far sì che occupi tutta la larghezza disponibile, considera se ciò che vuoi veramente è impostarlo su automatico.


3

Larghezza 100%: renderà il contenuto al 100%. margin, border, padding verranno aggiunti a questa larghezza e l'elemento andrà in overflow se uno di questi viene aggiunto.

Larghezza automatica: si adatterà all'elemento nello spazio disponibile inclusi margine, bordo e imbottitura. lo spazio rimanente dopo la regolazione di margine + riempimento + bordo sarà disponibile in larghezza / altezza.

Larghezza 100% + dimensione della scatola: bordo scatola: si adatta anche all'elemento nello spazio disponibile, incluso il bordo, il riempimento (il margine lo farà traboccare dal contenitore).


1

Utilizzando la larghezza: auto; + display: blocco in linea; in css dando un effetto fantastico.

width : auto;
display: inline-block;

2
Questo non risponde alla domanda sulla differenza tra 100 & e auto.
JoeTidee

1
Sì, lo so, ma sto cercando di mostrare qui la larghezza: auto e display: inline-block . Quando vogliamo aumentare automaticamente la larghezza di qualsiasi elemento a livello di blocco, possiamo usarlo. E differenza tra 100% e auto
Mohammed Javed

0

Quando diciamo

width:auto;

la larghezza non supererà mai la larghezza totale dell'elemento genitore. La larghezza massima è la larghezza del genitore. Anche se aggiungiamo bordo, padding e margin, il contenuto dell'elemento stesso diventerà più piccolo per dare spazio a bordo, padding e margine. Nel caso in cui lo spazio richiesto per bordo + riempimento + margine è maggiore della larghezza totale dell'elemento genitore, la larghezza del contenuto diventerà zero.

Quando diciamo

width:100%;

la larghezza del contenuto dell'elemento diventerà il 100% dell'elemento genitore e da ora se aggiungiamo bordo, padding o margine allora l'elemento figlio supererà la larghezza dell'elemento genitore e inizierà a traboccare dall'elemento genitore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.