You can choose a separation place, if possible in your situation:
<div>Some text that shows all the time <span class="more"> (more)</span> <span class="expanding"> and some more text that shows when you hover</span> </div>
Then in css, create the โmoreโ class and hide the โexpandingโ class and show accordingly when you hover over a div.
.more { display: block; } .expanding { display: none; } div:hover > .expanding { display: block; } div:hover > .more { display: none; }
What this means is to show and hide the children of the div. If you put the div in td, it should fill it in, and the hover will look the same as the td you are on. Or you can just use td to store all three.
The only tricky part of this is that it doesn't look good all the time unless you have a paragraph ending just above "(more)". This is because you cannot predict line endings in the middle of a paragraph, because the rectangle containing the text changes width.
Fiddle
source share