JSFiddle - React, Tailwind, and code Playground

by GioLogist

HTML

<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"></script>
<div class="kss-embed">
  <ul>
    <li><a href="#tabs-1">Result</a></li>
    <li><a href="#tabs-2">HTML</a></li>
    <li><a href="#tabs-3">CSS</a></li>
    <li><a href="#tabs-4">JS</a></li>
  </ul>
  <div id="tabs-1" class="kss-embed__html">
    <iframe class="kss-embed__html-iframe"></iframe>
    <div class="kss-embed__html-code">
      <a href="#" class="btn class_name">Link Buttons</a>
    </div>
  </div>
  <div id="tabs-2" class="kss-embed__prettyprint">
    <pre class="prettyprint linenums lang-html"><code data-language="html">&lt;a href=&quot;#&quot; class=&quot;btn&quot;&gt;
    Link Button
&lt;/a&gt;</code></pre>
  </div>
  <div id="tabs-3" class="kss-embed__prettyprint">
    <pre class="prettyprint linenums lang-css"><code data-language="css">// CSS here
</code></pre>
  </div>
  <div id="tabs-4" class="kss-embed__prettyprint">
    <pre class="prettyprint linenums lang-css"><code data-language="css">// JS Here</code></pre>
  </div>
</div>

SCSS

.kss-embed.ui-tabs {
  font-family: "Courier New", Courier, monospace;
  padding: 0;
  border: 1px solid #ddd;

  .ui-tabs-panel,
  .ui-tabs-nav,
  .ui-tabs-nav li,
  .ui-tabs-nav li.ui-tabs-active{
    margin: 0;
    padding: 0;
  }
  .ui-widget-header {
    border: 0;
    border-bottom: 1px solid #ddd;
    background: #f5f5f5;
    font-size: 13px;
    text-transform: uppercase;
  }
  .ui-tabs-nav {
   border-bottom-right-radius: 0;
   border-bottom-left-radius: 0;
  }
  .ui-tabs-nav li {
    border: 0;
    border-radius: 0;
  }
  .ui-tabs-nav li a {
    outline: 0;
  }
}
.kss-embed {
  pre {
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 4px;
    border-top-left-radius: 0;
    border-top-right-radius: 0;
  }
  .kss-embed__html-code {
    display: none;
  }
  iframe {
    width: 100%;
    border: 1px solid #eee;
    border-radius: 4px;
    border-top-left-radius: 0;
    border-top-right-radius: 0;
  }
}
.kss-embed__prettyprint ol {
  margin: 0;
  padding: 0;
  list-style-type: none;
  list-style: none;
  counter-increment: custom;
  
  li:before {
    font-size: 13px;
    font-family: "Courier New", Courier, monospace;
    width: 35px;
    text-align: center;
    display: inline-block;
    line-height: 24px;
    margin: 0 10px 0 -10px;
    padding: 0 0 0 5px;
    background: #f5f5f5;
    content: counter(custom) " ";
    color: #999;
    border-right: 1px solid #DDD;
  }
  
  li:first-child { 
    counter-reset: custom; 
  } 
  
  li {
    counter-increment: custom;
    border-bottom: 1px solid #eee;
    padding: 0 10px;
    background: #fff;
  }
  
  li:last-child { 
    border-bottom: 0;
  } 
  
}

JavaScript

$(function() {
  // activate tabs
  $(".kss-embed").tabs({
    active: 1
  });
  // render html inside iframe
  $(".kss-embed__html").each(function(i) {
    var iframe = $(this).find('.kss-embed__html-iframe');
    var html_code = $(this).find('.kss-embed__html-code').html();
    $(iframe).attr('srcdoc', html_code);
  });
});