Gooey Menu animation is done purely with css.
The inspiration comes from Soheil's post on Material Up called "Material In a Liquid State".
A Pen by Matthew Sechrest on CodePen.
| <div class="container-fluid"> | |
| <div class="row"> | |
| <div class="col-xs-12"> | |
| <div class="ms-nav-container"> | |
| <ul class="ms-nav"> | |
| <input type="checkbox" id="ms-menu" class="ms-menu-toggle" name="ms-menu-toggle" /> | |
| <div class="bg-change"></div> | |
| <li class="ms-li ms-li3 ms-li-last"> | |
| <a href="javascript:void(0)"> | |
| <span class="fa fa-search"></span> | |
| </a> | |
| </li> | |
| <li class="ms-li ms-li2"> | |
| <a href="javascript:void(0)"> | |
| <span class="fa fa-flask"></span> | |
| </a> | |
| </li> | |
| <li class="ms-li ms-li1 ms-li-first"> | |
| <a href="javascript:void(0)"> | |
| <span class="fa fa-fort-awesome"></span> | |
| </a> | |
| </li> | |
| <li class="ms-main"> | |
| <a href="javascript:void(0)"> | |
| <label class="ms-menu-toggle-lbl" for="ms-menu"> | |
| <span class="fa fa-plus"></span> | |
| </label> | |
| </a> | |
| </li> | |
| </ul> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | 
| body{ | |
| width: 100%; | |
| height: 100%; | |
| margin: 0; | |
| padding: 0; | |
| position: relative; | |
| background: #29313e; | |
| } | |
| ul { | |
| margin: 0; | |
| padding: 0; | |
| list-style: none; | |
| } | |
| a { | |
| outline: none !important; | |
| } | |
| .ms-nav-container { | |
| position: relative; | |
| width: 100%; | |
| height: 100vh; | |
| } | |
| #ms-menu { | |
| display: none; | |
| } | |
| .bg-change { | |
| position: absolute; | |
| bottom: -75px; | |
| right: -90px; | |
| width: 1px; | |
| height: 1px; | |
| border-radius: 100% 0% 0% 0%; | |
| background: #2D394D; | |
| transition: all .25s ease; | |
| } | |
| .ms-nav .ms-menu-toggle:checked ~ .bg-change { | |
| width: 3000px; | |
| height: 3000px; | |
| transition: all .5s ease; | |
| } | |
| .ms-nav { | |
| position: absolute; | |
| bottom: 75px; | |
| right: 75px; | |
| } | |
| .ms-nav > .ms-main { | |
| position: relative; | |
| } | |
| .ms-nav > .ms-li { | |
| position: absolute; | |
| bottom: 0; | |
| right: 8px; | |
| transition: bottom .5s ease; | |
| z-index: 1; | |
| } | |
| .ms-nav .ms-menu-toggle:checked ~ .ms-li a { | |
| box-shadow: 0px 5px 10px #333333; | |
| } | |
| .ms-nav .ms-menu-toggle:checked ~ .ms-li1 { | |
| bottom: 150%; | |
| transition: bottom .5s ease; | |
| } | |
| .ms-nav .ms-menu-toggle:checked ~ .ms-li1 a span { | |
| opacity: 1; | |
| transition: opacity .5s ease .1s; | |
| } | |
| .ms-nav .ms-menu-toggle:checked ~ .ms-main:after { | |
| animation: big-border-bottom-animation .5s ease .1s; | |
| } | |
| .ms-nav .ms-menu-toggle:checked ~ .ms-li1:before { | |
| animation: border-top-animation .5s ease .2s; | |
| } | |
| .ms-nav .ms-menu-toggle:checked ~ .ms-li1:after { | |
| animation: border-bottom-animation .5s ease .2s; | |
| } | |
| .ms-nav .ms-menu-toggle:checked ~ .ms-li2 { | |
| bottom: 265%; | |
| transition: bottom .6s ease; | |
| } | |
| .ms-nav .ms-menu-toggle:checked ~ .ms-li2 a span { | |
| opacity: 1; | |
| transition: opacity .6s ease .2s; | |
| } | |
| .ms-nav .ms-menu-toggle:checked ~ .ms-li2:before { | |
| animation: border-top-animation .5s ease .2s; | |
| } | |
| .ms-nav .ms-menu-toggle:checked ~ .ms-li2:after { | |
| animation: border-bottom-animation .5s ease .3s; | |
| } | |
| .ms-nav .ms-menu-toggle:checked ~ .ms-li3 { | |
| bottom: 380%; | |
| transition: bottom .7s ease; | |
| } | |
| .ms-nav .ms-menu-toggle:checked ~ .ms-li3 a span { | |
| opacity: 1; | |
| transition: opacity .7s ease .3s; | |
| } | |
| .ms-nav .ms-menu-toggle:checked ~ .ms-li3:before { | |
| animation: border-top-animation .5s ease .3s; | |
| } | |
| .ms-nav .ms-menu-toggle:checked ~ .ms-li3:after { | |
| animation: border-bottom-animation .5s ease .4s; | |
| } | |
| .ms-nav .ms-menu-toggle:checked ~ .ms-li4 { | |
| bottom: 495%; | |
| transition: bottom .8s ease; | |
| } | |
| .ms-nav .ms-menu-toggle:checked ~ .ms-li4 a span { | |
| opacity: 1; | |
| transition: opacity .8s ease .4s; | |
| } | |
| .ms-nav .ms-menu-toggle:checked ~ .ms-li4:before { | |
| animation: border-top-animation .5s ease .4s; | |
| } | |
| .ms-nav .ms-menu-toggle ~ .ms-li:before { | |
| content: ''; | |
| width: 45px; | |
| display: block; | |
| position: absolute; | |
| bottom: -5px; | |
| left: 0; | |
| right: 0; | |
| margin: auto; | |
| border-left: 20px solid transparent; | |
| border-right: 20px solid transparent; | |
| border-top: 0px solid #337ab7; | |
| } | |
| .ms-nav .ms-menu-toggle ~ .ms-li:before { | |
| content: ''; | |
| width: 45px; | |
| display: block; | |
| position: absolute; | |
| bottom: -5px; | |
| left: 0; | |
| right: 0; | |
| margin: auto; | |
| border-left: 20px solid transparent; | |
| border-right: 20px solid transparent; | |
| border-top: 0px solid #337ab7; | |
| } | |
| .ms-nav .ms-menu-toggle:checked ~ .ms-li:before { | |
| content: ''; | |
| width: 45px; | |
| display: block; | |
| position: absolute; | |
| bottom: 0px; | |
| left: 0; | |
| right: 0; | |
| margin: auto; | |
| border-left: 24px solid transparent; | |
| border-right: 24px solid transparent; | |
| border-top: 25px solid #337ab7; | |
| z-index: 11; | |
| } | |
| .ms-nav .ms-menu-toggle:checked ~ .ms-li:after { | |
| content: ''; | |
| width: 45px; | |
| display: block; | |
| position: absolute; | |
| top: 0px; | |
| left: 0; | |
| right: 0; | |
| margin: auto; | |
| border-left: 24px solid transparent; | |
| border-right: 24px solid transparent; | |
| border-bottom: 25px solid #337ab7; | |
| transition: border-bottom .3s ease; | |
| z-index: 11; | |
| } | |
| .ms-nav .ms-menu-toggle:checked ~ .ms-main:after { | |
| content: ''; | |
| width: 60px; | |
| display: block; | |
| position: absolute; | |
| top: 0px; | |
| left: 0; | |
| right: 0; | |
| margin: auto; | |
| border-left: 24px solid transparent; | |
| border-right: 24px solid transparent; | |
| border-bottom: 45px solid #337ab7; | |
| transition: border-bottom .3s ease; | |
| z-index: 11; | |
| } | |
| .ms-nav .ms-menu-toggle:checked ~ .ms-li-last:after { | |
| content: ''; | |
| width: 45px; | |
| display: block; | |
| position: absolute; | |
| top: -5px; | |
| left: 0; | |
| right: 0; | |
| margin: auto; | |
| border-left: 0px solid transparent; | |
| border-right: 0px solid transparent; | |
| border-bottom: 0px solid #337ab7; | |
| } | |
| .ms-nav .ms-menu-toggle:checked ~ .ms-main span { | |
| transform: rotate(-45deg); | |
| transition: transform .35s ease; | |
| } | |
| .ms-nav .ms-menu-toggle ~ .ms-main span { | |
| transition: transform .35s ease; | |
| opacity: 1; | |
| } | |
| .ms-nav > .ms-main > a { | |
| box-shadow: 0px 5px 10px #333333; | |
| } | |
| .ms-nav > li a { | |
| font-size: 30px; | |
| color: #FFFFFF; | |
| background: #337ab7; | |
| width: 60px; | |
| height: 60px; | |
| display: block; | |
| border-radius: 100%; | |
| position: relative; | |
| text-align: center; | |
| } | |
| .ms-nav > .ms-main a, | |
| .ms-nav > .ms-main > a > label { | |
| font-size: 30px; | |
| color: #FFFFFF; | |
| background: #337ab7; | |
| width: 75px; | |
| height: 75px; | |
| display: block; | |
| border-radius: 100%; | |
| position: relative; | |
| text-align: center; | |
| z-index: 19; | |
| } | |
| .ms-nav > li > a span { | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| margin: auto; | |
| height: 30px; | |
| width: 30px; | |
| opacity: 0; | |
| z-index: 12; | |
| } | |
| @keyframes border-top-animation { | |
| 0% { | |
| bottom: 0px; | |
| } | |
| 50% { | |
| bottom: -14px; | |
| } | |
| 100% { | |
| bottom: 0px; | |
| } | |
| } | |
| @keyframes border-bottom-animation { | |
| 0% { | |
| top: 0px; | |
| } | |
| 50% { | |
| top: -13px; | |
| } | |
| 100% { | |
| top: 0px; | |
| } | |
| } | |
| @keyframes big-border-bottom-animation { | |
| 0% { | |
| top: 0px; | |
| } | |
| 50% { | |
| top: -30px; | |
| } | |
| 100% { | |
| top: 0px; | |
| } | |
| } |