Reputation: 547
I am a beginner and I am learning JavaScript.
I am using JavaScript to add some Bootstrap classes when the screen size is less than or equal to 576px.
I have written JavaScript code and it is adding the required classes only after reloading the webpage.
My Code:
var sliderOne = document.getElementById('slider-1');
var sliderTwo = document.getElementById('slider-2');
var sliderThree = document.getElementById('slider-3');
// Adding ".d-flex .flex-column-reverse .text-center" classes to the Carousel
var x = document.documentElement.clientWidth
if (x <= 576) {
sliderOne.classList.add('d-flex', 'flex-column-reverse', 'text-center')
sliderTwo.classList.add('d-flex', 'flex-column-reverse', 'text-center')
sliderThree.classList.add('d-flex', 'flex-column-reverse', 'text-center')
} else {
sliderOne.classList.remove('d-flex', 'flex-column-reverse', 'text-center')
sliderTwo.classList.remove('d-flex', 'flex-column-reverse', 'text-center')
sliderThree.classList.remove('d-flex', 'flex-column-reverse', 'text-center')
}
.carousel-bg {
background-color: #fceae8;
}
.price {
color: #ff136f;
}
.buy-now {
background: linear-gradient(to bottom, #ff589b 0%, #ff136f 100%);
color: #fff;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Module 09 - Panda Ecommerce usign Bootstrap</title>
<!-- Bootstrap CSS CDN -->
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<!-- My Custom CSS Link -->
<link rel="stylesheet" href="./style.css">
</head>
<body>
<div class="container mb-5 p-0">
<div id="carouselExampleIndicators" class="carousel slide carousel-bg" data-bs-ride="carousel">
<div class="carousel-indicators">
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="0" class="active"
aria-current="true" aria-label="Slide 1"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="1"
aria-label="Slide 2"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="2"
aria-label="Slide 3"></button>
</div>
<div class="carousel-inner p-5">
<div class="carousel-item active">
<div class="row align-items-center" id="slider-1">
<div class="col-md-7">
<h1>Heavy Bass Bluetooth Headphone</h1>
<p>Lorem ipsum dolor, sit amet consectetur adipisicing elit. Blanditiis aperiam in adipisci
minima debitis non molestias, quasi voluptatibus repellat ipsa.</p>
<h1 class="price">$259.99</h1>
<button class="btn buy-now">Buy Now</button>
</div>
<div class="col-md-5">
<img src="https://res.cloudinary.com/djz3p8sux/image/upload/v1627756485/StackOverflow/headphone_bfi8ip.png" class="d-block w-100" alt="...">
</div>
</div>
</div>
<div class="carousel-item">
<div class="row align-items-center" id="slider-2">
<div class="col-md-7">
<h1>4k Ultra HD Wide Angle Smart TV</h1>
<p>Lorem ipsum dolor, sit amet consectetur adipisicing elit. Blanditiis aperiam in adipisci
minima debitis non molestias, quasi voluptatibus repellat ipsa.</p>
<h1 class="price">$1299.99</h1>
<button class="btn buy-now">Buy Now</button>
</div>
<div class="col-md-5">
<img src="https://res.cloudinary.com/djz3p8sux/image/upload/v1627756484/StackOverflow/tv_dx8zzr.png" class="d-block w-100" alt="...">
</div>
</div>
</div>
<div class="carousel-item">
<div class="row align-items-center" id="slider-3">
<div class="col-md-7">
<h1>Xbox - Supreme Gaming Experience</h1>
<p>Lorem ipsum dolor, sit amet consectetur adipisicing elit. Blanditiis aperiam in adipisci
minima debitis non molestias, quasi voluptatibus repellat ipsa.</p>
<h1 class="price">$849.99</h1>
<button class="btn buy-now">Buy Now</button>
</div>
<div class="col-md-5">
<img src="https://res.cloudinary.com/djz3p8sux/image/upload/v1627756484/StackOverflow/xbox_iat1yy.png" class="d-block w-100" alt="...">
</div>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"
integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
crossorigin="anonymous"></script>
<!-- JavaScript -->
<script src="./main.js"></script>
</body>
</html>
I am using #slider-1
, #slider-2
, #slider-3
these id to add the bootstrap classes.
Please have a look over them and help me to solve the problem.
Thank you.
Upvotes: 0
Views: 47
Reputation:
window.addEventListener("resize", () => {})
To learn more about events:
https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events
Upvotes: 1
Reputation: 32002
Add a resize
event listener to the window:
var sliderOne = document.getElementById('slider-1');
var sliderTwo = document.getElementById('slider-2');
var sliderThree = document.getElementById('slider-3');
// Adding ".d-flex .flex-column-reverse .text-center" classes to the Carousel
function updateAccordingToScreenWidth() {
var x = document.documentElement.clientWidth
if (x <= 576) {
sliderOne.classList.add('d-flex', 'flex-column-reverse', 'text-center')
sliderTwo.classList.add('d-flex', 'flex-column-reverse', 'text-center')
sliderThree.classList.add('d-flex', 'flex-column-reverse', 'text-center')
} else {
sliderOne.classList.remove('d-flex', 'flex-column-reverse', 'text-center')
sliderTwo.classList.remove('d-flex', 'flex-column-reverse', 'text-center')
sliderThree.classList.remove('d-flex', 'flex-column-reverse', 'text-center')
}
}
updateAccordingToScreenWidth();
window.addEventListener('resize', updateAccordingToScreenWidth);
.carousel-bg {
background-color: #fceae8;
}
.price {
color: #ff136f;
}
.buy-now {
background: linear-gradient(to bottom, #ff589b 0%, #ff136f 100%);
color: #fff;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Module 09 - Panda Ecommerce usign Bootstrap</title>
<!-- Bootstrap CSS CDN -->
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<!-- My Custom CSS Link -->
<link rel="stylesheet" href="./style.css">
</head>
<body>
<div class="container mb-5 p-0">
<div id="carouselExampleIndicators" class="carousel slide carousel-bg" data-bs-ride="carousel">
<div class="carousel-indicators">
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="1" aria-label="Slide 2"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="2" aria-label="Slide 3"></button>
</div>
<div class="carousel-inner p-5">
<div class="carousel-item active">
<div class="row align-items-center" id="slider-1">
<div class="col-md-7">
<h1>Heavy Bass Bluetooth Headphone</h1>
<p>Lorem ipsum dolor, sit amet consectetur adipisicing elit. Blanditiis aperiam in adipisci minima debitis non molestias, quasi voluptatibus repellat ipsa.</p>
<h1 class="price">$259.99</h1>
<button class="btn buy-now">Buy Now</button>
</div>
<div class="col-md-5">
<img src="https://res.cloudinary.com/djz3p8sux/image/upload/v1627756485/StackOverflow/headphone_bfi8ip.png" class="d-block w-100" alt="...">
</div>
</div>
</div>
<div class="carousel-item">
<div class="row align-items-center" id="slider-2">
<div class="col-md-7">
<h1>4k Ultra HD Wide Angle Smart TV</h1>
<p>Lorem ipsum dolor, sit amet consectetur adipisicing elit. Blanditiis aperiam in adipisci minima debitis non molestias, quasi voluptatibus repellat ipsa.</p>
<h1 class="price">$1299.99</h1>
<button class="btn buy-now">Buy Now</button>
</div>
<div class="col-md-5">
<img src="https://res.cloudinary.com/djz3p8sux/image/upload/v1627756484/StackOverflow/tv_dx8zzr.png" class="d-block w-100" alt="...">
</div>
</div>
</div>
<div class="carousel-item">
<div class="row align-items-center" id="slider-3">
<div class="col-md-7">
<h1>Xbox - Supreme Gaming Experience</h1>
<p>Lorem ipsum dolor, sit amet consectetur adipisicing elit. Blanditiis aperiam in adipisci minima debitis non molestias, quasi voluptatibus repellat ipsa.</p>
<h1 class="price">$849.99</h1>
<button class="btn buy-now">Buy Now</button>
</div>
<div class="col-md-5">
<img src="https://res.cloudinary.com/djz3p8sux/image/upload/v1627756484/StackOverflow/xbox_iat1yy.png" class="d-block w-100" alt="...">
</div>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
<!-- JavaScript -->
<script src="./main.js"></script>
</body>
</html>
Upvotes: 1
Reputation: 4419
You can add a resize
event listener to re-evaluate the code when the page is resized.
This is how you attach the event listener:
window.addEventListener("resize", () => {})
And this is what it looks like in your code:
var sliderOne = document.getElementById('slider-1');
var sliderTwo = document.getElementById('slider-2');
var sliderThree = document.getElementById('slider-3');
// Adding ".d-flex .flex-column-reverse .text-center" classes to the Carousel
window.addEventListener("resize", () => {
var x = document.documentElement.clientWidth
if (x <= 576) {
sliderOne.classList.add('d-flex', 'flex-column-reverse', 'text-center')
sliderTwo.classList.add('d-flex', 'flex-column-reverse', 'text-center')
sliderThree.classList.add('d-flex', 'flex-column-reverse', 'text-center')
} else {
sliderOne.classList.remove('d-flex', 'flex-column-reverse', 'text-center')
sliderTwo.classList.remove('d-flex', 'flex-column-reverse', 'text-center')
sliderThree.classList.remove('d-flex', 'flex-column-reverse', 'text-center')
}
})
.carousel-bg {
background-color: #fceae8;
}
.price {
color: #ff136f;
}
.buy-now {
background: linear-gradient(to bottom, #ff589b 0%, #ff136f 100%);
color: #fff;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Module 09 - Panda Ecommerce usign Bootstrap</title>
<!-- Bootstrap CSS CDN -->
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<!-- My Custom CSS Link -->
<link rel="stylesheet" href="./style.css">
</head>
<body>
<div class="container mb-5 p-0">
<div id="carouselExampleIndicators" class="carousel slide carousel-bg" data-bs-ride="carousel">
<div class="carousel-indicators">
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="1" aria-label="Slide 2"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="2" aria-label="Slide 3"></button>
</div>
<div class="carousel-inner p-5">
<div class="carousel-item active">
<div class="row align-items-center" id="slider-1">
<div class="col-md-7">
<h1>Heavy Bass Bluetooth Headphone</h1>
<p>Lorem ipsum dolor, sit amet consectetur adipisicing elit. Blanditiis aperiam in adipisci minima debitis non molestias, quasi voluptatibus repellat ipsa.</p>
<h1 class="price">$259.99</h1>
<button class="btn buy-now">Buy Now</button>
</div>
<div class="col-md-5">
<img src="https://res.cloudinary.com/djz3p8sux/image/upload/v1627756485/StackOverflow/headphone_bfi8ip.png" class="d-block w-100" alt="...">
</div>
</div>
</div>
<div class="carousel-item">
<div class="row align-items-center" id="slider-2">
<div class="col-md-7">
<h1>4k Ultra HD Wide Angle Smart TV</h1>
<p>Lorem ipsum dolor, sit amet consectetur adipisicing elit. Blanditiis aperiam in adipisci minima debitis non molestias, quasi voluptatibus repellat ipsa.</p>
<h1 class="price">$1299.99</h1>
<button class="btn buy-now">Buy Now</button>
</div>
<div class="col-md-5">
<img src="https://res.cloudinary.com/djz3p8sux/image/upload/v1627756484/StackOverflow/tv_dx8zzr.png" class="d-block w-100" alt="...">
</div>
</div>
</div>
<div class="carousel-item">
<div class="row align-items-center" id="slider-3">
<div class="col-md-7">
<h1>Xbox - Supreme Gaming Experience</h1>
<p>Lorem ipsum dolor, sit amet consectetur adipisicing elit. Blanditiis aperiam in adipisci minima debitis non molestias, quasi voluptatibus repellat ipsa.</p>
<h1 class="price">$849.99</h1>
<button class="btn buy-now">Buy Now</button>
</div>
<div class="col-md-5">
<img src="https://res.cloudinary.com/djz3p8sux/image/upload/v1627756484/StackOverflow/xbox_iat1yy.png" class="d-block w-100" alt="...">
</div>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
<!-- JavaScript -->
<script src="./main.js"></script>
</body>
</html>
Upvotes: 1