<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Game Store</title>
<link rel="stylesheet" href="styles.css">
<!-- Add this line to include the carousel CSS -->
<link rel="stylesheet" href="https://unpkg.com/swiper/swiper-bundle.min.css" />
<!-- Add this line to include the carousel JS -->
<script src="https://unpkg.com/swiper/swiper-bundle.min.js"></script>
</head>
<body>
<header>
<button class="menu-btn">Menu</button>
<a href="#" class="logo">
<img src="https://i.imgur.com/QxckFLG.png" alt="Logo">
Wormhole Gaming
</a>
<nav>
<!-- Search bar -->
<form class="search-form">
<input type="search" class="search-input" placeholder="Search" />
</form>
<ul>
<li><a href="#" class="active">Home</a></li>
<li><a href="#">Shopping Cart</a></li>
<li><a href="#">About</a></li>
</ul>
</nav>
<div class="sliding-menu">
<button class="close-btn">×</button>
<ul>
<li><a href="#Posters" class="active">Releases</a></li>
<li><a href="#Brands">Brands</a></li>
<li><a href="#NewReleases">New Releases</a></li>
<li><a href="#Featured">Featured Categories</a></li>
</ul>
</div>
</header>
<main>
<section class="gallery gallery__frame container" id="Posters">
<figure class="gallery__item gallery__item--1 ">
<img src="https://i.imgur.com/czfaGzG.jpeg" class="gallery__img ">
</figure>
<figure class="gallery__item gallery__item--2 ">
<img src="https://i.imgur.com/Pli0i5F.jpeg" class="gallery__img">
</figure>
<figure class="gallery__item gallery__item--3 ">
<img src="https://i.imgur.com/Rp6L1MM.jpeg" class="gallery__img">
</figure>
<figure class="gallery__item gallery__item--4 ">
<img src="https://i.imgur.com/xyRC8kL.jpeg" class="gallery__img">
</figure>
<figure class="gallery__item gallery__item--5 ">
<img src="https://i.imgur.com/D9VeWwZ.jpeg" class="gallery__img">
</figure>
</section>
<!-- Top Brands Section -->
<section class="top-brands container" id="Brands">
<h2 class="top-brands__title">Top Brands</h2>
<div class="top-brands__grid">
<div class="brand-box">
<img src="https://i.imgur.com/N7cZpyg.jpeg" alt="Xbox">
</div>
<div class="brand-box">
<img src="https://i.imgur.com/wbv8cm6.png" alt="Nintendo">
</div>
<div class="brand-box">
<img src="https://i.imgur.com/Xkkmbt5.png" alt="Play Station 4">
</div>
<div class="brand-box">
<img src="https://i.imgur.com/yuPqCr9.png" alt="Funko">
</div>
<div class="brand-box">
<img src="https://i.imgur.com/1Etib7y.png" alt="Pokemon">
</div>
<div class="brand-box">
<img src="https://i.imgur.com/RPHfc6L.jpeg" alt="Razer">
</div>
<div class="brand-box">
<img src="https://i.imgur.com/pS6E2WU.png" alt="Hasbro">
</div>
<div class="brand-box">
<img src="https://i.imgur.com/HZ7HhQm.jpeg" alt="Turtle Beach">
</div>
</div>
</section>
<!-- Ad Section -->
<section class="ad-section container">
<div class="ad-banner">
<img src="https://i.imgur.com/3l0DWkz.jpeg" alt="Ad" class="ad-image">
<div class="ad-text">
<h3>New 2023 Game Releases</h3>
<p>Best releases this year!</p>
</div>
</div>
</section>
<!-- Carousel Section -->
<section class="carousel-section container" id="NewReleases">
<div class="swiper-container">
<div class="swiper-wrapper">
<!-- carousel items here -->
<div class="swiper-slide"><img src="https://i.imgur.com/CtPRTlO.jpeg" alt="Slide 1"></div>
<div class="swiper-slide"><img src="https://i.imgur.com/FSYm9Ji.jpeg" alt="Slide 2"></div>
<div class="swiper-slide"><img src="https://i.imgur.com/Q1aFScB.jpeg" alt="Slide 3"></div>
<div class="swiper-slide"><img src="https://i.imgur.com/PJ0iX2C.jpeg" alt="Slide 4"></div>
</div>
</div>
</section>
<section class="featured-categories container" id="Featured">
<h2 class="featured-categories__title">Featured Categories</h2>
<div class="featured-categories__grid">
<a href="#" class="category-box">
<img src="https://i.imgur.com/2uFttri.png" alt="Category 1">
<div class="category-name">
<h3>Games</h3>
</div>
</a>
<a href="#" class="category-box">
<img src="https://i.imgur.com/hi7V9Jj.png" alt="Category 2">
<div class="category-name">
<h3>Consoles</h3>
</div>
</a>
<a href="#" class="category-box">
<img src="https://i.imgur.com/Jvtj8lR.png" alt="Category 3">
<div class="category-name">
<h3>T-shirts</h3>
</div>
</a>
</div>
</section>
</main>
</body>
<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>
</html>
//Mixin for the footter
@mixin respond($breakpoint) {
@if $breakpoint == tab-port {
//900px /16= 56.25
@media only screen and (max-width: 56.25em) {
@content;
}
}
}
// COLORS for page
$primary-color: #1c3a63;
$secondary-color: #ff5733;
$text-color: #faf0e6;
$accent-color: #61b3ff;
$sticky-bg-color: #2c4a7d; // New color for the sticky navigation background
/* Style of entire app */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: "Poppins", sans-serif;
scroll-behavior: smooth;
}
body {
min-height: 100vh;
overflow-x: hidden;
background: linear-gradient($primary-color, $secondary-color);
}
/* Header Nav part */
header {
//We add psoition sticky and background color in order to make sticky navigation
position: sticky;
top: 0;
left: 0;
width: 100%;
padding: 30px 100px;
display: flex;
justify-content: space-between;
align-items: center;
z-index: 100000;
}
nav {
display: flex;
align-items: center;
}
header .logo {
color: #fff;
font-weight: 700;
text-decoration: none;
font-size: 2em;
text-transform: uppercase;
letter-spacing: 2px;
display: flex;
align-items: center;
}
header .logo img {
width: 100px;
height: 100px;
margin-right: 10px;
}
header ul {
display: flex;
justify-content: center;
align-items: center;
}
header ul li {
list-style: none;
margin-left: 20px;
&:first-child {
margin-left: 0;
}
}
header ul li a {
text-decoration: none;
padding: 6px 15px;
color: #fff;
border-radius: 20px;
transition: background-color 0.3s ease, color 0.3s ease;
font-weight: 600; /* Adjust as needed */
text-transform: uppercase; /* If you want all links uppercase */
}
header ul li a:hover,
header ul li a.active {
background: #fff;
color: black;
}
// Menu sliding from the left side of the Website
.close-btn {
position: absolute;
top: 20px;
right: 20px;
font-size: 1.5em;
background: transparent;
border: none;
color: $secondary-color;
cursor: pointer;
transition: color 0.3s ease-in-out;
}
.close-btn:hover {
color: $accent-color;
}
.menu-btn {
background: $secondary-color;
border: none;
color: #fff;
padding: 10px 20px;
font-size: 1.2em;
cursor: pointer;
border-radius: 50px;
transition: background-color 0.3s ease-in-out;
margin-left: 20px;
}
.menu-btn:hover {
background-color: $accent-color;
}
.sliding-menu {
position: fixed;
top: 0;
left: -300px; // The menu is initially hidden on the left side
width: 300px;
height: 100%;
background: $primary-color;
padding: 30px;
display: flex;
flex-direction: column;
justify-content: center;
z-index: 99999;
transition: left 0.3s ease-in-out; // The transition is now applied to the left property
box-shadow: 10px 0 20px rgba(0, 0, 0, 0.2); // The shadow is now on the right side
}
.sliding-menu.active {
left: 0; // The menu slides to the left edge of the screen when active
}
.sliding-menu ul {
display: flex;
flex-direction: column;
align-items: flex-start;
color: $text-color;
}
.sliding-menu ul li {
margin-bottom: 20px;
}
.sliding-menu ul li a {
color: $secondary-color;
font-size: 1.2em;
text-transform: uppercase;
text-decoration: none;
transition: color 0.3s ease-in-out;
}
.sliding-menu ul li a:hover {
color: $accent-color;
}
.sliding-menu.active {
right: 0;
}
//In order for our sticky navigation to get background color when moved:
header.scrolled {
background-color: rgba($sticky-bg-color, 0.5);
}
//Search bar of the navigation
.search-form {
margin-left: 30px;
margin-right: 10px;
}
.search-input {
padding: 10px 20px;
font-size: 1.2em;
border-radius: 25px;
width: 300px; //defaultt length of search bar of 300px
transition: width 0.5s ease-in-out; /* Add a transition for the width property */
}
.search-input:focus {
width: 600px;
outline: none; /* Optional: remove the default browser outline */
}
//Now After finishing the header of the website
//We need to create a container style in order for each section be positioned correctly in the page
//In order to make predetermined size of the section for each section in this page we are going tto create a standard sttyle for each section in the website.
.container {
width: 100%;
max-width: 1700px; /* Increase max-width for larger screens */
margin: 50px auto;
padding: 50px 20px;
}
/* Add media queries for responsiveness */
@media screen and (max-width: 1400px) {
.container {
max-width: 1200px;
}
}
@media screen and (max-width: 1200px) {
.container {
max-width: 960px;
}
}
@media screen and (max-width: 960px) {
.container {
max-width: 720px;
}
}
@media screen and (max-width: 720px) {
.container {
max-width: 540px;
}
}
@media screen and (max-width: 540px) {
.container {
padding: 50px 10px; /* Adjust padding for smaller screens */
}
}
//GALLERY
.gallery {
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(11, 5vw);
grid-gap: 1.5rem;
padding: 1.5rem;
&__item {
&--1 {
grid-row: 1 / 5;
grid-column: 1 / 5;
}
&--2 {
grid-row: 1 / 5;
grid-column: 5 / 9;
}
&--3 {
grid-row: 5 / 8;
grid-column: 1 / 9;
}
&--4 {
grid-row: 8 / 12;
grid-column: 1 / 5;
}
&--5 {
grid-row: 8 / 12;
grid-column: 5 / 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;
}
}
// Top Brands
.top-brands {
text-align: center;
margin-top: 50px;
}
.top-brands__title {
font-size: 2em;
color: $text-color;
margin-bottom: 30px;
}
.top-brands__grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-gap: 20px;
}
.brand-box {
display: flex;
justify-content: center;
align-items: center;
border: none;
padding: 20px;
border-radius: 5px;
transition: all 0.3s;
img {
max-width: 100%;
height: auto;
}
}
.brand-box:hover {
transform: translateY(-10px);
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
}
// Ad Section
.ad-section {
width: 100%;
height: auto;
margin-top: 50px;
margin-bottom: 50px;
.ad-banner {
position: relative;
}
.ad-image {
width: 100%;
height: auto;
max-height: 250px;
object-fit: cover;
}
.ad-text {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
color: #fff;
h3 {
font-size: 2.5em;
font-weight: bold;
margin-bottom: 10px;
}
p {
font-size: 1.5em;
}
}
}
// Carousel
.carousel-section {
margin-top: 50px;
margin-bottom: 50px;
}
.swiper-container {
width: 100%;
height: 700px; // Set the desired height for the carousel
}
.swiper-slide {
display: flex;
justify-content: center;
align-items: center;
overflow: hidden; // Ensure the image doesn't overflow the slide
img {
// Let's use absolute positioning to make the images fill the slides
position: absolute;
top: 50%;
left: 50%;
min-width: 100%;
min-height: 100%;
transform: translate(-50%, -50%);
object-fit: cover;
object-position: center;
}
}
//Featured Categories
.featured-categories {
text-align: center;
margin-top: 50px;
}
.featured-categories__title {
font-size: 2em;
color: $text-color;
margin-bottom: 30px;
}
.featured-categories__grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-gap: 20px;
}
.category-box {
display: flex;
justify-content: center;
align-items: center;
border: none;
padding: 20px;
border-radius: 5px;
transition: all 0.3s;
width: 500px; // Set the desired width
height: 250px; // Set the desired height
overflow: hidden;
position: relative;
img {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 100%;
height: 100%;
object-fit: cover;
}
.category-name {
display: flex;
justify-content: center;
align-items: center;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(
0,
0,
0,
0.5
); // Adjust background color and opacity as needed
color: #fff; // Adjust text color as needed
opacity: 0;
transition: opacity 0.3s;
}
}
.category-box:hover {
transform: translateY(-10px);
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
.category-name {
opacity: 1;
}
}
@media screen and (max-width: 720px) {
.featured-categories__grid {
grid-template-columns: 1fr;
grid-gap: 20px;
}
}
//Footer
.footer {
background-color: black;
padding: 10rem 0;
font-size: 1.4rem;
color: $text-color;
@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 $text-color;
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: black;
background-color: $secondary-color;
text-decoration: none;
text-transform: uppercase;
display: inline-block;
transition: all 0.2s;
}
&:hover,
&:active {
color: $primary-color;
box-shadow: 0 1rem 2rem rgba(black, 0.4);
transform: rotate(5deg) scale(1.3);
}
}
&__copyright {
border-top: 1px solid $primary-color;
padding-top: 2rem;
width: 80%;
float: right;
@include respond(tab-port) {
width: 100%;
float: none;
}
}
}
//Media queries for screen sizes
/* Extra small devices (phones, 600px and down) */
@media only screen and (max-width: 600px) {
body {
font-size: 0.8em; /* Adjust this value as needed */
}
/* Header Nav part */
header {
justify-content: center;
}
header .logo {
font-size: 1em;
}
header .logo img {
width: 50px;
height: 50px;
}
header ul li a {
text-decoration: none;
padding: 3px 7px; /* Adjusted the padding */
color: #fff;
border-radius: 20px;
transition: background-color 0.3s ease, color 0.3s ease;
font-weight: 600;
text-transform: uppercase;
}
// Menu sliding from the left side of the Website
.close-btn {
font-size: 4em;
}
.menu-btn {
padding: 10px 10px;
font-size: 1em;
margin-left: 5px;
}
//Search bar of the navigation
.search-form {
margin-left: 5px;
margin-right: 5px;
}
.search-input {
padding: 3px 10px;
font-size: 1em;
width: 150px; //defaultt length of search bar of 300px
}
.search-input:focus {
width: 200px;
outline: none; /* Optional: remove the default browser outline */
}
}
/* Small devices (portrait tablets and large phones, 600px and up) */
@media only screen and (min-width: 600px) {
body {
font-size: 0.85em;
}
/* Header Nav part */
header {
justify-content: center;
}
header .logo {
font-size: 1em;
}
header .logo img {
width: 50px;
height: 50px;
}
header ul li a {
text-decoration: none;
padding: 3px 7px; /* Adjusted the padding */
color: #fff;
border-radius: 20px;
transition: background-color 0.3s ease, color 0.3s ease;
font-weight: 600;
text-transform: uppercase;
}
// Menu sliding from the left side of the Website
.close-btn {
font-size: 4em;
}
.menu-btn {
padding: 10px 10px;
font-size: 1em;
margin-left: 5px;
}
//Search bar of the navigation
.search-form {
margin-left: 5px;
margin-right: 5px;
}
.search-input {
padding: 3px 10px;
font-size: 1em;
width: 150px; //defaultt length of search bar of 300px
}
.search-input:focus {
width: 250px;
outline: none; /* Optional: remove the default browser outline */
}
//Featured Categories
.featured-categories__grid {
grid-template-columns: 1fr;
justify-items: center;
}
.category-box {
flex-direction: column;
}
}
/* Medium devices (landscape tablets, 768px and up) */
@media only screen and (min-width: 768px) {
body {
font-size: 0.9em;
}
header ul li {
list-style: none;
margin-left: 50px;
margin-right: 50px;
}
}
/* Large devices (laptops/desktops, 992px and up) */
@media only screen and (min-width: 992px) {
body {
font-size: 1em;
}
.category-box {
width: 600px; // increase this value to make the boxes wider
height: 400px;
}
}
/* Extra large devices (large laptops and desktops, 1200px and up) */
@media only screen and (min-width: 1200px) {
/* Style of entire app */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: "Poppins", sans-serif;
scroll-behavior: smooth;
}
body {
min-height: 100vh;
overflow-x: hidden;
background: linear-gradient($primary-color, $secondary-color);
}
/* Header Nav part */
header {
//We add psoition sticky and background color in order to make sticky navigation
position: sticky;
top: 0;
left: 0;
width: 100%;
padding: 30px 100px;
display: flex;
justify-content: space-between;
align-items: center;
z-index: 100000;
}
nav {
display: flex;
align-items: center;
}
header .logo {
color: #fff;
font-weight: 700;
text-decoration: none;
font-size: 2em;
text-transform: uppercase;
letter-spacing: 2px;
display: flex;
align-items: center;
}
header .logo img {
width: 100px;
height: 100px;
margin-right: 10px;
}
header ul {
display: flex;
justify-content: center;
align-items: center;
}
header ul li {
list-style: none;
margin-left: 20px;
&:first-child {
margin-left: 0;
}
}
header ul li a {
text-decoration: none;
padding: 6px 15px;
color: #fff;
border-radius: 20px;
transition: background-color 0.3s ease, color 0.3s ease;
font-weight: 600; /* Adjust as needed */
text-transform: uppercase; /* If you want all links uppercase */
}
header ul li a:hover,
header ul li a.active {
background: #fff;
color: black;
}
// Menu sliding from the left side of the Website
.close-btn {
position: absolute;
top: 20px;
right: 20px;
font-size: 1.5em;
background: transparent;
border: none;
color: $secondary-color;
cursor: pointer;
transition: color 0.3s ease-in-out;
}
.close-btn:hover {
color: $accent-color;
}
.menu-btn {
background: $secondary-color;
border: none;
color: #fff;
padding: 10px 20px;
font-size: 1.2em;
cursor: pointer;
border-radius: 50px;
transition: background-color 0.3s ease-in-out;
margin-left: 20px;
}
.menu-btn:hover {
background-color: $accent-color;
}
.sliding-menu {
position: fixed;
top: 0;
left: -300px; // The menu is initially hidden on the left side
width: 300px;
height: 100%;
background: $primary-color;
padding: 30px;
display: flex;
flex-direction: column;
justify-content: center;
z-index: 99999;
transition: left 0.3s ease-in-out; // The transition is now applied to the left property
box-shadow: 10px 0 20px rgba(0, 0, 0, 0.2); // The shadow is now on the right side
}
.sliding-menu.active {
left: 0; // The menu slides to the left edge of the screen when active
}
.sliding-menu ul {
display: flex;
flex-direction: column;
align-items: flex-start;
color: $text-color;
}
.sliding-menu ul li {
margin-bottom: 20px;
}
.sliding-menu ul li a {
color: $secondary-color;
font-size: 1.2em;
text-transform: uppercase;
text-decoration: none;
transition: color 0.3s ease-in-out;
}
.sliding-menu ul li a:hover {
color: $accent-color;
}
.sliding-menu.active {
right: 0;
}
//In order for our sticky navigation to get background color when moved:
header.scrolled {
background-color: rgba($sticky-bg-color, 0.5);
}
//Search bar of the navigation
.search-form {
margin-left: 30px;
margin-right: 10px;
}
.search-input {
padding: 10px 20px;
font-size: 1.2em;
border-radius: 25px;
width: 300px; //defaultt length of search bar of 300px
transition: width 0.5s ease-in-out; /* Add a transition for the width property */
}
.search-input:focus {
width: 600px;
outline: none; /* Optional: remove the default browser outline */
}
//Now After finishing the header of the website
//We need to create a container style in order for each section be positioned correctly in the page
//In order to make predetermined size of the section for each section in this page we are going tto create a standard sttyle for each section in the website.
.container {
width: 100%;
max-width: 1700px; /* Increase max-width for larger screens */
margin: 50px auto;
padding: 50px 20px;
}
/* Add media queries for responsiveness */
@media screen and (max-width: 1400px) {
.container {
max-width: 1200px;
}
}
@media screen and (max-width: 1200px) {
.container {
max-width: 960px;
}
}
@media screen and (max-width: 960px) {
.container {
max-width: 720px;
}
}
@media screen and (max-width: 720px) {
.container {
max-width: 540px;
}
}
@media screen and (max-width: 540px) {
.container {
padding: 50px 10px; /* Adjust padding for smaller screens */
}
}
//GALLERY
.gallery {
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(11, 5vw);
grid-gap: 1.5rem;
padding: 1.5rem;
&__item {
&--1 {
grid-row: 1 / 5;
grid-column: 1 / 5;
}
&--2 {
grid-row: 1 / 5;
grid-column: 5 / 9;
}
&--3 {
grid-row: 5 / 8;
grid-column: 1 / 9;
}
&--4 {
grid-row: 8 / 12;
grid-column: 1 / 5;
}
&--5 {
grid-row: 8 / 12;
grid-column: 5 / 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;
}
}
// Top Brands
.top-brands {
text-align: center;
margin-top: 50px;
}
.top-brands__title {
font-size: 2em;
color: $text-color;
margin-bottom: 30px;
}
.top-brands__grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-gap: 20px;
}
.brand-box {
display: flex;
justify-content: center;
align-items: center;
border: none;
padding: 20px;
border-radius: 5px;
transition: all 0.3s;
img {
max-width: 100%;
height: auto;
}
}
.brand-box:hover {
transform: translateY(-10px);
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
}
// Ad Section
.ad-section {
width: 100%;
height: auto;
margin-top: 50px;
margin-bottom: 50px;
.ad-banner {
position: relative;
}
.ad-image {
width: 100%;
height: auto;
max-height: 250px;
object-fit: cover;
}
.ad-text {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
color: #fff;
h3 {
font-size: 2.5em;
font-weight: bold;
margin-bottom: 10px;
}
p {
font-size: 1.5em;
}
}
}
// Carousel
.carousel-section {
margin-top: 50px;
margin-bottom: 50px;
}
.swiper-container {
width: 100%;
height: 700px; // Set the desired height for the carousel
}
.swiper-slide {
display: flex;
justify-content: center;
align-items: center;
overflow: hidden; // Ensure the image doesn't overflow the slide
img {
// Let's use absolute positioning to make the images fill the slides
position: absolute;
top: 50%;
left: 50%;
min-width: 100%;
min-height: 100%;
transform: translate(-50%, -50%);
object-fit: cover;
object-position: center;
}
}
//Featured Categories
.featured-categories {
text-align: center;
margin-top: 50px;
}
.featured-categories__title {
font-size: 2em;
color: $text-color;
margin-bottom: 30px;
}
.featured-categories__grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-gap: 20px;
}
.category-box {
display: flex;
justify-content: center;
align-items: center;
border: none;
padding: 20px;
border-radius: 5px;
transition: all 0.3s;
width: 500px; // Set the desired width
height: 250px; // Set the desired height
overflow: hidden;
position: relative;
img {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 100%;
height: 100%;
object-fit: cover;
}
.category-name {
display: flex;
justify-content: center;
align-items: center;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(
0,
0,
0,
0.5
); // Adjust background color and opacity as needed
color: #fff; // Adjust text color as needed
opacity: 0;
transition: opacity 0.3s;
}
}
.category-box:hover {
transform: translateY(-10px);
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
.category-name {
opacity: 1;
}
}
@media screen and (max-width: 720px) {
.featured-categories__grid {
grid-template-columns: 1fr;
grid-gap: 20px;
}
}
//Footer
.footer {
background-color: black;
padding: 10rem 0;
font-size: 1.4rem;
color: $text-color;
@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 $text-color;
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: black;
background-color: $secondary-color;
text-decoration: none;
text-transform: uppercase;
display: inline-block;
transition: all 0.2s;
}
&:hover,
&:active {
color: $primary-color;
box-shadow: 0 1rem 2rem rgba(black, 0.4);
transform: rotate(5deg) scale(1.3);
}
}
&__copyright {
border-top: 1px solid $primary-color;
padding-top: 2rem;
width: 80%;
float: right;
@include respond(tab-port) {
width: 100%;
float: none;
}
}
}
}
View Compiled
// Sliding menu
const menuBtn = document.querySelector(".menu-btn");
const closeBtn = document.querySelector(".close-btn");
const slidingMenu = document.querySelector(".sliding-menu");
menuBtn.addEventListener("click", function () {
slidingMenu.classList.toggle("active");
});
closeBtn.addEventListener("click", function () {
slidingMenu.classList.toggle("active");
});
//Sticky navigation for background changing when scrolling through page
const header = document.querySelector("header");
const headerOriginalPosition = header.offsetTop;
function checkHeaderPosition() {
if (window.pageYOffset > headerOriginalPosition) {
header.classList.add("scrolled");
} else {
header.classList.remove("scrolled");
}
}
window.addEventListener("scroll", checkHeaderPosition);
//Carousel functionality
// Initialize Swiper for the carousel
const professionalCarousel = new Swiper('.swiper-container', {
slidesPerView: 1,
spaceBetween: 10,
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
pagination: {
el: '.swiper-pagination',
clickable: true,
},
autoplay: {
delay: 3000, // Time delay between transitions in milliseconds
disableOnInteraction: false, // Continues autoplay after user interactions
},
loop: true, // Enables continuous loop mode
});
document.addEventListener('DOMContentLoaded', function() {
// Initialize Swiper
const swiper = new Swiper('.swiper-container', {
slidesPerView: 1,
spaceBetween: 10,
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
});
});
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.