Jaka jest dokładnie różnica między inline
i inline-block
wartościami CSS display
?
607
Wyobraź sobie <span>
element wewnątrz <div>
. Jeśli <span>
na przykład nadasz elementowi wysokość 100 pikseli i czerwoną ramkę, będzie wyglądać tak z
wyświetlacz: wbudowany
display: blok wbudowany
Blok wyświetlacza
Kod: http://jsfiddle.net/Mta2b/
Elementy z display:inline-block
są jak display:inline
elementy, ale mogą mieć szerokość i wysokość . Oznacza to, że możesz użyć elementu bloku wstawianego jako bloku, przepływając go w tekście lub innych elementach.
Różnica obsługiwanych stylów jako podsumowanie:
margin-left
, margin-right
, padding-left
,padding-right
margin
, padding
, height
,width
p
,div
uzyskują całą szerokość linii (wymuszają przerwanie linii), ale przestrzegają szerokości / wysokości i wszystkich poziomych / pionowych wypełnień / marginesów. Elementydisplay: inline;
to tryb wyświetlania używany w zdaniu. Na przykład, jeśli masz akapit i chcesz wyróżnić pojedyncze słowo, to:<em>
Element madisplay: inline;
domyślnie, ponieważ ten znacznik jest zawsze używany w zdaniu.<p>
Element madisplay: block;
domyślnie, bo to ani wyrok, ani w jednym zdaniu, to blok zdań.Element z
display: inline;
nie może miećheight
ani,width
ani pionumargin
. Element zdisplay: block;
może miećwidth
,height
imargin
.Jeśli chcesz dodać element
height
do<em>
elementu, musisz ustawić ten element nadisplay: inline-block;
. Teraz możesz dodać aheight
do elementu i każdego innego stylu bloku (block
częśćinline-block
), ale jest on umieszczony w zdaniu (inline
częśćinline-block
).źródło
display
wartości.Jedną rzeczą nie wymienioną w odpowiedziach jest to, że element wbudowany może się przedzierać między liniami, podczas gdy blok wbudowany nie może (i oczywiście blokuje)! Tak więc elementy śródliniowe mogą być przydatne do stylizowania zdań tekstu i bloków w nich, ale ponieważ nie można ich uzupełniać, zamiast tego można użyć wysokości linii .
źródło
Wszystkie powyższe odpowiedzi zawierają ważne informacje na temat pierwotnego pytania. Istnieje jednak uogólnienie, które wydaje się błędne.
Możliwe jest ustawienie szerokości i wysokości co najmniej jednego elementu wbudowanego (o którym mogę myśleć) -
<img>
elementu.Obie zaakceptowały odpowiedzi tutaj i w tym zduplikowanym stanie, że nie jest to możliwe, ale nie wydaje się to prawidłową ogólną zasadą.
Przykład:
img
Madisplay: inline
, ale jestwidth
iheight
zostały pomyślnie ustawiony.źródło
odpowiedź splattne prawdopodobnie obejmowała większość wszystkiego, więc nie powtórzę tego samego, ale:
inline
iinline-block
zachowuję się inaczej zdirection
właściwością CSS.W kolejnym fragmencie
one two
jest renderowany (w kolejności), podobnie jak w układach LTR. Podejrzewam, że tutaj przeglądarka automatycznie wykryła część angielską jako tekst LTR i wyrenderowała ją od lewej do prawej.Jeśli jednak pójdę dalej i ustawię
display
nainline-block
, przeglądarka wydaje się szanowaćdirection
właściwość i renderować elementy od prawej do lewej w kolejności, abytwo one
było renderowane.Nie wiem, czy są jakieś inne dziwactwa, dowiedziałem się o tym tylko w Chrome.
źródło