You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

277 lines
6.0 KiB
SCSS

/* Resets */
// @import url('https://fonts.googleapis.com/css?family=Lato:300,400,700,900&display=swap');
// font-family: 'Lato', sans-serif;
$global-background: rgb(250, 250, 250);
@font-face {
font-family: "Lato";
font-style: normal;
font-display: swap;
font-weight: 300;
src: local("Lato Light"), local("Lato-Light"),
url("../fonts/Lato-Light.ttf") format("truetype");
}
@font-face {
font-family: "Lato";
font-style: normal;
font-display: swap;
font-weight: 400;
src: local("Lato Regular"), local("Lato-Regular"),
url("../fonts/Lato-Regular.ttf") format("truetype");
}
@font-face {
font-family: "Lato";
font-style: normal;
font-display: swap;
font-weight: 700;
src: local("Lato Bold"), local("Lato-Bold"),
url("../fonts/Lato-Bold.ttf") format("truetype");
}
*,
*::before,
*::after {
margin: 0;
padding: 0;
box-sizing: inherit;
}
html {
// Set's the rem to 10px in most browsers (16px)
font-size: 62.5%;
}
body {
font-family: Arial, Helvetica, sans-serif;
font-size: 1.6rem;
color: #777;
padding: 3rem;
line-height: 1.7;
box-sizing: border-box;
}
.content-wrapper {
background: $global-background;
}
.header {
position: relative;
height: 95vh;
background-image: linear-gradient(
rgba(56, 218, 116, 0.7),
rgba(38, 189, 93, 0.7)
),
url("../img/train.jpg");
background-position: center;
clip-path: polygon(0 0, 100% 0, 100% 85vh, 0 100%);
}
.header-logo {
position: absolute;
top: 4rem;
left: 4rem;
}
.logo {
height: 3.5rem;
}
.hero-text-box {
position: absolute;
top: 40%;
left: 50%;
// Here we are translating this element so that it's dirct center
// is in the absolution position described above. No margin auto!
transform: translate(-50%, -50%);
text-align: center;
}
.hero-primary {
text-transform: uppercase;
color: #ffffff;
//used to prevent gitter in the animation
backface-visibility: hidden;
margin-bottom: 6rem;
}
.hero-title-main {
display: block;
top: 25%;
font-weight: 400;
font-size: 6rem;
letter-spacing: 3.5rem;
animation: moveInLeft 0.8s ease-out;
}
.hero-title-sub {
display: block;
position: relative;
top: 25%;
font-weight: 700;
font-size: 2rem;
letter-spacing: 1.75rem;
animation: moveInRight 0.8s ease-out;
}
.dark-hero-title {
color: #777;
}
.pitch {
height: 150vh;
}
.banana-slug-back {
position: absolute;
top: -200px;
left: 4rem;
height: 40rem;
width: 40rem;
background-image: linear-gradient($global-background, $global-background);
border-radius: 100%;
}
.banana-slug {
// position: absolute;
// top: -200px;
// left: 40px;
height: 40rem;
width: 40rem;
border-radius: 100%;
border: 0.3rem solid $global-background;
animation: moveInBottom 1s ease-out;
animation-fill-mode: backwards;
}
.cards {
position: relative;
height: 90vh;
background-image: url("../img/bg-cube-pattern.png"),
linear-gradient(rgba(45, 114, 243, 0.8), rgba(45, 114, 243, 0.8));
}
@keyframes moveInLeft {
0% {
opacity: 0;
transform: translate(-5rem);
}
80% {
transform: translate(1rem);
}
100% {
opacity: 1;
transform: translate(0);
}
}
@keyframes moveInRight {
0% {
opacity: 0;
transform: translate(5rem);
}
80% {
transform: translate(-1rem);
}
100% {
opacity: 1;
transform: translate(0);
}
}
@keyframes moveInBottom {
0% {
opacity: 0;
transform: translate(0, 5rem);
}
100% {
opacity: 1;
transform: translate(0);
}
}
// the :link and :visited which are psuedo classes
.btn:link,
.btn:visited {
text-transform: uppercase;
text-decoration: none;
padding: 1.5rem 4rem;
// Anchor tags are inline elements so we need to change the display property to have it behave line a block.
// Since it is an inline element it is treated as if it was text. So to place it in the center of the box,
// all we have to do is set the parent container's text-align: center; This does not change the h1 content,
// Since it's elements are display: block;
display: inline-block;
border-radius: 10rem;
//The transition properties has to be on the initial state, and the transform operations in the other psuedo
// Selectors will follow this transition declaration.
transition: all 0.2s;
position: relative;
}
.btn-white {
background-color: #ffffff;
color: #777;
}
.btn:hover {
transform: translateY(-3px);
// x-offset, y-offset, blur, color
box-shadow: 0 1rem 2rem rgba(0, 0, 0, 0.2);
}
//When we click an element it is called the "active state".
// This is how the material library does snazzy animations when you click a button.
.btn:active {
// This translation is in relation to the initial state, not the hover state.
transform: translateY(-1px);
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.2);
}
//This psudeo selector is like a virtual element after the element it is selecting.
// In this case we are adding an element that will look exactly like the element we
//have, but we are putting it behind the element. When we hover out this psuedo
//elment hides back behind the button.
.btn::after {
//Always need a content and display property for after elements.
content: "";
display: inline-block;
// This works because the ::after psudeo element is treated like a child of the
// item it is selecting. So 100% the width of the button.
height: 100%;
width: 100%;
border-radius: 10rem;
// To place it behind the button we can use absolute positioning
position: absolute;
top: 0;
left: 0;
// Places this element behind the button.
z-index: -1;
//tranition here because it is the initial state for the .btn:hover::after selector
transition: all 0.4s;
}
.btn-white::after {
background-color: #ffffff;
}
//When we hover the button we want some certain styles for the ::after element.
.btn:hover::after {
transform: scaleX(1.4) scaleY(1.6);
//fading out
opacity: 0;
}
.btn-animated {
animation: moveInBottom 0.8s ease-out;
// This property automatically applies the animate styles before the animation starts.
animation-fill-mode: backwards;
}