Your problem is that an empty dd not created and leaves an empty space (height: 0px).
If you can, yes, just put nbsp; inside any empty element. This is the simplest solution that will work in a cross browser.
A simple, clean css fix would look like this:
dd:after {content:"."}
But he adds a point after each definition ...
You can also just set the minimum height on your dd:
dt {clear: left;} dt, dd {min-height:1.5em;}
(dt and dd min-height should be the same!)
demo
... You will probably run into a problem if your dt height is not regular (if it is once on two lines, for example).
source share