JSFiddle - React, Tailwind, and code Playground

by joshmoto

HTML

<script src="//code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<link rel="stylesheet" href="//stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script>
<script src="//stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/[email protected]/slick/slick.css">
<script src="//cdn.jsdelivr.net/npm/[email protected]/slick/slick.min.js"></script>
<header>
  <nav class="navbar">

    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>

    <a class="navbar-brand mr-auto" href="#">master of none</a>

    <a class="nav-link text-muted" href="#">hire me</a>

    <a class="nav-link" href="#">07970032537</a>

    <div class="collapse navbar-collapse" id="navbar">
      <ul class="navbar-nav mr-auto">
        <li class="nav-item active">
          <a class="nav-link" href="#">Hello</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Profile</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Interest</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">History</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Stuff</a>
        </li>
      </ul>
    </div>

  </nav>
</header>

<main>

  <div id="page-slider">

    <div class="slide" data-page="01">
      <div class="container">
        <div class="row align-items-center">
          <div class="col">
            <header>
              Time wasted here 00:03
    ...

SCSS

/* vars
-------------*/

$grey : darken(#fff,75);


/* imports
--------------*/

@import "wrapper";


HTML,
BODY {
  min-height: 100%;
  height: 100%;
  position: relative;
}

BODY {
  background: #000;
  color: $grey;

  & :not(INPUT) {
    user-select: none;
  }
}

HEADER {
  position: absolute;
  width: 100%;
}

NAV {
  height: 78px;

  .navbar-toggler {
    padding: 23px 1rem;
    background: transparent;
    border-radius: 0;
    width: 60px;

    .icon-bar {
      height: 2px;
      display: block;
      background: #fff;
      transition: width .1s ease-in-out;

      &:first-child {
        width: 30px;
        margin-bottom: 10px;
      }

      &:last-child {
        width: 20px;
      }

    }

    &:hover .icon-bar {

      &:first-child {
        width: 20px;
      }

      &:last-child {
        width: 30px;
      }
    }

    &:focus {
      outline: 0;
    }
  }

  .navbar-brand {
    font-size: 0.9rem;
    @extend .nav-link;
  }

  HEADER & {

    .navbar-nav {
      display: block;

      .nav-item {
        display: block;
        float: left;
        clear: left;

        .nav-link {
          float: left;

        }
      }
    }
  }

  .nav-link {
    color: #fff;

    .fas, .fab {
      font-size: 1rem;
      position: relative;
      bottom: -1px;
    }
  }
}

MAIN {
  height: 100%;
  padding: 78px 0;

  .container {
    height: 100%;

    > .row {
      height: 100%;
    }
  }
}

FOOTER {
  position: absolute;
  width: 100%;
  bottom: 0;
}

#page-slider {
  height: 100%;

  .page-dots {
    position: relative;

    UL {
      padding: 0;
      list-style: none;
      @extend .row;

      LI {
        @extend .col-3;
      }
    }

  }

  .slick-list {
    height: 100%;

    .slick-track {
      height: 100%;
    }
  }

  .slick-slide {
    height: 100%;

    > DIV {
      height: 100%;
    }

  }

  .slide {
    height: 100%;

    HEADER {
      position: relative;
    }

    MAIN {
      padding: 0;
      overflow: hidden;

      .card...

JavaScript

// page slider
$('#page-slider').slick({
  draggable: false,
  infinite: false,
  slidesToShow: 1,
  slidesToScroll: 1,
  dots: true,
  arrows: false,
  speed: 0,
  customPaging: function(slider, i) {
    var page_number = $(slider.$slides[i]).find('.slide').data('page');
    return '<button>.' + page_number + '</button>';
  },
  appendDots: $('.page-dots')

}).on('beforeChange', function(event, slick, currentSlide) {

	
  $('#page-slider .slick-slide[data-slick-index="' + currentSlide + '"] .card').addClass('closed');
  
  setTimeout(function() {
    // delay by four seconds before changing to next slide
  }, 4000);

}).on('afterChange', function(event, slick, currentSlide) {

  $('#page-slider .slick-slide[data-slick-index="' + currentSlide + '"] .card').removeClass('closed');

});

// this sets a height in pixels for each .card
function page_heights() {
  var $page_slider = $('#page-slider .card');
  $page_slider.each(function() {
    var h = $('.card-body', this).outerHeight();
    $(this).css('height', h);

  });
}

page_heights();

// resize functions
$(window).resize(function() {

  page_heights();

});