I have markup that is passed via a data base. I need to display this markup in a valid way, but truncated. I’ve done this in the past by using sub string.
let string = 'this is a string of text'; string.substr(0, 165);`
But I cannot do this with markup, as it wil result in invalid markup being output as the end tags will be removed.
Example:
<h2>Titile</h2> <p>Some long paragraph</p> <p>Another long paragraph</p> <p>Another long paragraph</p> <p>Another long paragraph</p> <ul> <li>list item</li> <li>list item</li> <li>list item</li> <li>list item</li> </ul> ... more markup
Expected formatted output:
Title Some long paragraph Another long...
Can anyone think of a way of truncating the content using js or css without it resulting in broken html? Thanks.
Advertisement
Answer
I would suggest using the line-clamp rule in CSS. If you require IE support, then a JS solution would be required.
.line-clamp { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
Output:
Titile Some long paragraph Another long paragraph...