Space between nowrap inline blocks [duplicate]
I want to have several block elements next to each other, which take the full browser width.
With white-space: nowrap
, it works quite well, but there is a random space of a few pixels in between one element and another:
body { margin: 0; padding: 0; }
#container1 { white-space: nowrap; position: absolute; width: 100%; }
#container1 div { display: inline-block; width: 100%; height: 200px; }
<div id="container1">
<div style="background: red;"></div>
<div style="background: yellow;"></div>
<div style="background: green;"></div>
<div style="background: blue;"></div>
</div>
Here is the jsBin Demo.
It is no padding, no margin, no border, no offset.
That's because of a space character between inline(-block) elements (a line break and a few tabs counts as a space), This could be fixed by commenting that space out this way:
<div style="background: red;"></div><!--
--><div style="background: yellow;"></div><!--
--><div style="background: green;"></div><!--
--><div style="background: blue;"></div>
Online Demo.
Actually, it's not a bug, it's the normal behavior of the inline elements; Just like when you place an image next to a line of text, or put a button next to an input element.
There are couple of ways to remove the space between inline(-block) elements:
- Minimized the HTML
- Negative margins
- Comment the white space out
- Break the closing tag
- Set the font size of the parent to zero then reset that for children
- Float the inline items instead
- Use flexbox
Check the Chris Coyier's Article, or these similar topics on SO:
- Why is there a gap between image and navigation bar
- How to remove the space between inline-block elements?
- A Space between Inline-Block List Items
- How to remove "Invisible space" from HTML
I've faced this problem once and I used this CSS property. sometimes its help.
font-size:0;