CSS display: inline vs inline-block [duplicate]
In CSS, display
can have values of inline
and inline-block
. Can anyone explain in detail the difference between inline
and inline-block
?
I searched everywhere, the most detailed explanation tells me inline-block
is placed as inline
, but behaves like block
. But it does not explain what exactly "behave as a block" means. Is it any special feature?
An example would be an even better answer. Thanks.
回答1
Inline elements:
- respect left & right margins and padding, but not top & bottom
- cannot have a width and height set
- allow other elements to sit to their left and right.
- see very important side notes on this here.
Block elements:
- respect all of those
- force a line break after the block element
- acquires full-width if width not defined
Inline-block elements:
- allow other elements to sit to their left and right
- respect top & bottom margins and padding
- respect height and width
From W3Schools:
An inline element has no line break before or after it, and it tolerates HTML elements next to it.
A block element has some whitespace above and below it and does not tolerate any HTML elements next to it.
An inline-block element is placed as an inline element (on the same line as adjacent content), but it behaves as a block element.
When you visualize this, it looks like this:
The image is taken from this page, which also talks some more about this subject.
I think you did not read my question completely. I mentioned in the question I know it behaves as a block element. I am asking what does "behave as a block element" means. – user926958 Feb 8 '12 at 8:57
inline
element can start on one line and wrap onto the following line, while aninline-block
element will wrap as a whole. – herman Jun 24 '14 at 15:18What is the difference between display: inline and display: inline-block?
What exactly is the difference between the
inline
andinline-block
values of CSSdisplay
?回答1
A visual answer
Imagine a
<span>
element inside a<div>
. If you give the<span>
element a height of 100px and a red border for example, it will look like this withdisplay: inline
display: inline-block
display: block
Code: http://jsfiddle.net/Mta2b/
自己也fork了一个版本 http://jsfiddle.net/ud25tGNwMddCP7JI/hLnaevyf/1/
Elements with
display:inline-block
are likedisplay:inline
elements, but they can have a width and a height. That means that you can use an inline-block element as a block while flowing it within text or other elements.Difference of supported styles as summary:
margin-left
,margin-right
,padding-left
,padding-right
margin
,padding
,height
,width