I have two inline-block div
elements, that are the same, positioned next to eachother. However there seems to be a mysterious space of 4 pixels between the two divs despite the margin being set to 0. There are no parent divs effecting them - What is going on?
CSS
#container { display:inline-block; position:relative; background:rgb(255,100,0); margin:0px; width:40%; height:100px; }
This is what i want it to look like:
Since the whitespace between the inline elements is determined by the font-size , you could simply reset the font-size to 0 , and thus remove the space between the elements.
Delete the line break between your image tag and the div tag.
To display multiple div tags in the same line, we can use the float property in CSS styles. The float property takes left, right,none(default value) and inherit as values. The value left indicates the div tag will be made to float on the left and right to float the div tag to the right.
In this instance, your div
elements have been changed from block
level elements to inline
elements. A typical characteristic of inline
elements is that they respect the whitespace in the markup. This explains why a gap of space is generated between the elements. (example)
There are a few solutions that can be used to solve this.
Example 1 - Comment the whitespace out: (example)
<div>text</div><!-- --><div>text</div><!-- --><div>text</div><!-- --><div>text</div><!-- --><div>text</div>
Example 2 - Remove the line breaks: (example)
<div>text</div><div>text</div><div>text</div><div>text</div><div>text</div>
Example 3 - Close part of the tag on the next line (example)
<div>text</div ><div>text</div ><div>text</div ><div>text</div ><div>text</div>
Example 4 - Close the entire tag on the next line: (example)
<div>text </div><div>text </div><div>text </div><div>text </div><div>text </div>
font-size
Since the whitespace between the inline
elements is determined by the font-size
, you could simply reset the font-size
to 0
, and thus remove the space between the elements.
Just set font-size: 0
on the parent elements, and then declare a new font-size
for the children elements. This works, as demonstrated here (example)
#parent { font-size: 0; } #child { font-size: 16px; }
This method works pretty well, as it doesn't require a change in the markup; however, it doesn't work if the child element's font-size
is declared using em
units. I would therefore recommend removing the whitespace from the markup, or alternatively floating the elements and thus avoiding the space generated by inline
elements.
display: flex
In some cases, you can also set the display
of the parent element to flex
. (example)
This effectively removes the spaces between the elements in supported browsers. Don't forget to add appropriate vendor prefixes for additional support.
.parent { display: flex; } .parent > div { display: inline-block; padding: 1em; border: 2px solid #f00; }
.parent { display: flex; } .parent > div { display: inline-block; padding: 1em; border: 2px solid #f00; }
<div class="parent"> <div>text</div> <div>text</div> <div>text</div> <div>text</div> <div>text</div> </div>
It is incredibly unreliable to use negative margins to remove the space between inline
elements. Please don't use negative margins if there are other, more optimal, solutions.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With