JSFiddle - React, Tailwind, and code Playground
by nilloc
HTML
<div id='app' class='container stack'>
<div class='code-row container stack'>
<div class='number'>1</div>
<div class='code-holder indent-1 container horizontal'>
<code class='code-block'>testFunctionCall( <code class='code-block argument'>argument</code> );</code>
</div>
</div>
<div class='code-row container stack'>
<div class='number'>2</div>
<div class='code-holder indent-1 container horizontal'>
<code class='code-block open'>motor</code>
<code class='dot'>.</code>
<code class='code-block'>testFunctionCall( <code class='code-block argument'>argument</code> );</code>
</div>
</div>
<div class='code-row container stack'>
<div class='number'>3</div>
<div class='code-holder indent-1 container horizontal'>
<div class='code-block'><div class='block-collapse lines-3'></div>while( <code class='code-block argument'>argument</code> ){</div>
</div>
</div>
<div class='code-row container stack'>
<div class='number'>4</div>
<div class='code-holder indent-1 container horizontal'>
<code class='space'> </code>
<code class='space'> </code>
<code class='code-block open'>motor</code>
<code class='dot'>.</code>
<code class='code-block'>testFunctionCall( <code class='code-block argument'>argument</code> );</code>
</div>
</div>
<div class='code-row container stack'>
<div class='number'>5</div>
<div class='code-holder indent-1 container horizontal'>
<code class='code-block'>}</code>
</div>
</div>
</div>
SCSS
* { box-sizing: border-box }
#app{
background:#333;
position:absolute;
top:0;
bottom:0;
left:0;
right:0;
font:16px monospace;
div{
position:relative;
background:rgba(255,255,255,0.25);
}
.code-row{
left:0;
right:0;
height:40px;
& .indent-1{
padding-left:100px;
}
&:hover{
background:#c07712;
}
.code-holder{
min-height:40px;
padding-top:2px;
padding-bottom:2px;
.code-block{
background:rgba(255,255,255,0.5);
border-radius:4px;
display:inline-block;
height:36px;
padding:8px;
&:hover{
background:rgba(255,255,255,0.75);
cursor:pointer;
.code-block{
&:hover{
background:rgba(255,255,255,1);
}
background:rgba(55,55,55,0.3);
height:30px;
padding:5px 8px;
margin-top:-5px;
}
}
.code-block{
height:30px;
padding:5px 8px;
margin-top:-5px;
}
.block-collapse{
position:absolute;
left:-30px;
top:10px;
border-radius:20px;
width:20px;
min-height:20px;
background:#bada55;
z-index:20;
@for $i from 1 through 10 {
&.lines-#{$i}{
height:($i * 40px) - 20px;
}
}
}
}
}
.dot, .space, .tab{
padding:0;
margin-left:-4px;
margin-right:-4px;
}
.number{
position:absolute;
left:0;
top:0;
width:60px;
min-height:40px;
text-align:center;
padding:10px;
}
}
}