// Sandbox just for fun
.big-circles
  .big-circle
  .big-circle
  .big-circle
section#home
  .slide-wrapper
    .smallcircles
      .small-circle
      .small-circle
      .small-circle
      .small-circle
      .small-circle
      .small-circle
    .cover-wrapper.text-center#home-content
      .cover-wrapper__inner
        .cover-wrapper__container
           h1 Maciej Siwanowicz
           p 
             button.btn.btn-cta.btn-cta__green.text-uppercase.trigger(data-toggle='closed') View portfolio
             
 
  section#portfolio.portfolio-wrapper   
    .cover-wrapper.text-center#home
      .cover-wrapper__inner
        .cover-wrapper__container
          .container
            .row
              .col-sm-12
                h1.test-uppercase Portfolio
                p 
                 button.btn.btn-cta.btn-cta__green.text-uppercase.trigger(data-toggle='opened') Back home
                
               
View Compiled
@import url('https://fonts.googleapis.com/css?family=Montserrat');

html, body {
  font-family: 'Montserrat', sans-serif;
  height: 100%;
  width: 100%;
  color: white;
  background-color: #3b1b8b;
  overflow: hidden;
}

section {
  opacity: 1;
  height:100%;
  width: 100%;
}
.active section {
  opacity: 1;
  transition: opacity 0.5s;
}
.btn-cta {
  border: 5px solid;
  border-radius: 0;  
}
.btn-cta__green {
  border-color:#76FF03;
  background-color: transparent;
  color: #76FF03;
}
.btn-cta__gray {
  border:#ccc;
  background-color: transparent;
  color: #ccc;
}
.slide-wrapper {
    position: relative;
    overflow: hidden;
    height: 90%;
    width: 90%;
    top: 5%;
    bottom: 5%;
    left: 5%;
    right: 5%;
    z-index:3;
}
h1, h2, h3, h4, h5, h6 {
  color: #fff;
}

.navbar-default .navbar-nav > li > a {
    color: #fff;
}
.cover-wrapper {
    display: table;
    width: 100%;
    height: 100%;
    min-height: 100%;
}


.cover-wrapper__inner {
  display: table-cell;
  vertical-align: middle;
}
.cover-wrapper__container {
    margin-right: auto;
    margin-left: auto;
}
section#nav {
  height: 50px;
}
#home {
    .slide-wrapper {
      background-color: #623ebd;
    }
  
}
#home-content {
  z-index: 5;
}
#box1 {
  display: block;
  width: 20px;
  height: 20px;
  background-color: red;
}
#portfolio {
    width: 100%;
    height: 100%;
    position: absolute;
    z-index: 1;
    bottom: -100%;
    background: black;
}
#aboutme {
  background: #E9E9E9;
}
.preload {
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  z-index: 1032;
  background-color: #7752d5;
}

.circle {
  border-radius: 190px;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.4);
  position: absolute;
  top: 50%;
  left: 50%;
  opacity: 0;
}

.circle1 {
  background-color: #7752d5;
  width: 240px;
  height: 240px;
  margin-top: -120px;
  margin-left: -120px;
}

.circle2 {
  background-color: #8362d9;
  width: 170px;
  height: 170px;
  margin-top: -85px;
  margin-left: -85px;
}

.circle3 {
  background-color: #9f88d6;
  width: 100px;
  height: 100px;
  margin-top: -50px;
  margin-left: -50px;
}
.spammer-container {
  display: none;
  position: fixed;
  top: 0;
  bottom: 0;
  left: 0;
  right:0;
  background-color: green;
  
  .spammer__content {
    position: inherit;
    width:100%;
    height:100%;
    display: block;
    animation: spamcolor 0.1s infinite;
    -webkit-animation: spamcolor 0.1s infinite;
  }
  
}

.smallcircles {   
  position: absolute;
  z-index: -2;
  width: 100%;
  height: 100%;
  animation: infinite-rotation 150s infinite;
  
}
.small-circle {
  position: inherit;
  display:block;
  width: 250px;
  height: 250px;
  background: #3b1b8b;
  margin-top: -125px;
  margin-left: -125px;
  border-radius: 125px;
  -webkit-animation: smallcircle 0.8s ease-in-out alternate;
  -moz-animation: smallcircle 0.8s ease-in-out alternate;
  animation: smallcircle 0.8s ease-in-out alternate;
}

.small-circle:nth-child(1) {  
  top: 12%;
  left: 24%;
}
.small-circle:nth-child(2) {
  display:block;
  top: 18%;
  left: 44%;
}
.small-circle:nth-child(3) {
  display:block;
  top: 78%;
  left: 5%;
}
.small-circle:nth-child(4) {
  display:block;
  top: 78%;
  left: 56%;
}
.small-circle:nth-child(4) {
  display:block;
  top: 78%;
  left: 56%;
}
.small-circle:nth-child(5) {
  display:block;
  top: 38%;
  left: 86%;
}
.small-circle:nth-child(6) {
  display:block;
  top: 86%;
  left: 96%;
}

.big-circles {   
  position: absolute;
  width: 100%;
  height: 100%;
  animation: infinite-rotation 125s infinite;
  
}
.big-circle {
  position: inherit;
  display:block;
  width: 500px;
  height: 500px;
  background: #1f0a55;
  margin-top: -250px;
  margin-left: -250px;
  border-radius: 250px;
  -webkit-animation: bigcircle 1.6s ease-in-out alternate;
  -moz-animation: bigcircle 1.6s ease-in-out alternatee;
  animation: bigcircle 1.6s ease-in-out alternate;
}

.big-circle:nth-child(1) {
    top: 12%;
    left: 4%;
}
.big-circle:nth-child(2) {
    display: block;
    top: 98%;
    left: 84%;
}
.big-circle:nth-child(3) {
  display:block;
  top: 78%;
  left: 0%;
}
.big-circle:nth-child(4) {
  display:block;
  top: 78%;
  left: 56%;
}
.big-circle:nth-child(4) {
  display:block;
  top: 78%;
  left: 56%;
}
.big-circle:nth-child(5) {
  display:block;
  top: 38%;
  left: 86%;
}
.big-circle:nth-child(6) {
  display:block;
  top: 86%;
  left: 96%;
}
// animations

@keyframes spamcolor {
  0%   {background: red;}
  50%  {background: yellow;}
  100% {background: red;}
}

@-webkit-keyframes spamcolor {
  0%   {background: red;}
  50%  {background: yellow;}
  100% {background: red;}
}

@keyframes smallcircle {
  0% {
    -webkit-transform: scale(0);
    -moz-transform: scale(0);
    transform: scale(0);
  }
  
  100% {
    -webkit-transform: scale(1);
    -moz-transform: scale(1);
    transform: scale(1);
  }
}

@keyframes bigcircle {
  0% {
    -webkit-transform: scale(0);
    -moz-transform: scale(0);
    transform: scale(0);
  }
  50% {
    -webkit-transform: scale(0);
    -moz-transform: scale(0);
    transform: scale(0);
  }
  100% {
    -webkit-transform: scale(1);
    -moz-transform: scale(1);
    transform: scale(1);
  }
}

@keyframes infinite-rotation {
  from {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  to {
    -webkit-transform: rotate(360deg);
    -moz-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}
View Compiled
/**
 * ITEManimate object is used to animate ease with bezier functions
 * example: TweenMax.to($('selector'), 1.5, {left:"80%", ease: ITEManimate.bezier(0.04,0.86,0.8,1)});
 *
 * Used: https://github.com/rdallasgray/bez
   Forked from: https://codepen.io/karlovidek/pen/qOxYjp
 */
var ITEManimate = ({
    start: 0,
    bezier: function(p0, p1, p2, p3) {
        return ITEManimate.polyBez([p0, p1], [p2, p3]);

    },
    polyBez: function(p1, p2) {
        var A = [null, null],
            B = [null, null],
            C = [null, null],
            bezCoOrd = function(t, ax) {
                C[ax] = 3 * p1[ax], B[ax] = 3 * (p2[ax] - p1[ax]) - C[ax], A[ax] = 1 - C[ax] - B[ax];
                return t * (C[ax] + t * (B[ax] + t * A[ax]));
            },
            xDeriv = function(t) {
                return C[0] + t * (2 * B[0] + 3 * A[0] * t);
            },
            xForT = function(t) {
                var x = t,
                    i = 0,
                    z;
                while (++i < 14) {
                    z = bezCoOrd(x, 0) - t;
                    if (Math.abs(z) < 1e-3) break;
                    x -= z / xDeriv(x);
                }
                return x;
            };
        return function(t) {
            return bezCoOrd(xForT(t), 1);
        }
    }
});


//CUSTOM JS CODE
(function($) {
    'use strict';

    //VIEWPORT
    var w = $(window);

    //ANIMATION
    var animationTrigger = $('.trigger');
    var sceneContainer = $('.slide-wrapper');
    var smallCircles = $('.small-circle');
    var portfolioContainer = $('.portfolio-wrapper');

    var main = {

        init: function() {
            var self = this;
            //GSAP ANIMATE
            main.animate();
        },

        //GSAP ANIMATION
        animate: function() {

            //OPEN
            function openAnimation() {
                TweenMax.to(sceneContainer, 0.8, {
                    height: "100%",
                    ease: ITEManimate.bezier(0.930, 0.035, 0.350, 0.815),
                    top: "0%",
                    ease: ITEManimate.bezier(0.930, 0.035, 0.350, 0.815),
                    width: "100%",
                    ease: ITEManimate.bezier(0.930, 0.035, 0.350, 0.815),
                    left: "0%",
                    ease: ITEManimate.bezier(0.930, 0.035, 0.350, 0.815),

                    onComplete: function() {
                      console.log(sceneContainer);
                        TweenMax.to(portfolioContainer, 1.8, {
                            width: "100%",
                            ease: ITEManimate.bezier(0.930, 0.035, 0.350, 0.815),
                            top: "30%",
                            ease: ITEManimate.bezier(0.930, 0.035, 0.350, 0.815)
                        })
                        TweenMax.to(sceneContainer, 0.8, {
                            top: "-70%",
                            ease: ITEManimate.bezier(0.930, 0.035, 0.350, 0.815),
                        })
                    }
                });

                TweenMax.to(smallCircles, 0.4, {
                    scale: "0",
                    ease: ITEManimate.bezier(0.930, 0.035, 0.350, 0.815),

                });

            }

            //CLOSE
            function closeAnimation() {
                TweenMax.to(portfolioContainer, 1.2, {
                    top: "100%",
                    ease: ITEManimate.bezier(0.815, 0.035, 0.350, 0.930),
                    width: "100%",
                    ease: ITEManimate.bezier(0.815, 0.035, 0.350, 0.930),

                    onComplete: function() {
                        TweenMax.to(sceneContainer, 0.8, {
                            height: "90%",
                            ease: ITEManimate.bezier(0.815, 0.035, 0.350, 0.930),
                            top: "5%",
                            ease: ITEManimate.bezier(0.815, 0.035, 0.350, 0.930),
                            width: "90%",
                            ease: ITEManimate.bezier(0.815, 0.035, 0.350, 0.930),
                            left: "5%",
                            ease: ITEManimate.bezier(0.815, 0.035, 0.350, 0.930),
                            onComplete: function() {
                                TweenMax.to(smallCircles, 0.4, {
                                    scale: "1",
                                    ease: ITEManimate.bezier(0.815, 0.035, 0.350, 0.930),

                                });

                            }

                        });
                    }

                })

            }

            animationTrigger.click(function() {
                if ($(this).attr('data-toggle') == 'closed') {
                    $(this).attr('data-toggle', 'opened');
                    openAnimation();
                } else if ($(this).attr('data-toggle', 'opened')) {
                    $(this).attr('data-toggle', 'closed');
                    closeAnimation();
                }
            });
        }
    };

    $(window).resize(function() {});
    return main.init();
}($));

External CSS

  1. https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js
  2. https://cdnjs.cloudflare.com/ajax/libs/gsap/1.19.0/TweenMax.min.js