JSFiddle - React, Tailwind, and code Playground
HTML
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
<br><br>
Lorem ipsum dolor sit amet, consectetur adipisicing elit
<br>
Lorem ipsum
<br>
Lorem ipsum dolor sit amet, consectetur
SCSS
body {
background:url(http://placekitten.com/800/600);
}
div.container {
border:1px solid white;
padding:10px;
width:100%;
margin:0 auto;
box-sizing:border-box;
background:white;
position:relative;
z-index:-1;
}
div.inner-container {
overflow:hidden;
position:relative;
width:100%;
}
div.inner-container span.inner {
background:white;
padding-right:2px;
}
div.inner-container span.outer {
position:relative;
display:inline-block;
font-size:20px;
line-height:130%;
}
div.inner-container span.inner:after {
content:'';
position:absolute;
width:300vw;
border-bottom:0.05em dotted black;
left:0;
bottom:0.35em;
z-index:-1;
}
JavaScript
$(document.body).contents().wrapAll("<div class='container'>")
.closest('div.container')
.wrapInner("<div class='inner-container'>")
.end().filter(function(i,e){
return e.nodeType == 3;
}).wrap("<span class='outer'>")
.wrap("<span class='inner'>");