Home >Web Front-end >CSS Tutorial >A Full-screen Bootstrap Carousel with Random Initial Image
This article demonstrates building two simple Bootstrap carousel extensions: a full-screen slideshow and a carousel with a randomized initial slide. We'll start with a basic carousel and then enhance it.
Key Concepts:
Building the Basic Carousel:
Bootstrap provides the core carousel structure. Each image includes a data-color
attribute for fallback background color if image loading fails:
<code class="language-html"><div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel"> <ol class="carousel-indicators"> <li data-target="https://www.php.cn/link/de1d5674932fce63c24dc80f6f1ffe9f" data-slide-to="0"> <li data-target="https://www.php.cn/link/de1d5674932fce63c24dc80f6f1ffe9f" data-slide-to="1"> <li data-target="https://www.php.cn/link/de1d5674932fce63c24dc80f6f1ffe9f" data-slide-to="2"> </ol> <div class="carousel-inner"> <div class="carousel-item"> <img src="https://img.php.cn/upload/article/000/000/000/173958517524890.jpg" alt="A Full-screen Bootstrap Carousel with Random Initial Image "> <div class="carousel-caption d-none d-md-block"> <h5>First Image</h5> </div> </div> <div class="carousel-item"> <!-- ... more slides ... --> </div> <div class="carousel-item"> <!-- ... more slides ... --> </div> </div> <a class="carousel-control-prev" href="https://www.php.cn/link/de1d5674932fce63c24dc80f6f1ffe9f" role="button" data-slide="prev"> <span class="carousel-control-prev-icon" aria-hidden="true"></span> <span class="sr-only">Previous</span> </a> <a class="carousel-control-next" href="https://www.php.cn/link/de1d5674932fce63c24dc80f6f1ffe9f" role="button" data-slide="next"> <span class="carousel-control-next-icon" aria-hidden="true"></span> <span class="sr-only">Next</span> </a> </div></code>
JavaScript initializes the carousel, setting the interval and disabling pausing:
<code class="language-javascript">$('.carousel').carousel({ interval: 6000, pause: false });</code>
Creating a Full-Screen Slideshow:
This enhancement uses custom jQuery:
<code class="language-javascript">let $item = $('.carousel-item'); let $wHeight = $(window).height(); $item.height($wHeight); $item.addClass('full-screen'); $('.carousel img').each(function() { let $src = $(this).attr('src'); let $color = $(this).attr('data-color'); $(this).parent().css({ 'background-image': 'url(' + $src + ')', 'background-color': $color }); $(this).remove(); }); $(window).on('resize', function() { $wHeight = $(window).height(); $item.height($wHeight); });</code>
And CSS:
<code class="language-css">.full-screen { background-size: cover; background-position: center; background-repeat: no-repeat; }</code>
This code iterates through images, sets background images and colors on their parent containers, removes the <img alt="A Full-screen Bootstrap Carousel with Random Initial Image" >
elements (as backgrounds are now used), and adjusts heights on window resize. The initial slide's active
class is added via jQuery for smoother transitions.
Randomizing the Initial Slide:
To display a random slide on load, remove the hardcoded active
class from the HTML and add this jQuery:
<code class="language-javascript">let $numberOfSlides = $('.carousel-item').length; let $currentSlide = Math.floor(Math.random() * $numberOfSlides); $('.carousel-indicators li').each(function() { let $slideValue = $(this).attr('data-slide-to'); if ($currentSlide == $slideValue) { $(this).addClass('active'); $item.eq($slideValue).addClass('active'); } else { $(this).removeClass('active'); $item.eq($slideValue).removeClass('active'); } });</code>
This code selects a random slide and applies the active
class to both the corresponding slide and indicator.
Further Customization Ideas:
slide.bs.carousel
event.This enhanced approach provides more dynamic and engaging carousels. Remember to include the necessary Bootstrap CSS and JavaScript files.
The above is the detailed content of A Full-screen Bootstrap Carousel with Random Initial Image. For more information, please follow other related articles on the PHP Chinese website!