<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link
href="https://fonts.googleapis.com/css?family=Lato:100,300,400,700,900"
rel="stylesheet"
/>
<link rel="stylesheet" href="css/icon-font.css" />
<link rel="stylesheet" href="css/icon-font.css" />
<link rel="stylesheet" href="css/style.css" />
<link rel="shortcut icon" type="image/png" href="img/favicon.png" />
<title>Natours | Exciting tours for adventurous people</title>
</head>
<body>
<div class="navigation">
<input type="checkbox" class="navigation__checkbox" id="navi-toggle" />
<label for="navi-toggle" class="navigation__button"><span class="navigation__icon"> </span></label>
<div class="navigation__background"> </div>
<nav class="navigation__nav">
<ul class="navigation__list">
<li class="navigation__item">
<a href="#about" class="navigation__link link1">About League</a>
</li>
<li class="navigation__item">
<a href="#features" class="navigation__link link2">Game Modes</a>
</li>
<li class="navigation__item">
<a href="#tours" class="navigation__link link3">Popular Skins</a>
</li>
<li class="navigation__item">
<a href="#story" class="navigation__link link4">Best Players</a>
</li>
<li class="navigation__item">
<a href="#book" class="navigation__link link5">Play now</a>
</li>
</ul>
</nav>
</div>
<header class="header">
<div class="header__logo-box">
<img src="http://bryantineoportafolio.com/images/bryanmax9_icon.png" alt="logo" class="header__logo" />
</div>
<div class="header__text-box">
<h1 class="heading-primary">
<span class="heading-primary--main">Active Worm</span>
<span class="heading-primary--sub">League of Legends</span>
</h1>
<a href="#modes" class="btn btn--white btn--animated">Discover Game Modes</a>
</div>
</header>
<main>
<section class="section-about" id="about">
<div class="u-center-text">
<h2 class="heading-secondary u-margin-bottom-big" id="about-sec">
League of Legends
</h2>
</div>
<div class="row">
<div class="col-1-of-2">
<h3 class="heading-tertiary u-margin-bottom-small">
About
</h3>
<p class="paragraph">
LOL is one of the world's most popular video games, developed by Riot Games. It features a team-based competitive game mode based on strategy and outplaying opponents. Players work with their team to break the enemy Nexus before the enemy team breaks theirs.
</p>
<h3 class="heading-tertiary u-margin-bottom-small">
The Most OP Champions in League of Legends
</h3>
<p class="paragraph">
The Top 4 most Brocken Champs starts with Vladimir. Vadimir has an unfair advantage on early game that with 3 items can wipe out an entire enemy team. The second one is Teemo, he's the most hated champ due to its powerful blinding and poisoning attacks making this champ a strong opponent. Third is Sejuani, her last buff made her passive even stronger aginst top laners and junglers. the Last is Jhin, his item gale force even after its nerf he still has a winrate of 51%.
</p>
<a href="#" class="btn-text">Learn more →</a>
</div>
<div class="col-1-of-2">
<div class="composition">
<img
src="https://i.pinimg.com/236x/ff/a9/9c/ffa99cc4db4e19724b65b92c9613ce93.jpg"
alt="Vladimir"
class="composition__photo composition__photo--p1"
/><img
src="https://64.media.tumblr.com/494df3e6713463b16f6c5b8ba5fda2a0/2a76603d4b6c43e9-ca/s540x810/ac8637598a7b6a6e9d95ef728e193306b086b828.jpg"
alt="Teemo"
class="composition__photo composition__photo--p2"
/><img
src="https://i.pinimg.com/474x/11/2c/72/112c724ff2b017e838577ee63ab9d0d1.jpg"
alt="Jhin"
class="composition__photo composition__photo--p3"
/>
</div>
</div>
</div>
</section>
<section class="section-features" id="features">
<div class="row">
<div class="col-1-of-4">
<div class="feature-box">
<img src="https://notagamer.net/wp-content/uploads/2019/10/image-6.png" class="feature-box__icon icon-basic-world imagen"></img>
<h3 class="heading-tertiary u-margin-bottom-small">
PvP
</h3>
<p class="feature-box__text">
Fight between two color teams.
</p>
</div>
</div>
<div class="col-1-of-4">
<div class="feature-box">
<img src="https://images.contentstack.io/v3/assets/blt731acb42bb3d1659/blt7ae72d6209b979a7/5e6189bc18d3347ceffbbd7b/TFT.S3_GALAXIES.ARTICLE-2.jpg" class="feature-box__icon icon-basic-world imagen"></img>
<h3 class="heading-tertiary u-margin-bottom-small">
TFT
</h3>
<p class="feature-box__text">
Strategic card game.
</p>
</div>
</div>
<div class="col-1-of-4">
<div class="feature-box">
<img src="https://i.pinimg.com/originals/3c/86/9e/3c869ea6ea1e975022fd43780b567e79.jpg" class="feature-box__icon icon-basic-world imagen"></img>
<h3 class="heading-tertiary u-margin-bottom-small">
ARAM
</h3>
<p class="feature-box__text">
Fight in one lane in teams of 5.
</p>
</div>
</div>
<div class="col-1-of-4">
<div class="feature-box">
<img src="https://www.lolfinity.com/wp-content/uploads/2020/06/URF-Figurine-1024x576.jpg" class="feature-box__icon icon-basic-world imagen"></img>
<h3 class="heading-tertiary u-margin-bottom-small">
URF
</h3>
<p class="feature-box__text">
Fight using random champs
</p>
</div>
</div>
</div>
</section>
<section class="section-tours" id="tours">
<div class="u-center-text">
<h2 class="heading-secondary u-margin-bottom-big">
Most Popular Skins
</h2>
</div>
<div class="row">
<div class="col-1-of-3">
<div class="card">
<div class="card__side card__side--front">
<div class="card__picture card__picture--1"> </div>
<h4 class="card__heading">
<span class="card__heading-span card__heading-span--1"
>Truth Dragon Yasuo</span
>
</h4>
<div class="card__details">
<ul>
<li>Passive: Way of the Wanderer</li>
<li>Q: Steel Tempest</li>
<li>W: Wind Wall</li>
<li>E: Sweeping Blade</li>
<li>R: Last Breath</li>
</ul>
</div>
</div>
<div class="card__side card__side--back card__side--back-1">
<div class="card__cta">
<div class="card__price-box">
<p class="card__price-only">RP Needed</p>
<p class="card__price-value">1350RP</p>
</div>
<a href="#popup1" class="btn btn--white">More Information</a>
</div>
</div>
</div>
</div>
<div class="col-1-of-3">
<div class="card">
<div class="card__side card__side--front">
<div class="card__picture card__picture--2"> </div>
<h4 class="card__heading">
<span class="card__heading-span card__heading-span--2"
>Project Mordekaiser</span
>
</h4>
<div class="card__details">
<ul>
<li>Passive: Darkness Rise</li>
<li>Q: Obliterate</li>
<li>W: Indestructible</li>
<li>E: Death's Grasp</li>
<li>R: Realm of Death</li>
</ul>
</div>
</div>
<div class="card__side card__side--back card__side--back-2">
<div class="card__cta">
<div class="card__price-box">
<p class="card__price-only">RP Needed</p>
<p class="card__price-value">1820RP</p>
</div>
<a href="#popup2" class="btn btn--white">More Information</a>
</div>
</div>
</div>
</div>
<div class="col-1-of-3">
<div class="card">
<div class="card__side card__side--front">
<div class="card__picture card__picture--3"> </div>
<h4 class="card__heading">
<span class="card__heading-span card__heading-span--3"
>Dawnbringer Yone</span
>
</h4>
<div class="card__details">
<ul>
<li>Passive: Way of the Hunter</li>
<li>Q: Mortal Steel</li>
<li>W: Spirit Cleave</li>
<li>E: Soul Unbound</li>
<li>R: Fate Sealed</li>
</ul>
</div>
</div>
<div class="card__side card__side--back card__side--back-3">
<div class="card__cta">
<div class="card__price-box">
<p class="card__price-only">RP Needed</p>
<p class="card__price-value">1850RP</p>
</div>
<a href="#popup3" class="btn btn--white">More Information</a>
</div>
</div>
</div>
</div>
</div>
<div class="u-center-text u-margin-top-huge">
<a href="#sign" class="btn btn--green">Sign up into the fan page</a>
</div>
</section>
<section class="section-stories" id="story">
<div class="bg-video">
<video class="bg-video__content" autoplay muted loop>
<source src="https://drive.google.com/uc?export=download&id=1JexFzy8H55mcvdWNhPDlrtWfgc04i2RK" type="video/mp4" />
<source src="https://drive.google.com/uc?export=download&id=1yFjxgcshWuZyJhQ8ks0ZBjKrYFqELEY4" type="video/webm" />
Your browser is not supported for this videos!sorry😥
</video>
</div>
<div class="u-center-text">
<h2 class="heading-secondary u-margin-bottom-big">
Best League Players
</h2>
</div>
<div class="row">
<div class="story">
<figure class="story__shape">
<img
src="https://i0.wp.com/thegamehaus.com/wp-content/uploads/2022/02/o1577794128090561.jpeg?fit=710%2C417&ssl=1"
alt="Faker League Player"
class="story__img"
/>
<figcaption class="story__caption">Faker</figcaption>
</figure>
<div class="story__text">
<h3 class="heading-tertiary u-margin-bottom-small">
Top 1: Faker
</h3>
<p>
He is widely considered to be the best League of Legends player of all time. Lee is renowned for his high mechanical skill and extremely versatile champion pool. He is best known for playing LeBlanc, Zed, Syndra, Azir, Ahri, and Ryze.
</p>
</div>
</div>
</div>
<div class="row">
<div class="story">
<figure class="story__shape">
<img
src="https://www.theloadout.com/wp-content/uploads/2020/12/edg-clearlove-lol.jpg"
alt="Clearlove"
class="story__img"
/>
<figcaption class="story__caption">Clearlove</figcaption>
</figure>
<div class="story__text">
<h3 class="heading-tertiary u-margin-bottom-small">
Top 3: Clearlove
</h3>
<p>
Ming Kai, better known by his in-game name ClearLove, is a Chinese professional League of Legends player and coach for LPL team Edward Gaming. He is one of China's most well-known League of Legends players and is a veteran of the region. He was ranked third by ESPN in their 2016 top ten list for League of Legends pros.
</p>
</div>
</div>
</div>
<div class="u-center-text u-margin-top-huge">
<a href="#" class="btn-text">Read More →</a>
</div>
</section>
<section class="section-book" id="book">
<div class="row">
<div class="book" >
<div class="book__form">
<form action="#" class="form">
<div class="u-margin-bottom-medium">
<h2 class="heading-secondary">SUMMONER INFORMATION HERE</h2>
</div>
<div class="form__group">
<input
type="text"
class="form__input"
placeholder="Summoner ID"
id="summoner"
required
/>
<label for="summoner" class="form__label">Summoner ID</label>
</div>
<div class="form__group">
<input
type="password"
class="form__input"
placeholder="Password"
id="password"
name="size"
required
/>
<label for="password" class="form__label">Password</label>
</div>
<div class="form__group u-margin-bottom-medium">
<div class="form__radio-group">
<input
type="radio"
class="form__radio-input"
id="newbie"
name="size"
required
/>
<label for="newbie" class="form__radio-label">
<span class="form__radio-button"></span>
Newbie Summoner
</label>
</div>
<div class="form__radio-group">
<input
type="radio"
class="form__radio-input"
id="expert"
name="size"
required
/>
<label for="expert" class="form__radio-label">
<span class="form__radio-button"></span>
Expert Summoner
</label>
</div>
</div>
<div class="form__group">
<button class="btn btn--green">Sign Up →</button>
</div>
</form>
</div>
</div>
</div>
</section>
</main>
<footer class="footer">
<div class="footer__logo-box">
<img src="http://bryantineoportafolio.com/images/bryanmax9_icon.png" alt="Full logo" class="footer__logo" />
</div>
<div class="row">
<div class="col-1-of-2">
<div class="footer__navigation">
<ul class="footer__list">
<li class="footer__item">
<a href="#" class="footer__link">Company</a>
</li>
<li class="footer__item">
<a href="#" class="footer__link">Contact</a>
</li>
<li class="footer__item">
<a href="#" class="footer__link">Carrers</a>
</li>
<li class="footer__item">
<a href="#" class="footer__link">Privacy policy</a>
</li>
<li class="footer__item">
<a href="#" class="footer__link">Terms</a>
</li>
</ul>
</div>
</div>
<div class="col-1-of-2">
<p class="footer__copyright">
Built by <a href="https://bryantineo.hashnode.dev/" class="footer__link">Bryan Tineo</a> for
inspiration on making websites. Copyright © by Bryan Tineo. A
credit to the Designer, Jonas Schmedtman, is of course highly
appreciated!
</p>
</div>
</div>
</footer>
<div class="popup" id="popup2">
<div class="popup__content">
<div class="popup__left">
<img src="https://i.ytimg.com/vi/qoeM6kVsopU/maxresdefault.jpg" alt="Mordekaizer Review" class="popup__img" />
<img src="https://1.bp.blogspot.com/-C6oMJr5xQDU/YJvh4VGOzJI/AAAAAAAB5zQ/Aaf3P-wTEjgm_BCgiwgY4M6F_b8DlIjywCLcBGAsYHQ/w640-h246/lyp2QTl.png" alt="Mordekaizer" class="popup__img" />
</div>
<div class="popup__right">
<a href="#section-tours" class="popup__close">×</a>
<h2 class="heading-secondary u-margin-bottom-small">Mordekaiser Skin Review</h2>
<h3 class="heading-tertiary u-margin-bottom-small">
Important – This is an Opinion not a valid source
</h3>
<p class="popup__text">
For the in-game model it looks very impressive, the design is really good. The mechanical details are convincing and fit mordekaiser. Gameplay wise, the animation feels a little heavy to play especially his autos. For the visual effects they Look amazing especially the ultimate of course the basic abilities looks great as well. The passive with white color, while, the Q and E are Red.
</p>
<a href="https://www.youtube.com/watch?v=CHONzlAS3v8" class="btn btn--green">Watch video</a>
</div>
</div>
</div>
<div class="popup" id="popup1">
<div class="popup__content">
<div class="popup__left">
<img src="https://i.ytimg.com/vi/zmp7s9k0L0k/maxresdefault.jpg" alt="Yasuo Review" class="popup__img" />
<img src="https://pbs.twimg.com/media/FA-FhIgVEAk3zp0.jpg:large" alt="Yasuo" class="popup__img" />
</div>
<div class="popup__right">
<a href="#section-tours" class="popup__close">×</a>
<h2 class="heading-secondary u-margin-bottom-small">Yasuo Skin Review</h2>
<h3 class="heading-tertiary u-margin-bottom-small">
Important – This is an Opinion not a valid source
</h3>
<p class="popup__text">
Dream Dragon Yasuo has a very peaceful Vibe, while truth has that grim reality of the war. The flowing hair and the style of the outfit suits perfectly. As for the gaming part as people expect for a legendary skin, they do have it in their transformation gimmick after they Ult. When they ult they get a mask but while playing you will only notice the hair change of color. They each have unique recalls and voice lines. In terms of the animation they are basically the same.
</p>
<a href="https://www.youtube.com/watch?v=VqxISO7HHZQ" class="btn btn--green">Watch video</a>
</div>
</div>
</div>
<div class="popup" id="popup3">
<div class="popup__content">
<div class="popup__left">
<img src="https://i.ytimg.com/vi/OwCzIItHxcg/maxresdefault.jpg" alt="Yone Review" class="popup__img" />
<img src="https://i.ytimg.com/vi/7_ExFBVDBwE/maxresdefault.jpg" alt="Yone" class="popup__img" />
</div>
<div class="popup__right">
<a href="#section-tours" class="popup__close">×</a>
<h2 class="heading-secondary u-margin-bottom-small">Yone Skin Review</h2>
<h3 class="heading-tertiary u-margin-bottom-small">
Important – This is an Opinion not a valid source
</h3>
<p class="popup__text">
Dawnbringer Yone has very elegant design fitting very well in Yone. As for the animation it can feel overwhelming at first mainly because it feels like its regular skin. Gameplaywise, the animations are fancier versions of its regular animations, it feels pretty much the same. As for the visual effects just like nightbriger Kayn, the mix of dawn and nightbringer visual effects makes this skin cool.
</p>
<a href="https://www.youtube.com/watch?v=tOwjHfaI3cU" class="btn btn--green">Watch video</a>
</div>
</div>
</div>
</body>
</html>
//Hi to everyone reading and watching one of my projects!, here I created a website with league of legends tematic. The code has some little errors so be careful if you are copying the code from my project.
// Hope you enjoy my project! from: Bryan Tineo
//Each comment with titkle indicates the name of the folder of the
//Mixins
@mixin clearfix {
&::after {
content: "";
display: table;
clear: both;
}
}
@mixin absCenter {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
// Media Query Manager
/*
0 - 600px: Phone
600 - 900:px Tablet portrait
900 - 1200px: Tablet landscape
[1200 - 1800] is where our normal styles apply
1800px + : Big Desktop
$breakpoint argument choices:
- phone
- tab-port
- tab-land
- big-desktop
ORDER: Base + typography > general layout + grid > page layout > components
1em = 16px
*/
@mixin respond($breakpoint) {
@if $breakpoint == phone {
//600px /16 = 37.5
@media only screen and (max-width: 37.5em) {
@content;
}
}
@if $breakpoint == tab-port {
//900px /16= 56.25
@media only screen and (max-width: 56.25em) {
@content;
}
}
@if $breakpoint == tab-land {
//1200px /16= 75
@media only screen and (max-width: 75em) {
@content;
}
}
@if $breakpoint == big-desktop {
//1800px /16=112.5
@media only screen and (min-width: 112.5em) {
@content;
}
}
}
//Variables
// COLORS
$color-penguin-light: #b2ebf2;
$color-penguin-dark: #4dd0e1;
$color-primary: #d966ff;
$color-primary-light: #ff5f5f;
$color-primary-middle: #ff5f5f;
$color-primary-dark: #ff2e2e;
$color-secondary-light: #ffb900;
$color-secondary-dark: #ff7730;
$color-tertiary-light: #2998ff;
$color-tertiary-dark: #5643fa;
$color-grey-light-1: #f7f7f7;
$color-grey-light-2: #eee;
$color-grey-dark: #777;
$color-grey-dark-2: #999;
$color-grey-dark-3: #333;
$color-white: #fff;
$color-black: #000;
// FONT
$default-font-size: 1.6rem;
// GRID
$grid-width: 114rem;
$gutter-vertical: 8rem;
$gutter-vertical-small: 6rem;
$gutter-horizontal: 6rem;
//Animations
@keyframes moveInLeft {
0% {
opacity: 0;
transform: translateX(-10rem); /* rotate(0deg); */
}
/* 60% {
transform: rotate(180deg);
} */
80% {
/* it will move to the right 10px more */
transform: translateX(1rem);
}
100% {
opacity: 1;
/* trabslate 0 will make the element be in the initial position*/
transform: translate(0);
}
}
@keyframes moveInRight {
0% {
opacity: 0;
transform: translateX(10rem);
}
80% {
/* it will move to the right 10px more */
transform: translateX(-1rem);
}
100% {
opacity: 1;
/* trabslate 0 will make the element be in the initial position*/
transform: translate(0);
}
}
@keyframes moveInBottom {
0% {
opacity: 0;
transform: translateY(3rem);
}
100% {
opacity: 1;
/* trabslate 0 will make the element be in the initial position*/
transform: translate(0);
}
}
//Base
*,
*::after,
*::before {
margin: 0;
padding: 0;
box-sizing: inherit;
}
html {
//Smooth scrolling
scroll-behavior: smooth;
-webkit-scroll-behavior: smooth;
// This defines what 1rem means
font-size: 62.5%; //1rem = 10px/16px =62.5%
@include respond(tab-land) {
// width < 1200?
font-size: 56.25%; //1rem = 9px, 9/16 = 50%
}
@include respond(tab-port) {
// width < 900?
font-size: 50%; //1rem = 8px, 8/16 = 50%
}
@include respond(big-desktop) {
font-size: 75%; //1 rem = 12px, 12/16 =75%
}
}
body {
box-sizing: border-box;
padding: 3rem;
@include respond(tab-port){
padding: 0;
}
}
::selection {
background-color: $color-primary;
color: $color-white;
}
//Typography
body {
font-family: "Lato", sans-serif;
font-weight: 400;
/* font-size: 16px; */
line-height: 1.7;
color: $color-grey-dark;
}
.heading-primary {
color: $color-white;
text-transform: uppercase;
backface-visibility: hidden;
margin-bottom: 6rem;
&--main {
display: block;
font-size: 6rem;
font-weight: 400;
letter-spacing: 3.5rem;
animation-name: moveInLeft;
animation-duration: 1s;
/* ease in will enter slow and end fast, while, ease out will go fast and then slow down */
animation-timing-function: ease-out;
@include respond(phone){
letter-spacing: 1rem;
font-family: 6rem;
}
/* animation will execute 3 times */
/* animation-iteration-count: 3; */
/* delays animation for 3 seconds*/
/* animation-delay: 3s; */
}
&--sub {
display: block;
font-size: 2rem;
font-weight: 700;
letter-spacing: 1.75rem;
animation: moveInRight 1s ease-out;
@include respond(phone){
letter-spacing: .5rem;
}
}
}
.heading-secondary {
font-size: 3.5rem;
text-transform: uppercase;
font-weight: 700;
display: inline-block;
background-image: linear-gradient(
to right,
$color-secondary-light, $color-primary-middle,
$color-tertiary-light
);
//after creating the gradient of two colors, we can use does colors to color the text by using webkit on the text and color transparent
-webkit-background-clip: text;
color: transparent;
letter-spacing: 0.2rem;
transition: all 0.2s;
@include respond(tab-port){
font-size: 3rem;
}
@include respond(phone){
font-size: 2.5rem;
}
&:hover {
// the skew y will move the text de costado. Mientras que skew x va a mover las letras para un lado
transform: skewY(2deg) skewX(15deg) scale(1.1);
text-shadow: 0.5rem 1rem 2rem rgba($color-black, 0.2);
}
}
.heading-tertiary {
font-size: $default-font-size;
font-weight: 700;
text-transform: uppercase;
}
.paragraph {
font-size: $default-font-size;
&:not(:last-child) {
margin-bottom: 3rem;
}
}
//Utilities
.u-center-text {
text-align: center !important;
}
.u-margin-bottom-big {
margin-bottom: 8rem !important;
@include respond(tab-port) {
margin-bottom: 5rem !important;
}
}
.u-margin-bottom-medium {
margin-bottom: 4rem !important;
@include respond(tab-port) {
margin-bottom: 3rem !important;
}
}
.u-margin-bottom-small {
margin-bottom: 1.5rem !important;
}
.u-margin-top-big {
margin-top: 8rem !important;
}
.u-margin-top-huge {
margin-top: 10rem !important;
}
//Bg-video
.bg-video {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
z-index: -1;
opacity: 0.15;
overflow: hidden;
&__content {
height: 100%;
width: 100%;
// object fit cover will allow the parent cover the parent of the content
object-fit: cover;
}
}
//Button
.btn {
// the "&" alone means the btn, so everythong inside will be applied to the btn even if it is not an anchor element
&,
&:link,
&:visited {
text-transform: uppercase;
text-decoration: none;
padding: 1.5rem 4rem;
display: inline-block;
border-radius: 10rem;
transition: all 0.2s;
position: relative;
font-size: $default-font-size;
//Change for the button element
border: none;
cursor: pointer;
}
&:hover {
transform: translateY(-3px);
box-shadow: 0 1rem 2rem rgba($color-black, 0.2);
&::after {
transform: scaleX(1.4) scaleY(1.6);
opacity: 0;
}
}
&:active,
&:focus {
outline: none;
transform: translateY(-1px);
box-shadow: 0 0.5rem 1rem rgba($color-black, 0.2);
}
&--white {
background-color: $color-white;
color: $color-grey-dark;
&::after {
background-color: $color-white;
}
}
&--green {
background-color: $color-primary;
color: $color-white;
&::after {
background-color: $color-primary;
}
}
&::after {
content: "";
display: inline-block;
height: 100%;
width: 100%;
border-radius: 10rem;
position: absolute;
top: 0;
left: 0;
z-index: -1;
transition: all 0.4s;
}
&--animated {
animation: moveInBottom 0.5s ease-out 0.75s;
animation-fill-mode: backwards;
}
}
.btn-text {
&:link,
&:visited {
font-size: $default-font-size;
color: $color-primary;
display: inline-block;
text-decoration: none;
border-bottom: 1px solid $color-primary;
padding: 3px;
transition: all 0.2s;
}
&:hover {
background-color: $color-primary;
color: $color-white;
box-shadow: 0 1rem 2rem rgba($color-black, 0.15);
transform: translateY(-2px);
}
&:active {
box-shadow: 0 0.5rem 1rem rgba($color-black, 0.15);
transform: translateY(0);
}
}
//Card
.card {
//Functionality
//perspective property to make the card flip go towards the user
perspective: 150rem;
// to make it work in firefox we use moz
-moz-perspective: 150rem;
position: relative;
height: 52rem;
&__side {
height: 52rem;
transition: all 0.8s ease;
position: absolute;
top: 0;
left: 0;
width: 100%;
-webkit-backface-visibility: hidden;
// backface visibility hidden will hide the back part of an element
// this will alloow us to show one content at a time when flipping the card
backface-visibility: hidden;
border-radius: 3px;
overflow: hidden;
box-shadow: 0 1.5rem 4rem rgba($color-black, 0.15);
&--front {
background-color: $color-white;
}
&--back {
transform: rotateY(180deg);
&-1 {
background-image: linear-gradient(
to right bottom,
$color-secondary-light,
$color-secondary-dark
);
}
&-2 {
background-image: linear-gradient(
to right bottom,
$color-primary-light,
$color-primary-dark
);
}
&-3 {
background-image: linear-gradient(
to right bottom,
$color-tertiary-light,
$color-tertiary-dark
);
}
}
}
//when the card is hovered make the card flip
// the &__side is to make the __side change(transform)
&:hover &__side--front {
transform: rotateY(-180deg);
}
&:hover &__side--back {
transform: rotateY(0);
}
//Front side Styling
&__picture {
background-size: cover;
height: 23rem;
background-blend-mode: color;
-webkit-clip-path: polygon(0 0, 100% 0, 100% 85%, 0 100%);
clip-path: polygon(0 0, 100% 0, 100% 85%, 0 100%);
border-top-left-radius: 3px;
border-top-right-radius: 3px;
&--1 {
background-image: linear-gradient(
to right bottom,
$color-secondary-light,
$color-secondary-dark
),
url("https://pbs.twimg.com/media/FA8mHCkUcAErMUv?format=jpg&name=4096x4096");
}
&--2 {
background-image: linear-gradient(
to right bottom,
$color-primary-light,
$color-primary-dark
),
url("https://images2.minutemediacdn.com/image/upload/c_fill,w_720,ar_16:9,f_auto,q_auto,g_auto/shape/cover/sport/dataimagejpegbase649j4AAQSkZJRgABAQEBLAEsAAD4gxYSU-b7e80ab2ef9e522a7aca9a89ddb99cf3.jpg");
}
&--3 {
background-image: linear-gradient(
to right bottom,
$color-tertiary-light,
$color-tertiary-dark
),
url("https://images2.minutemediacdn.com/image/upload/c_fill,w_720,ar_16:9,f_auto,q_auto,g_auto/shape/cover/sport/dataimagejpegbase649j4AAQSkZJRgABAQAAAQABAAD4gIoSU-81447fc6fd482c6c57784149447d8680.jpg");
}
}
&__heading {
font-size: 2.8rem;
font-weight: 300;
text-transform: uppercase;
text-align: right;
color: $color-white;
position: absolute;
top: 12rem;
right: 2rem;
width: 75%;
}
&__heading-span {
padding: 1rem 1.5rem;
-webkit-box-decoration-break: clone;
box-decoration-break: clone;
&--1 {
background-image: linear-gradient(
to right bottom,
rgba($color-secondary-light, 0.85),
rgba($color-secondary-dark, 0.85)
);
}
&--2 {
background-image: linear-gradient(
to right bottom,
rgba($color-primary-light, 0.85),
rgba($color-primary-dark, 0.85)
);
}
&--3 {
background-image: linear-gradient(
to right bottom,
rgba($color-tertiary-light, 0.85),
rgba($color-tertiary-dark, 0.85)
);
}
}
&__details {
padding: 3rem;
ul {
list-style: none;
width: 80%;
margin: 0 auto;
li {
text-align: center;
font-size: 1.5rem;
padding: 1rem;
&:not(:last-child) {
border-bottom: 1px solid $color-grey-light-2;
}
}
}
}
// Front Side Styling
&__cta {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 90%;
text-align: center;
}
&__price-box {
text-align: center;
color: $color-white;
margin-bottom: 8rem;
}
&__price-only {
font-size: 1.4rem;
text-transform: uppercase;
}
&__price-value {
font-size: 6rem;
font-weight: 100;
}
/* this: @include respond(tab-port) is eplaced in order or the card not hover when is tablet or phone(devices with no hover capability)*/
@media only screen and (max-width: 56.25em), only screen and (hover: none) {
height: auto;
border-radius: 3px;
background-color: $color-white;
box-shadow: 0 1.5rem 4rem rgba($color-black, 0.15);
&__side {
height: auto;
position: relative;
box-shadow: none;
&--back {
transform: rotateY(0);
clip-path: polygon(0 15%, 100% 0, 100% 100%, 0% 100%);
}
}
//when the card is hovered make the card flip
// the &__side is to make the __side change(transform)
&:hover &__side--front {
transform: rotateY(0);
}
// Front Side Styling
&__details {
padding: 1rem 3rem;
}
&__cta {
position: relative;
top: 0%;
left: 0;
transform: translate(0);
width: 100%;
padding: 7rem 4rem 4rem 4rem;
}
&__price-box {
margin-bottom: 3rem;
}
&__price-value {
font-size: 4rem;
}
}
}
//Composition
.composition {
position: relative;
&__photo {
width: 55%;
box-shadow: 0 1.5rem 4rem rgba($color-black, 0.4);
border-radius: 2px;
position: absolute;
z-index: 10;
transition: all 0.2s;
outline-offset: 2rem;
@include respond(tab-port) {
float: left;
position: relative;
//width is the same for each image
width: 33.33333%;
box-shadow: 0 1.5rem 3rem rgba($color-black, 0.2);
}
&--p1 {
left: 0;
top: -2rem;
@include respond(tab-port) {
top: 0;
transform: scale(1.2);
}
}
&--p2 {
right: 0;
top: 2rem;
@include respond(tab-port) {
top: -1rem;
transform: scale(1.3);
z-index: 100;
}
}
&--p3 {
left: 20%;
top: 10rem;
@include respond(tab-port) {
top: 1rem;
left: 0;
transform: scale(1.1);
}
}
&:hover {
outline: 1.5rem solid $color-primary;
transform: scale(1.05) translateY(-0.5rem);
box-shadow: 0 2.5rem 4rem rgba($color-black, 0.5);
z-index: 20;
}
}
// make all the images that aren't hovered to shrink
&:hover &__photo:not(:hover) {
transform: scale(0.95);
}
//composition:hover composition__photo:not(:hover) {
}
//Feature-box
.feature-box {
background-color: rgba($color-white, 0.8);
font-size: 1.5rem;
padding: 2.5rem;
text-align: center;
border-radius: 3px;
box-shadow: 0 1.5rem 4rem rgba($color-black, 0.15);
transition: transform 0.3s;
@include respond(tab-port) {
padding: 2rem;
}
&__icon {
font-size: 6rem;
margin-bottom: 0.5rem;
display: inline-block;
background-image: linear-gradient(
to right,
$color-primary-light,
$color-primary-dark
);
//after creating the gradient of two colors, we can use does colors to color the text by using webkit on the text and color transparent
-webkit-background-clip: text;
color: transparent;
@include respond(tab-port) {
margin-bottom: 0;
}
}
&:hover {
transform: translateY(-1.5rem) scale(1.03);
}
}
//form
.form {
&__group:not(:last-child) {
margin-bottom: 2rem;
}
&__input {
font-size: 1.5rem;
font-family: inherit;
color: inherit;
padding: 1.5rem 2rem;
border-radius: 2px;
background-color: rgba($color-white, 0.5);
border: none;
border-bottom: 3px solid transparent;
width: 90%;
// display block will allow the input label to have its own line
display: block;
transition: all 0.3s;
@include respond(tab-port) {
width: 100%;
}
//Focus is the outline that appears when you hit tab or click in an element
&:focus {
// The focus has to always be visible, you cant leave outline in none
outline: none;
// So, in this case instead of an outline we are giving a box-shadow in order for the user to see the element that is selecting
box-shadow: 0 1rem 2rem rgba($color-black, 0.1);
border-bottom: 3px solid $color-primary;
}
//If the input is invalid then
&:focus:invalid {
border-bottom: 3px solid $color-secondary-dark;
}
// webkit input placeholder will only work only in safary and chrome
&::-webkit-input-placeholder {
color: $color-grey-dark-2;
}
}
&__label {
font-size: 1.2rem;
font-weight: 700;
margin-left: 2rem;
margin-top: 0.7rem;
display: block;
transition: all 0.3s;
}
// we first select the input and then we add the adjacent sibling (adding label)
&__input:placeholder-shown + &__label {
// We first disappear the label (when nothing is written in the input label)
opacity: 0;
visibility: hidden;
// transform translateY will create an animation as if the label was going down to its correct position
transform: translateY(-4rem);
// When writting somethin in the label, this styles will be removed
}
&__radio-group {
width: 49%;
display: inline-block;
@include respond(tab-port) {
width: 100%;
margin-bottom: 2rem;
}
}
&__radio-input {
display: none;
}
&__radio-label {
font-size: $default-font-size;
cursor: pointer;
position: relative;
padding-left: 4.5rem;
}
&__radio-button {
height: 3rem;
width: 3rem;
border: 5px solid $color-primary;
border-radius: 50%;
display: inline-block;
position: absolute;
left: 0;
top: -0.4rem;
//crete the dot inside the ring and making it invisible
&::after {
content: "";
display: block;
height: 1.3rem;
width: 1.3rem;
border-radius: 50%;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background-color: $color-primary;
opacity: 0;
transition: opacity 0.2s;
}
}
//So, we first select the radio input and its sibling(adjacent sibling)
// After selecting the label(adjacent sibling of the input) then we can select the radio button after(the point inside the ring)
// Here we select the point inside the ring in order to create the effect of dissapearing and appearing when clicked
&__radio-input:checked ~ &__radio-label &__radio-button::after {
//When the ring is clicked the dot will apppear with opacity 1
opacity: 1;
}
}
//Popup
.popup {
height: 100vh;
width: 100%;
position: fixed;
top: 0;
left: 0;
background-color: rgba($color-black, 0.8);
z-index: 99999;
// hide popup
opacity: 0;
visibility: hidden;
//animation of popup appearing
transition: all 0.3s;
@supports (-webkit-backdrop-filter: blur(10px)) or
(backdrop-filter: blur(10px)) {
/* blur the background of the card */
-webkit-backdrop-filter: blur(10px);
backdrop-filter: blur(10px);
background-color: rgba($color-black, 0.3);
}
// when we click on the card's book now, the popup will showup using :target
// In a certain way is like we are selecting the popup element(target) and modifying it the css in this closures
&:target {
opacity: 1;
visibility: visible;
//In order to close we have create a link <a></a> with href of the section that you want to appear when closing
// in this case we created a link: <a href="section-tours" class="popup__close"></a>. Section tours becomes the target, then the popup is not longer the target so the pseudoclass is no longer aplied
}
//Creating animation going towards the user
&:target &__content {
opacity: 1;
transform: translate(-50%, -50%) scale(1);
}
&__close {
@include respond(phone) {
z-index: 10;
}
&:link,
&:visited {
color: $color-grey-dark;
//Postioned in the top right corner
position: absolute;
top: 2.5rem;
right: 2.5rem;
font-size: 3rem;
text-decoration: none;
display: inline-block;
//animation
transition: all 0.2s;
// fix the height intervention with the content
line-height: 1;
}
&:hover {
color: $color-primary;
}
}
&__content {
@include absCenter;
width: 75%;
background-color: $color-white;
@include respond(phone) {
width: 95%;
}
box-shadow: 0 2rem 4rem rgba($color-black, 0.2);
border-radius: 3px;
//with table cell in the childrens and table in the parent element, this will make the browser give the same height to each left and right content
display: table;
overflow: hidden;
//To create the animation of poping up to the user we have to add opacity 0
// also, we need to scale it, since we already used transform(in the abscenter mixin) we cant use it two times in the same element
//Therefore, we will need to add what we used in the mixin with scale
opacity: 0;
//this will override the mixin
transform: translate(-50%, -50%) scale(0.5);
transition: all 0.4s 0.2; // we are adding to the popup a delay of 0.2 seconds
}
&__left {
width: 33.333333%;
display: table-cell;
@include respond(phone) {
vertical-align: middle;
}
}
&__right {
width: 66.6666667%;
display: table-cell;
//vertical-align will allow us to put the content in the middle of each content
vertical-align: middle;
padding: 3rem 5rem;
@include respond(phone) {
padding: 3rem 2rem;
}
}
&__img {
display: block;
//width of the entire parent container's width
width: 100%;
}
&__text {
font-size: 1.4rem;
margin-bottom: 4rem;
//Show the paragraphs in two separate columns
column-count: 2;
column-gap: 4rem; //1em = 14px
//The column rule will separate in this case the two paragraphs with a line in the middle
column-rule: 1px solid $color-grey-light-2;
//For it to work in mozilla firefox it needs -moz- in the start
-moz-column-count: 2;
-moz-column-gap: 4rem;
-moz-column-rule: 1px solid $color-grey-light-2;
-moz-hyphens: auto;
-ms-hyphens: auto;
-webkit-hyphens: auto;
hyphens: auto;
@include respond(phone) {
font-size: 1.3rem;
}
}
}
//Story
.story {
width: 75%;
margin: 0 auto;
box-shadow: 0 3rem 6rem rgba($color-black, 0.1);
background-color: rgba($color-white, 0.6);
border-radius: 3px;
padding: 6rem;
padding-left: 9rem;
font-size: $default-font-size;
// with transfor -12degrees will make the whole element with their childs to diagonally move
transform: skewX(-12deg);
@include respond(tab-port) {
width: 100%;
padding: 4rem;
padding-left: 7rem;
}
@include respond(phone) {
transform: skew(0);
}
&__shape {
width: 15rem;
height: 15rem;
float: left;
-webkit-shape-outside: circle(50% at 50% 50%);
// radius of the circle in this cas 50% will be radius=7.5
// then, at 50% 50% means at the center horizontally and vertically
shape-outside: circle(50% at 50% 50%);
//clipath will create the circle shape in the element
-webkit-clip-path: circle(50% at 50% 50%);
clip-path: circle(50% at 50% 50%);
// to give space between the figure of the image andd the text, we use transform
//Since we are putting diagonally the whole element, we skew the image in order to make it to not look distorted
transform: translateX(-3rem) skewX(12deg);
position: relative;
@include respond(phone) {
transform: translateX(-3rem) skewX(0);
}
}
&__img {
height: 100%;
// we move with translateX the image to the center. Scale will set the initial scale of the image
transform: translateX(-4rem) scale(1.4);
backface-visibility: hidden;
transition: all 0.5s;
}
&__text {
//Since we are skewing diagonally the whole element, we skew the text to is not distorted
transform: skewX(12deg);
@include respond(phone) {
transform: skewX(0);
}
}
&__caption {
// Make caption be infront of image
position: absolute;
//center caption
top: 50%;
left: 50%;
// We translate the image some percentage down so it can be animated moving up
transform: translate(-50%, 40%);
color: $color-white;
text-transform: uppercase;
font-size: 1.7rem;
text-align: center;
// opacity will start with 0 so the letters cant be seen until hovered
opacity: 0;
transition: all 0.5s;
// for the text appearing when hovered in order to make it to not chacke we use backface hidden
backface-visibility: hidden;
}
// when is hovered then we want to change the caption
&:hover &__caption {
//opacity 1 so when hovered the text appears
opacity: 1;
// move to the center when hovered
transform: translate(-50%, -50%);
}
//As soon as we hover the image
&:hover &__img {
// the image will stay in the center with translateX, while the scale will make the image look far
transform: translateX(-4rem) scale(1);
//Also, we want the image to be blured and a darker
//brightness will make the image darker. If brightness is less then 100% it will become darker
filter: blur(3px) brightness(80%);
}
}
//Footer
.footer {
background-color: $color-grey-dark-3;
padding: 10rem 0;
font-size: 1.4rem;
color: $color-grey-light-1;
@include respond(tab-port) {
padding: 8rem 0;
}
&__logo-box {
//inline image works as inline text, so text align center will align the image
text-align: center;
margin-bottom: 8rem;
@include respond(tab-port) {
margin-bottom: 6rem;
}
}
&__logo {
width: 15rem;
height: auto;
}
&__navigation {
border-top: 1px solid $color-grey-dark;
padding-top: 2rem;
// inline-block dosent ocuppy 100% of its available width only what the content needs
display: inline-block;
@include respond(tab-port) {
width: 100%;
text-align: center;
}
}
&__list {
list-style: none;
}
&__item {
display: inline-block;
&:not(:last-child) {
margin-right: 1.5rem;
}
}
&__link {
&:link,
&:visited {
color: $color-grey-light-1;
background-color: $color-grey-dark-3;
text-decoration: none;
text-transform: uppercase;
display: inline-block;
transition: all 0.2s;
}
&:hover,
&:active {
color: $color-primary;
box-shadow: 0 1rem 2rem rgba($color-black, 0.4);
transform: rotate(5deg) scale(1.3);
}
}
&__copyright {
border-top: 1px solid $color-grey-dark;
padding-top: 2rem;
width: 80%;
float: right;
@include respond(tab-port) {
width: 100%;
float: none;
}
}
}
// GRID
.row {
// 114rem
max-width: $grid-width;
//center row in the viewport
margin: 0 auto;
//.row:not(:last-child)
&:not(:last-child) {
// put margin in the bottom of all rows except the last row(last child)
margin-bottom: $gutter-vertical;
@include respond(tab-port){
margin-bottom: $gutter-vertical-small;
}
@include respond(tab-port){
max-width: 50rem;
padding: 0 3rem;
}
}
@include clearfix;
// It will select all of the elements in which the class attribute starts with "col-". If you change ^ with * it will mean every class that contains col-. If you use $, means any class that ends with col-
[class^="col-"] {
float: left;
&:not(:last-child) {
margin-right: $gutter-horizontal;
@include respond(tab-port){
margin-right: 0;
margin-bottom: $gutter-vertical-small;
}
}
@include respond(tab-port){
width: 100% !important;
}
}
.col-1-of-2 {
width: calc((100% - #{$gutter-horizontal}) / 2);
}
.col-1-of-3 {
width: calc((100% - 2 * #{$gutter-horizontal}) / 3);
}
.col-2-of-3 {
width: calc(
2 * ((100% - 2 * #{$gutter-horizontal}) / 3) + #{gutter-horizontal}
);
}
.col-1-of-4 {
width: calc((100% - 3 * #{$gutter-horizontal}) / 4);
}
.col-2-of-4 {
width: calc(
2 * ((100% - 3 * #{$gutter-horizontal}) / 4) + #{$gutter-horizontal}
);
}
.col-3-of-4 {
width: calc(
3 * ((100% - 3 * #{$gutter-horizontal}) / 4) + 2 * #{$gutter-horizontal}
);
}
}
//Header
.header {
height: 95vh;
background-image: linear-gradient(
to right bottom,
rgba(255, 0, 0, 0.8),
rgb(0, 0, 111, 0.8)
),
url(https://images.gamewatcherstatic.com/image/file/5/66/104185/League-of-Legends-3.jpg);
background-size: cover;
background-position: top;
position: relative;
-webkit-clip-path: polygon(0 0, 100% 0, 100% 75vh, 0 100%);
/* clip path each coordinate is a corner of the image, so we are selecting in which position each corner will stay */
clip-path: polygon(0 0, 100% 0, 100% 75vh, 0 100%);
@include respond(phone){
-webkit-clip-path: polygon(0 0, 100% 0, 100% 85vh, 0 100%);
clip-path: polygon(0 0, 100% 0, 100% 85vh, 0 100%);
}
&__logo-box {
position: absolute;
top: 4rem;
left: 4rem;
}
&__logo {
height: 3.5rem;
}
&__text-box {
position: absolute;
top: 40%;
left: 50%;
/* background-color: red; */
transform: translate(-50%, -50%);
text-align: center;
}
}
//Navigation
.navigation {
&__checkbox {
// Since we dont want the checkbox to be seen, we set display none so it dosent appear on the website
display: none;
}
&__button {
//making the white circle menu
background-color: $color-white;
height: 7rem;
width: 7rem;
position: fixed;
top: 6rem;
right: 6rem;
border-radius: 50%;
z-index: 2000;
//shadow to the circle button menu so it is depicted when moving through the page
box-shadow: 0 1rem 3rem rgba($color-black, 0.1);
text-align: center;
cursor: pointer;
@include respond(tab-port){
top: 4rem;
right: 4rem;
}
@include respond(phone){
top: 3.5rem;
right: 3.5rem;
}
}
&__background {
//making the circle with color in the back
height: 6rem;
width: 6rem;
border-radius: 50%;
//putting the button in the right corner
position: fixed; // same as position absolute, but this is moved using the top right property
top: 6.5rem;
right: 6.5rem;
//The linear gradient goes from one side to the other one. while the radio gradient starts in the middle of the element and goes from there in all directions
background-image: radial-gradient(
$color-primary-light,
$color-primary-dark
);
z-index: 1000;
//transition on the background
// check: https://easings.net/ in order to chose the ease of the transition
transition: transform 0.8s cubic-bezier(0.22, 1, 0.36, 1);
@include respond(tab-port){
top: 4.5rem;
right: 4.5rem;
}
@include respond(phone){
top: 3.5rem;
right: 3.5rem;
}
//As Soon the navigation is open, we are scaling the entire backround
//transform: scale(80);
}
&__nav {
// the navigation will occuppy 100% of the view port's width and height (ocuppy the whole page when menu button clicked)
height: 100vh;
//While the navigation open even when scroolling we want it in the same place
position: fixed;
top: 0;
//instead of right: 0; we set to left: 0; so we can have an animation from the left(the links coming and hiding from the left side)
left: 0;
z-index: 1500;
// to hide the navigation links we cant use opacity 0 since the links will still work even when the content is hided
// Therefore, we can convine opacity with the width
//So, by making the width of the elements to 0 we will hide the link
opacity: 0;
width: 0;
//transition of the navigation to animate the opacity
//if we only put transition: opacity 0.8s; then the elements inside the navigation will hide in a weird way when clicked
//So we use all instead of opacity
// The cubic will define the transition animation
// check: https://easings.net/# for more transitions
transition: all 0.8s cubic-bezier(0.68, -0.6, 0.32, 1.6);
}
&__list {
//navigation list
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
list-style: none;
text-align: center;
// we are setting the width of the links so when it hides when clicked the navigation button so it dosent hide in a weird way
width: 100%;
}
&__item {
//selection the box of each link
margin: 1rem;
}
&__link {
&:link,
&:visited {
// we need to always set inline-block in order for the padding and the tranform trnslate works
display: inline-block;
font-size: 3rem;
font-weight: 300;
padding: 1rem 2rem;
color: $color-white;
text-decoration: none;
text-transform: uppercase;
// give color animation to the link
background-image: linear-gradient(
120deg,
transparent 0%,
transparent 50%,
$color-white 50%
);
// As we increase the background size from 100% , the white color of the link will slowly disappear and the transparent color will cover the whole link button
//Therefore, at 220% it will be all transparent, so when hovered is changed to 100% in order to make it white
background-size: 220%;
transition: all 0.4s;
span {
margin-right: 1rem;
display: inline-block;
}
}
&:hover,
&:active {
background-position: 100%;
color: $color-primary;
transform: translateX(1rem);
}
}
//using the checkbox hack so when clicked the menu then the navigation appears
// Functionality
&__checkbox:checked ~ &__background {
// when the label is checked(the menu button), then the navigation appears
// the background of the navigation first scales
transform: scale(80);
}
&__checkbox:checked ~ &__nav {
// Since we used opacity 0 and width 0 to hide the links of the navigation
opacity: 1;
width: 100%;
}
//Icon
&__icon {
position: relative;
// After making the text align in the button in order for the icon to show in the middle
// we must move the icon inside using margin top
margin-top: 3.5rem; //with this is in the center of the element
&,
&::before,
&::after {
width: 3rem;
height: 2px;
background-color: $color-grey-dark-3;
display: inline-block;
}
// For the before and after to appear in the page, they need to have their content property defined
&::before,
&::after {
content: "";
position: absolute;
left: 0;
transition: all 0.2s;
}
// One on the top and one on the bottom
&::before {
top: -0.8rem;
//transform-origin: right; // this will rotate the line to the right
}
&::after {
top: 0.8rem;
}
}
//When hovered, make the lines in the menu move apart
&__button:hover &__icon::before {
top: -1rem;
}
&__button:hover &__icon::after {
top: 1rem;
}
//When the checkbox is selected, hten we select it brother which is the button, so then we select the button's child which is the icon.
&__checkbox:checked + &__button &__icon {
//When the button is clicked the middle line of the menu dissapears using backgroundcolor transprent
background-color: transparent;
}
//After disappearing the middle line ( this: ||| ,to this: | |)
//then we rotate the before and after(rotate the remaining lines to form an X shape)
//Rotating them in opposite directions will create the effect of creating an X shape
&__checkbox:checked + &__button &__icon::before {
//since there is a padding between the lines (looks like this: | | )
// So, whit top 0 for both will make the lines be next to each other (like this: ||)
top: 0;
//before we set: transform: rotate(45deg);. However, in order to make a better effect we substracted 180 - 45= 135deg to create a better animation
transform: rotate(135deg);
}
&__checkbox:checked + &__button &__icon::after {
top: 0;
transform: rotate(-135deg);
}
}
//Home
.section-about {
background-color: $color-grey-light-1;
padding: 25rem 0;
margin-top: -20vh;
@include respond(tab-port) {
padding: 20rem 0;
}
}
.section-features {
padding: 20rem 0;
background-image: linear-gradient(
to right bottom,
rgba(255, 0, 0, 0.8),
rgb(0, 0, 111, 0.8)
),
url("https://cdn.vox-cdn.com/thumbor/N2TuTRw5FX-6KU9NJVVAVtNTKjY=/1400x0/filters:no_upscale()/cdn.vox-cdn.com/uploads/chorus_asset/file/7164879/Big%20League%20Map.jpg");
background-size: cover;
// transform skewY will aloww us to put the element diagonally
transform: skewY(-7deg);
margin-top: -10rem;
//Direct child selector(selecting all direct childs of the section feature)
& > * {
transform: skewY(7deg);
}
@include respond(tab-port){
padding: 10rem 0;
}
}
.section-tours {
background-color: $color-grey-light-1;
padding: 25rem 0 15rem 0;
margin-top: -10rem;
@include respond(tab-port) {
padding: 20rem 0 10rem 0;
}
}
.section-stories {
position: relative;
padding: 15rem 0;
@include respond(tab-port) {
padding: 10rem 0;
}
}
.section-book {
padding: 15rem 0;
background-image: linear-gradient(
to right bottom,
$color-penguin-light,
$color-penguin-dark
);
@include respond(tab-port) {
padding: 10rem 0;
}
}
.book {
// in linear gradient instade of using from left to right we can use 90degrees
// the 90 degrees will allow us to make the colors go from left to right(rotated)
// at the right of each color we indicate in which percent we want the color to be
// In this case the white will be from 0%-50%, while transparent 50%-100%.
// This will create an effect that separates this two colors
background-image: linear-gradient(
105deg,
rgba($color-white, 0.9) 0%,
rgba($color-white, 0.9) 50%,
transparent 50%
),
url("https://cdn.vox-cdn.com/thumbor/HBBA62_GWFtU5xaSwg2-O1DqNtA=/0x0:1920x1080/1200x800/filters:focal(1107x375:1413x681)/cdn.vox-cdn.com/uploads/chorus_image/image/65548570/pengu.0.jpg");
//background size 100% is the same as cover
background-size: 100%;
border-radius: 3px;
box-shadow: 0 1.5rem 4rem rgba($color-black, 0.2);
@include respond(tab-land) {
background-image: linear-gradient(
105deg,
rgba($color-white, 0.9) 0%,
rgba($color-white, 0.9) 50%,
transparent 65%
),
url("https://cdn.vox-cdn.com/thumbor/HBBA62_GWFtU5xaSwg2-O1DqNtA=/0x0:1920x1080/1200x800/filters:focal(1107x375:1413x681)/cdn.vox-cdn.com/uploads/chorus_image/image/65548570/pengu.0.jpg");
background-size: cover;
}
@include respond(tab-port) {
background-image: linear-gradient(
to right,
rgba($color-white, 0.9) 0%,
rgba($color-white, 0.9) 100%),
url("https://cdn.vox-cdn.com/thumbor/HBBA62_GWFtU5xaSwg2-O1DqNtA=/0x0:1920x1080/1200x800/filters:focal(1107x375:1413x681)/cdn.vox-cdn.com/uploads/chorus_image/image/65548570/pengu.0.jpg");
}
&__form {
// Ocuppy half of the entire box
width: 50%;
padding: 6rem;
@include respond(tab-land) {
width: 65%;
}
@include respond(tab-port) {
width: 100%;
}
}
}
//imagen
.imagen {
height: auto;
width: 12rem;
}
View Compiled
/* This js code will allow the navigation scroll and close de the navigation tab when clicked a link */
const link1 = document.querySelector(".link1");
const link2 = document.querySelector(".link2");
const link3 = document.querySelector(".link3");
const link4 = document.querySelector(".link4");
const link5 = document.querySelector(".link5");
const cajita = document.querySelector(".navigation__checkbox");
link1.addEventListener("click", function (event) {
cajita.checked = false;
});
link2.addEventListener("click", function (event) {
cajita.checked = false;
});
link3.addEventListener("click", function (event) {
cajita.checked = false;
});
link4.addEventListener("click", function (event) {
cajita.checked = false;
});
link5.addEventListener("click", function (event) {
cajita.checked = false;
});
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.