<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>Nettflix Bootcamp</title>
<script src="https://code.jquery.com/jquery-3.6.3.js" integrity="sha256-nQLuAZGRRcILA+6dMBOvcRh5Pe310sBpanc6+QBmyVM=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/owl.carousel.min.js">
</script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.carousel.min.css">
</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">Project1</a>
</li>
<li class="navigation__item">
<a href="#features" class="navigation__link link2">Project2</a>
</li>
<li class="navigation__item">
<a href="#tours" class="navigation__link link3">Project3</a>
</li>
</ul>
</nav>
</div>
<header class="header">
<div class="header__logo-box">
<img src="https://bryan-tineo-portafolio2.netlify.app/images/bryanmax9_icon.png" alt="logo" class="header__logo" />
</div>
<div class="header__text-box">
<h1 class="heading-primary">
<span class="heading-primary--main">Netflix Advanced Bootcamp</span>
<span class="heading-primary--sub">Bryan Tineo</span>
</h1>
</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">
Section About
</h2>
</div>
<div class="row">
<div class="col-1-of-2">
<h3 class="heading-tertiary u-margin-bottom-small">
Description
</h3>
<p class="paragraph">
The 12 Week Advanced Netflix Pathways Bootcamp for Software Engineering (Java) is a comprehensive program designed to enhance the software engineering skills of individuals. The bootcamp focuses on Java programming, covering essential topics such as object-oriented programming, data structures, algorithms, and database design, using real-world projects aligned with Netflix's engineering practices.
</p>
<p class="paragraph">
The highly interactive and immersive curriculum includes lectures, coding sessions, mentorship, and challenging projects, providing participants with hands-on experience and feedback. Suitable for those with prior programming experience, the program results in a deep understanding of Java and its applications, as well as the confidence to tackle complex engineering problems. Upon completion, participants receive a certificate showcasing their expertise and making them highly competitive in the job market.
</p>
<a href="https://github.com/bryanmax9/Bryan_Tineo_AllNetflixChallenges" class="btn-text">Github repository of Netflix Challenges →</a>
</div>
<div class="col-1-of-2">
<div class="composition">
<img
src="https://www.crn.com/resources/027e-1737ab2a5482-5b472a146614-1000/java-logo.jpeg"
alt="Java"
class="composition__photo composition__photo--p1"
/><img
src="https://developers.redhat.com/sites/default/files/styles/article_feature/public/blog/2014/05/homepage-docker-logo.png?itok=zx0e-vcP"
alt="Docker"
class="composition__photo composition__photo--p2"
/><img
src="https://repository-images.githubusercontent.com/259018719/0663e880-8a02-11ea-9c75-44ca9a90cc1f"
alt="Spring-Framework"
class="composition__photo composition__photo--p3"
/>
</div>
</div>
</div>
</section>
<section class="gallery gallery__frame">
<figure class="gallery__item gallery__item--1 ">
<img src="https://i.imgur.com/CVpBrBE.jpeg" alt="Gallery image 1" class="gallery__img ">
</figure>
<figure class="gallery__item gallery__item--2 ">
<img src="https://i.imgur.com/ADDEJ7T.jpeg" alt="Gallery image 2" class="gallery__img">
</figure>
<figure class="gallery__item gallery__item--3">
<img src ="https://i.imgur.com/K7V2qTn.jpeg" class="gallery__img">
</figure>
<figure class="gallery__item gallery__item--4">
<img src="https://i.imgur.com/4GMweKL.jpeg" alt="Gallery image 4" class="gallery__img">
</figure>
<figure class="gallery__item gallery__item--5">
<img src="https://i.imgur.com/AMk9i9c.jpeg" alt="Gallery image 5" class="gallery__img">
</figure>
<figure class="gallery__item gallery__item--6">
<img src="https://i.imgur.com/HxGEnZ6.jpeg" alt="Gallery image 6" class="gallery__img">
</figure>
<figure class="gallery__item gallery__item--7">
<img src="https://i.imgur.com/z2gbsFu.jpeg" alt="Gallery image 7" class="gallery__img">
</figure>
<figure class="gallery__item gallery__item--8">
<img src="https://i.imgur.com/l3cUTtW.jpeg" alt="Gallery image 8" class="gallery__img">
</figure>
<figure class="gallery__item gallery__item--9">
<img src="https://i.imgur.com/XWK2vJ6.jpeg" alt="Gallery image 9" class="gallery__img">
</figure>
<figure class="gallery__item gallery__item--10">
<img src="https://i.imgur.com/XAo6ao2.jpeg" alt="Gallery image 10" class="gallery__img">
</figure>
<figure class="gallery__item gallery__item--11">
<img src="https://i.imgur.com/3yGiBt6.jpeg" alt="Gallery image 11" class="gallery__img">
</figure>
<figure class="gallery__item gallery__item--12">
<img src="https://i.imgur.com/yYiENgF.jpeg" alt="Gallery image 12" class="gallery__img">
</figure>
<figure class="gallery__item gallery__item--13">
<img src="https://i.imgur.com/KniJzML.jpeg" alt="Gallery image 13" class="gallery__img">
</figure>
<figure class="gallery__item gallery__item--14 frame">
<img src="https://i.imgur.com/Al8XIaO.jpeg" alt="Gallery image 14" class="gallery__img">
</figure>
</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=1okc_HHf-5lGcIxw7HKsibiGNj1wAMYZw" type="video/mp4" />
<source src="https://drive.google.com/uc?export=download&id=1C6ABdiNjumaKZVO6ytFBn1QNLcmboLPR" 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">
About Me
</h2>
</div>
<div class="row">
<div class="story">
<figure class="story__shape">
<img
src="https://media.licdn.com/dms/image/D5603AQGuExkmqpb6BQ/profile-displayphoto-shrink_200_200/0/1665378322144?e=1681344000&v=beta&t=aA_aaXMC_CUIhWCx7twMwTZNmpzQqfMm1y73e949FGs"
alt="Bryan Tineo-Developer"
class="story__img"
/>
<figcaption class="story__caption">Bryan</figcaption>
</figure>
<div class="story__text">
<h3 class="heading-tertiary u-margin-bottom-small">
Bryan Tineo
</h3>
<p>
I am a motivated and capable person looking for new opportunities in Web Development, Software Development, and IT support.
</p>
</div>
</div>
</div>
<div class="row">
<div class="story">
<figure class="story__shape">
<img
src="https://bryan-tineo-portafolio2.netlify.app/images/bryanmax9_icon.png"
alt="Acttive Worm"
class="story__img"
/>
<figcaption class="story__caption">Bryan Logo</figcaption>
</figure>
<div class="story__text">
<h3 class="heading-tertiary u-margin-bottom-small">
Active worm
</h3>
<p>
Web and App Developers. We are active learners, learning 24/7. Our Goal is creating Amazing Products.
</p>
</div>
</div>
</div>
<div class="u-center-text u-margin-top-huge">
<a href="https://bryan-tineo-portafolio2.netlify.app/" class="btn-text">Portfolio page →</a>
</div>
</section>
<section class="section-projects" id="projects">
<div class="slider owl-carousel">
<div class="card">
<div class="img"><img src="https://i.ytimg.com/vi/WSaS17CSS4c/maxresdefault.jpg" alt=""></div>
<div class="content">
<div class="title">Magic 8 Ball</div>
<div class="sub-title">Answer Questions</div>
<p>
The original Magic 8 Ball is a toy used for fortune-telling or seeking advice. It has 20 answers, which are revealed by turning it over to see a message through a window.
In the context of an API, a Magic 8 Ball API would allow you to make a request, such as asking a question, and receive a random answer in the form of a text message or code. The response would simulate the experience of using a physical Magic 8 Ball toy.
</p>
<div class="btn">
<a href="#">Go to page</a>
</div>
</div>
</div>
<div class="card">
<div class="img"><img src="https://www.garyfox.co/wp-content/uploads/2019/10/best-top-inspirational-quotes-1024x536.png" alt=""></div>
<div class="content">
<div class="title">Quotes</div>
<div class="sub-title">Random Quotes Generator</div>
<p>
A "Random Quote API" is an application programming interface (API) that provides access to a database of quotes and returns a random quote to the user. Quotes can be from famous personalities, writers, historical figures, or even fictional characters.
</p>
<div class="btn">
<a href="#">Go to page</a>
</div>
</div>
</div>
<div class="card">
<div class="img"><img src="https://i.pinimg.com/originals/6b/84/14/6b84142ef4022b699a3085b3420bad54.jpg" alt=""></div>
<div class="content">
<div class="title">Definition</div>
<div class="sub-title">Random word with definition</div>
<p>
A "Random Word with its Respective Definition API" is an application programming interface (API) that provides access to a database of words and their definitions, and returns a random word with its definition to the user. When a request is made to the API, it selects a random word from its database along with its definition, and returns it to the caller in the form of a text string or a JSON object. The API can be configured to return words based on different categories, such as nouns, verbs, adjectives, or specific subjects, like geography or science.
</p>
<div class="btn">
<a href="#">Go to page</a>
</div>
</div>
</div>
</div>
</section>
</main>
<footer class="footer">
<div class="footer__logo-box">
<img src="https://bryan-tineo-portafolio2.netlify.app/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="https://www.linkedin.com/in/bryan-tineo/" class="footer__link">Company</a>
</li>
<li class="footer__item">
<a href="https://www.linkedin.com/in/bryan-tineo/" class="footer__link">Contact</a>
</li>
<li class="footer__item">
<a href="https://www.linkedin.com/in/bryan-tineo/" class="footer__link">Carrers</a>
</li>
<li class="footer__item">
<a href="https://www.linkedin.com/in/bryan-tineo/" class="footer__link">Privacy policy</a>
</li>
<li class="footer__item">
<a href="https://www.linkedin.com/in/bryan-tineo/" 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
my Bootcamp at Neflix. Copyright © by Bryan Tineo.
</p>
</div>
</div>
</footer>
<script>
$(".slider").owlCarousel({
loop: true,
autoplay: true,
autoplayTimeout: 2500,//2000ms = 2.5s
autoplayHoverPause: true,
});
</script>
</body>
</html>
//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,
#e60000, #990000,
#330000
);
//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.75;
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: red;
display: inline-block;
text-decoration: none;
border-bottom: 1px solid red;
padding: 3px;
transition: all 0.2s;
}
&:hover {
background-color: red;
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);
}
}
//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) {
}
//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: black;
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: #b30000;
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, 25, 0.8)
),
url(https://variety.com/wp-content/uploads/2020/05/netflix-logo.png);
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%;
}
}
}
//Section about (Aca cuento de que se trata la pagina)
.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 red;
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) {
}
.section-stories {
position: relative;
padding: 15rem 0;
@include respond(tab-port) {
padding: 10rem 0;
}
}
//Slider
.slider{
max-width: 1150px;
display: flex;
}
.slider .card{
background: #fff;
flex:1;
margin: 0 10px;
}
.slider .card .img img{
height: 100%;
width: 100%;
object-fit: cover;
}
.section-projects{
display: grid;
height: 100%;
place-items: center;
text-align: center;
background: #f2f2f2;
}
.slider .card .content{
padding: 10px 20px;
}
.card .content .title{
font-size: 25px;
font-weight: 600;
}
.card .content .sub-title{
font-size: 20px;
font-weight: 600;
color: #e74c3c;
line-height: 20px;
}
.card .content p{
text-align:justify;
margin: 10px 0;
}
.card .content .btn{
display: block;
text-align: left;
margin: 10px 0;
background-color: red;
}
.card .content .btn a{
text-decoration:None;
background: red;
color:#fff;
border:none;
outline: none;
font-size: 17px;
padding: 5px 8px;
border-radius: 5px;
cursor: pointer;
transition: 0.2s;
}
.card .content .btn button:hover{
transform: scale(0.9);
}
.section-projects {
overflow: hidden;
padding: 15rem 0;
background-image: linear-gradient(
to right bottom,
#990000,
#330000
);
@include respond(tab-port) {
padding: 10rem 0;
}
}
//GALLERY
.gallery {
background-color: white;
grid-column: full-start / full-end;
display: grid;
grid-template-columns: repeat(8, 1fr);
//We use vw (viewport width) in order for the grid height to not change when the viewport shrinks
grid-template-rows: repeat(7, 5vw);
grid-gap: 1.5rem;
padding: 1.5rem;
&__item {
&--1 {
grid-row: 1 / 3;
grid-column: 1 / 3;
}
&--2 {
grid-row: 1 / 4;
grid-column: 3 / 6;
}
&--3 {
grid-row: 1 / 3;
grid-column: 6 / 7;
}
&--4 {
grid-row: 1 / 3;
grid-column: 7 / 9;
}
&--5 {
grid-row: 3 / 6;
grid-column: 1 / 3;
}
&--6 {
grid-row: 4 / 6;
grid-column: 3 / 5;
}
&--7 {
grid-row: 4 / 5;
grid-column: 5 / 6;
}
&--8 {
grid-row: 3 / 5;
grid-column: 6 / 8;
}
&--9 {
grid-row: 3 / 6;
grid-column: 8 / 9;
}
&--10 {
grid-row: 6 / 8;
grid-column: 1 / 2;
}
&--11{
grid-row: 6 / 8;
grid-column: 2 / 4;
}
&--12 {
grid-row: 6 / 8;
grid-column: 4 / 5;
}
&--13 {
grid-row: 5 / 8;
grid-column: 5 / 8;
}
&--14 {
grid-row: 6 / 8;
grid-column: 8 / 9;
}
}
&__img {
//we put 100% for the width of the images in order for the images dont ocuppy the whole grid and only a grid cell.
width: 100%;
height: 100%;
// object fit is in order for the image not to overflow, but for object fit to work we have to manually se the width and height of the image
object-fit: cover;
display: block;
}
}
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 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;
});
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.