mirror of
https://github.com/NASAWorldWind/WebWorldWind.git
synced 2026-01-25 15:23:04 +00:00
372 lines
5.5 KiB
SCSS
Executable File
372 lines
5.5 KiB
SCSS
Executable File
// vars
|
|
$color: red; // icon color
|
|
$blue: #158fef; // background color
|
|
$animation: 0.6s; // animation speed
|
|
$scale: 1; // icon scale 68/68 default
|
|
|
|
*, *:before, *:after {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
// spacing + background-color
|
|
|
|
|
|
|
|
|
|
.hamburglar {
|
|
transform: scale($scale);
|
|
margin: 40px auto;
|
|
display: block;
|
|
width: 68px;
|
|
height: 68px;
|
|
right: 0px;
|
|
|
|
-webkit-touch-callout: none;
|
|
user-select: none;
|
|
}
|
|
|
|
// transition mask
|
|
.path-burger {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
height: 68px;
|
|
width: 68px;
|
|
// two masks because... browser support.
|
|
mask: url(#mask);
|
|
-webkit-mask-box-image: url(https://raygun.io/upload/mask.svg);
|
|
}
|
|
|
|
.animate-path {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
width: 68px;
|
|
height: 68px;
|
|
}
|
|
|
|
// what this does is create a small square that I then rotate behind an svg mask, giving the apparence of the line animating
|
|
.path-rotation {
|
|
height: 34px;
|
|
width: 34px;
|
|
margin: 34px 34px 0 0;
|
|
transform: rotate(0deg);
|
|
transform-origin: 100% 0;
|
|
&:before {
|
|
content: '';
|
|
display: block;
|
|
width: 30px;
|
|
height: 34px;
|
|
margin: 0 4px 0 0;
|
|
background: $color;
|
|
}
|
|
}
|
|
|
|
// box rotation animation
|
|
@keyframes rotate-out {
|
|
0% {
|
|
transform: rotate(0deg);
|
|
}
|
|
40% {
|
|
transform: rotate(180deg);
|
|
}
|
|
100% {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
|
|
@keyframes rotate-in {
|
|
0% {
|
|
transform: rotate(360deg);
|
|
}
|
|
40% {
|
|
transform: rotate(180deg);
|
|
}
|
|
100% {
|
|
transform: rotate(0deg);
|
|
}
|
|
}
|
|
|
|
// offset moves
|
|
// dasharray is the dash size
|
|
// need to be able to control dash space size.
|
|
|
|
.hamburglar.is-open {
|
|
.path {
|
|
animation: dash-in $animation linear normal;
|
|
animation-fill-mode:forwards;
|
|
}
|
|
.animate-path {
|
|
animation: rotate-in $animation linear normal;
|
|
animation-fill-mode:forwards;
|
|
}
|
|
}
|
|
|
|
.hamburglar.is-closed {
|
|
.path {
|
|
animation: dash-out $animation linear normal;
|
|
animation-fill-mode:forwards;
|
|
}
|
|
.animate-path {
|
|
animation: rotate-out $animation linear normal;
|
|
animation-fill-mode:forwards;
|
|
}
|
|
}
|
|
|
|
.path {
|
|
stroke-dasharray: 240;
|
|
stroke-dashoffset: 240;
|
|
stroke-linejoin: round;
|
|
}
|
|
|
|
@keyframes dash-in {
|
|
0% {
|
|
stroke-dashoffset: 240;
|
|
}
|
|
40% {
|
|
stroke-dashoffset: 240;
|
|
}
|
|
100% {
|
|
stroke-dashoffset: 0;
|
|
}
|
|
}
|
|
@keyframes dash-out {
|
|
0% {
|
|
stroke-dashoffset: 0;
|
|
}
|
|
40% {
|
|
stroke-dashoffset: 240;
|
|
}
|
|
100% {
|
|
stroke-dashoffset: 240;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// All good burgers need filling!
|
|
|
|
.burger-icon {
|
|
position: absolute;
|
|
padding: 20px 16px;
|
|
height: 68px;
|
|
width: 68px;
|
|
}
|
|
|
|
.burger-container {
|
|
position: relative;
|
|
height: 28px;
|
|
width: 36px;
|
|
}
|
|
|
|
.burger-bun-top,
|
|
.burger-bun-bot,
|
|
.burger-filling {
|
|
position: absolute;
|
|
display: block;
|
|
height: 4px;
|
|
width: 36px;
|
|
border-radius: 2px;
|
|
background: $color;
|
|
}
|
|
|
|
.burger-bun-top {
|
|
top: 0;
|
|
transform-origin: 34px 2px;
|
|
}
|
|
|
|
.burger-bun-bot {
|
|
bottom: 0;
|
|
transform-origin: 34px 2px;
|
|
}
|
|
//.burger-filling {
|
|
// @include transition(all,($animation/2.5),ease-in-//out);
|
|
//}
|
|
// relative parent is the button
|
|
.burger-filling {
|
|
top: 12px;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// burger ring container
|
|
.burger-ring {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
width: 68px;
|
|
height: 68px;
|
|
}
|
|
|
|
.svg-ring {
|
|
width: 68px;
|
|
height: 68px;
|
|
}
|
|
|
|
|
|
// bun animations
|
|
.hamburglar.is-open {
|
|
.burger-bun-top {
|
|
animation: bun-top-out $animation linear normal;
|
|
animation-fill-mode:forwards;
|
|
}
|
|
.burger-bun-bot {
|
|
animation: bun-bot-out $animation linear normal;
|
|
animation-fill-mode:forwards;
|
|
}
|
|
}
|
|
.hamburglar.is-closed {
|
|
.burger-bun-top {
|
|
animation: bun-top-in $animation linear normal;
|
|
animation-fill-mode:forwards;
|
|
}
|
|
.burger-bun-bot {
|
|
animation: bun-bot-in $animation linear normal;
|
|
animation-fill-mode:forwards;
|
|
}
|
|
}
|
|
|
|
@keyframes bun-top-out {
|
|
0% {
|
|
left: 0;
|
|
top: 0;
|
|
transform: rotate(0deg);
|
|
}
|
|
20% {
|
|
left: 0;
|
|
top: 0;
|
|
transform: rotate(15deg);
|
|
}
|
|
80% {
|
|
left: -5px;
|
|
top: 0;
|
|
transform: rotate(-60deg);
|
|
}
|
|
100% {
|
|
left: -5px;
|
|
top: 1px;
|
|
transform: rotate(-45deg);
|
|
}
|
|
}
|
|
|
|
@keyframes bun-bot-out {
|
|
0% {
|
|
left: 0;
|
|
transform: rotate(0deg);
|
|
}
|
|
20% {
|
|
left: 0;
|
|
transform: rotate(-15deg);
|
|
}
|
|
80% {
|
|
left: -5px;
|
|
transform: rotate(60deg);
|
|
}
|
|
100% {
|
|
left: -5px;
|
|
transform: rotate(45deg);
|
|
}
|
|
}
|
|
|
|
|
|
@keyframes bun-top-in {
|
|
0% {
|
|
left: -5px;
|
|
bot: 0;
|
|
transform: rotate(-45deg);
|
|
}
|
|
20% {
|
|
left: -5px;
|
|
bot: 0;
|
|
transform: rotate(-60deg);
|
|
}
|
|
80% {
|
|
left: 0;
|
|
bot: 0;
|
|
transform: rotate(15deg);
|
|
}
|
|
100% {
|
|
left: 0;
|
|
bot: 1px;
|
|
transform: rotate(0deg);
|
|
}
|
|
}
|
|
|
|
@keyframes bun-bot-in {
|
|
0% {
|
|
left: -5px;
|
|
transform: rotate(45deg);
|
|
}
|
|
20% {
|
|
left: -5px;
|
|
bot: 0;
|
|
transform: rotate(60deg);
|
|
}
|
|
80% {
|
|
left: 0;
|
|
bot: 0;
|
|
transform: rotate(-15deg);
|
|
}
|
|
100% {
|
|
left: 0;
|
|
transform: rotate(0deg);
|
|
}
|
|
}
|
|
|
|
|
|
// burger filling
|
|
.hamburglar.is-open {
|
|
.burger-filling {
|
|
animation: burger-fill-out $animation linear normal;
|
|
animation-fill-mode:forwards;
|
|
}
|
|
}
|
|
|
|
.hamburglar.is-closed {
|
|
.burger-filling {
|
|
animation: burger-fill-in $animation linear normal;
|
|
animation-fill-mode:forwards;
|
|
}
|
|
}
|
|
|
|
@keyframes burger-fill-in {
|
|
0% {
|
|
width: 0;
|
|
left: 36px;
|
|
}
|
|
40% {
|
|
width: 0;
|
|
left: 40px;
|
|
}
|
|
80% {
|
|
width: 36px;
|
|
left: -6px;
|
|
}
|
|
100% {
|
|
width: 36px;
|
|
left: 0px;
|
|
}
|
|
}
|
|
|
|
@keyframes burger-fill-out {
|
|
0% {
|
|
width: 36px;
|
|
left: 0px;
|
|
}
|
|
20% {
|
|
width: 42px;
|
|
left: -6px;
|
|
}
|
|
|
|
40% {
|
|
width: 0;
|
|
left: 40px;
|
|
}
|
|
|
|
100% {
|
|
width: 0;
|
|
left: 36px;
|
|
}
|
|
} |