I have a set of elements (each of them is nested to correspondent
Here is a simple and robust solution:
span.item:empty:before {
content: "\200b"; // unicode zero width space character
}
(Update 12/18/2015: rather than using \00a0
non-breaking space, use \200b
, which is also a non-breaking space, but with zero width. See my other answer at https://stackoverflow.com/a/29355130/516910)
This CSS selector only selects the spans that are "empty", and injects some content into that empty space, namely a non-breaking space character. So no matter what font size and line-height you have set, everything around that will fall into line, just as if you had text present in that
, which is probably what you want.
http://plnkr.co/edit/eXHphA?p=preview
The result looks like this:
I see two problems with using min-height
:
Here's what the counter-examples look like when things go wrong:
http://plnkr.co/edit/zeEvca?p=preview
http://plnkr.co/edit/GGd7mz?p=preview
Code for this last example:
Hello Text
Huh?
Yes!
css:
.group {
background-color: #f1f1f1;
padding: 5px;
font-size: 20px;
margin-bottom: 20px;
}
.item {
background-color: #d2e3c5;
border-radius: 6px;
padding: 10px;
margin-bottom:5px;
display: inline-block;
min-height: 20px;
}
.correct {
background-color: #d2e3c5;
border-radius: 6px;
padding: 10px;
margin-bottom:5px;
display: inline-block;
}
.correct:empty:before {
content: "\00a0";
}