[Lab - Javascript] - Một ví dụ về cách tạo FULL PAGE SLIDER với css và javascript

Nội dung bài viết

Video học lập trình mỗi ngày

Đây có lẽ là một trong những giao diện của những blog được sử dụng nhiều và rất phổ biến để phát triển một blog. Với css và javascript giúp page nhẹ nhàng nhưng đầy sự quyến rũ. Với những dạng FULL PAGE SLIDER như thế này thì việc giúp người đọc sẽ tập trung hơn so với các giao diện khác.

Các bạn theo dõi những hướng dẫn dưới đây.

See demo: Here 


HTML:

<div class="slider">
        <div class="slide slide-1">
            <div class="slide-bg"></div>
            <div class="slide-content">
                <div class="slide-image">
                    <img src="https://i.ibb.co/bJPWHHp/powerpuff-girls-56a00bc45f9b58eba4aea61d.jpg">
                </div>
                <div class="slide-text">
                    <p>
                        So Good!
                    </p>
                </div>
            </div>
        </div>
        <div class="slide slide-2">
            <div class="slide-bg"></div>
            <div class="slide-content">
                <div class="slide-image">
                    <img src="https://i.ibb.co/MkSbTjV/juul-monster-0.jpg">
                </div>
                <div class="slide-text">
                    <p>
                         So Great!
                    </p>
                </div>
            </div>
        </div>
        <div class="slide slide-3">
            <div class="slide-bg"></div>
            <div class="slide-content">
                <div class="slide-image">
                    <img src="https://i.ibb.co/FwnvDsz/maxresdefault.jpg">
                </div>
                <div class="slide-text">
                    <p>
                        So Okay!
                    </p>
                </div>
            </div>
        </div>
    </div>
    <div class="slider-controls">
        <button type="button" class="btn-slide-previous" onclick="previousSlide()">&amp;#10094</button>
        <button type="button" class="btn-slide-next" onclick="nextSlide()">&amp;#10095</button>
    </div>


CSS: 

See demo: Here 

* {
    font-family: sans-serif;
}

body {
    margin: 0;
}

.slider {
    width: 100%;
    height: 100vh;
}

.slide {
    width: 100%;
    height: 0;
    display: flex;
    visibility: hidden;
    overflow: hidden;
}

.slide.active {
    display: flex;
    height: 100%;
    visibility: visible
}

.slide-bg {
    height: 100%;
    clip-path: polygon(0 0, 0 90%, 150% 0%);
    z-index: 1;
    position: absolute;
    top: -100%;
    width: 100%;
}

.slide.active>.slide-bg {
    top: 0;

    -webkit-transition: all 1s ease;
    -moz-transition: all 1s ease;
    -ms-transition: all 1s ease;
    -o-transition: all 1s ease;
    transition: all 1s ease;
}

.slide-image>img {
    z-index: 2;
    opacity: 0;
}

.slide.active .slide-image>img {

    opacity: 1;

    -webkit-transition: opacity 2ss ease-in;
    -moz-transition: opacity 2s ease-in;
    -ms-transition: opacity 2s ease-in;
    -o-transition: opacity 2s ease-in;
    transition: opacity 2s ease-in;
}


.slide-image>img {
    max-height: 100%;
    max-width: 100%;
    z-index: 1;
}

.slide-content {
    max-width: 900px;
    max-height: 90%;
    margin: auto;
    z-index: 2;
    position: relative;
    padding-left: 150px;
}

.slide-image-bg {
    width: 0;
    height: 100%;
    position: absolute;
    top: 0;
    z-index: 1
}

.slide.active .slide-image-bg {
    width: 100%;
    -webkit-transition: all 1s ease;
    -moz-transition: all 1s ease;
    -ms-transition: all 1s ease;
    -o-transition: all 1s ease;
    transition: all 1s ease;
}

.slide-text {
    background-color: #fff;
    padding: 1em 2em;
    position: absolute;
    top: 40%;
    left: -100%;
    z-index: 3;
    width: 250px;
    box-shadow: 1px 1px 10px 0px rgba(0, 0, 0, 0.2);
    text-align: justify;
}

.slide.active .slide-text {
    left: 0;

    -webkit-transition: all 2s ease;
    -moz-transition: all 2s ease;
    -ms-transition: all 2s ease;
    -o-transition: all 2s ease;
    transition: all 2s ease;
}

.slide-1 .slide-text {
    border-left: 10px solid darkslategray;
}

.slide-1 .slide-bg {
    background-color: cadetblue;
}

.slide-2 .slide-text {
    border-left: 10px solid burlywood;
}

.slide-2 .slide-bg {
    background-color: antiquewhite;
}

.slide-3 .slide-text {
    border-left: 10px solid darkslateblue;
}

.slide-3 .slide-bg {
    background-color: deepskyblue;
}

.slider-controls {
    position: absolute;
    z-index: 5;
    bottom: 25px;
    right: 25px;
}

.btn-slide-next,
.btn-slide-previous {
    cursor: pointer;
    width: 60px;
    height: 50px;
    color: #000;
    font-weight: bold;
    font-size: 20px;
    transition: 0.6s ease;
    user-select: none;
    background-color: #fff;
    border: 1px solid #000;

}

.btn-slide-previous:hover,
.btn-slide-next:hover {
    background-color: #000;
    border: 1px solid #fff;
    color: #fff;
}


Javascript

document.addEventListener("DOMContentLoaded", function() {
        setTimeout(function() {
            document.querySelector(".slide").classList.add("active");
        }, 500)
    });

    function nextSlide() {
        let currSlide = document.querySelector(".slide.active"),
            nextSlide = currSlide.nextElementSibling;

        currSlide.classList.remove("active");
        if (nextSlide) {
            nextSlide.classList.add("active");
        } else {
            document.querySelectorAll(".slide")[0].classList.add("active");
        }
    }

    function previousSlide() {
        let currSlide = document.querySelector(".slide.active"),
            prevSlide = currSlide.previousElementSibling,
            slideCount = document.querySelectorAll(".slide").length;

        currSlide.classList.remove("active");
        if (prevSlide) {
            prevSlide.classList.add("active");
        } else {
            document.querySelectorAll(".slide")[slideCount - 1].classList.add("active");
        }
    }


See demo: Here 

Kết Luận: Sau ví dụ trên các bạn sẽ có thêm nhiều sự lựa chọn trong việc đi tìm những ý tưởng về FULL SLIDER.
Cảm ơn các bạn đã theo dõi.

FANFB: https://fb.com/tipjs

Ref-Srouce: https://www.florin-pop.com/

Có thể bạn đã bị missing