½ÃÀÛÆäÀÌÁö·Î Áñ°Üã±âÃß°¡
·Î±×ÀÎ
ȸ¿ø°¡ÀÔ l Ã⼮üũ l ¸¶ÀÌÆäÀÌÁö l CGIMALL
¹ÝÀÀÇüÀÌ Áö¿øµÇ´Â À̹ÌÁö ½½¶óÀ̵å Responsive Image Slider : happycgi
ÀÚ·á½Ç »çÀÌÆ®µî·Ï ·©Å·100 ÇÁ·Î±×·¥¸®ºä °ü¸®ÀÚÃßõÀÚ·á Ãʺ¸°¡À̵å
Ä¿¹Â´ÏƼ
Àüü ÆîÃ帱â
Äü¸Þ´º¸µÅ© jquery , CSS , PHP , Javascript , ¹«·áÆùÆ® , ASP
»ó¼¼°Ë»ö
Ȩ > CSS > À̹ÌÁö > ¹ÝÀÀÇüÀÌ Áö¿øµÇ´Â À̹ÌÁö ½½¶óÀ̵å Responsive Image Slider »ó¼¼Á¤º¸
»çÀÌÆ®µî·Ï
Ŭ¶ó¿ìµåű×
javascript
HTML
PHP
CSS
Api
ASP
mysql
2022
Slide
jquery
¸ÞÀϸµ
¸ðµâ
°¶·¯¸®
ÇöÀçÁ¢¼ÓÀÚ ¸í »õ·Î°íħ
¹ÝÀÀÇüÀÌ Áö¿øµÇ´Â À̹ÌÁö ½½¶óÀ̵å Responsive Image Slider
¼Ò½ºÅë°èÁ¤º¸ ¿À·ù½Å°í ¹× ¹®ÀÇ
ÇØÇÇÆÀ
³×ƼÁð
Æ®À§ÅÍ·Î º¸³»±â ÆäÀ̽ººÏÀ¸·Î º¸³»±â
¼Ò½ººÐ·ù À̹ÌÁö
´Ù¿î·Îµå Ƚ¼ö 0 ȸ
°£´Ü¼³¸í ¹ÝÀÀÇüÀÌ Áö¿øµÇ´Â À̹ÌÁö ½½¶óÀ̵åÀÔ´Ï´Ù. µð¹ÙÀ̽º ȯ°æ¿¡ µû¶ó ½½¶óÀ̵åÀÇ Å©±â°¡ º¯°æµË´Ï´Ù.
Æò°¡Çϱâ ÈǸ¢ÇÔ ¸Å¿ìÁÁÀ½ ÁÁÀ½ ±¦ÂúÀ½ º¸Åë º°·Î
ȨÆäÀÌÁö¹Ù·Î°¡±â ¼Ò½º´Ù¿î·Îµå µ¥¸ð ¹Ì¸®º¸±â ½ºÅ©·¦Çϱâ



¹ÝÀÀÇüÀÌ Áö¿øµÇ´Â À̹ÌÁö ½½¶óÀ̵åÀÔ´Ï´Ù.

µð¹ÙÀ̽º ȯ°æ¿¡ µû¶ó ½½¶óÀ̵åÀÇ Å©±â°¡ º¯°æµË´Ï´Ù.
 



HTML ±¸Á¶

<div class="image-slider">

    <section class="slider__content">

        <button type="button" class="slider-control--button prev-button">

            <svg width="16" height="16" fill="currentColor" class="icon arrow-left-circle" viewBox="0 0 16 16">

                <path fill-rule="evenodd" d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-4.5-.5a.5.5 0 0 1 0 1H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5z" />

            </svg>

        </button>

        <main class="image-display"></main>

        <button type="button" class="slider-control--button next-button">

            <svg width="16" height="16" fill="currentColor" class="icon arrow-right-circle" viewBox="0 0 16 16">

                <path fill-rule="evenodd" d="M1 8a7 7 0 1 0 14 0A7 7 0 0 0 1 8m15 0A8 8 0 1 1 0 8a8 8 0 0 1 16 0M4.5 7.5a.5.5 0 0 0 0 1h5.793l-2.147 2.146a.5.5 0 0 0 .708.708l3-3a.5.5 0 0 0 0-.708l-3-3a.5.5 0 1 0-.708.708L10.293 7.5z" />

            </svg>

        </button>

    </section>

    <nav class="slider-navigation">

        <button class="nav-button" aria-selected="true">

            <img class="thumbnail" src="https://picsum.photos/800/400?random=1" alt="Thumbnail 1" />

        </button>

        <button class="nav-button" aria-selected="false">

            <img class="thumbnail" src="https://picsum.photos/800/400?random=2" alt="Thumbnail 2" />

        </button>

        <button class="nav-button" aria-selected="false">

            <img class="thumbnail" src="https://picsum.photos/800/400?random=3" alt="Thumbnail 3" />

        </button>

        <button class="nav-button" aria-selected="false">

            <img class="thumbnail" src="https://picsum.photos/800/400?random=4" alt="Thumbnail 4" />

        </button>

        <button class="nav-button" aria-selected="false">

            <img class="thumbnail" src="https://picsum.photos/800/400?random=5" alt="Thumbnail 5" />

        </button>

        <button class="nav-button" aria-selected="false">

            <img class="thumbnail" src="https://picsum.photos/800/400?random=6" alt="Thumbnail 6" />

        </button>

    </nav>

</div>



CSS ¼Ò½º

*,

*::after,

*::before {

    margin: 0;

    padding: 0;

    box-sizing: border-box;

}


:root {

    --active-color: hsl(204 100 53);

    --bg-color: #e1e3e5;

    --icon-default: hsl(203 5 75);

    --icon-accent: hsl(203 15 98);

    --navigation-color: hsl(203 5 25 / 0.3);

}


body {

    min-block-size: 100vh;

    display: flex;

    justify-content: center;

    align-items: center;

    background-color: var(--bg-color);

}


.image-slider {

    display: flex;

    flex-flow: column;

    width: clamp(360px, 96vw, 830px);

    aspect-ratio: 16 / 9;

    min-height: 300px;

    overflow: hidden;

    border-radius: 8px;

    container-type: inline-size;

    contain: content;

    background-color: #0006;

    box-shadow: rgba(0, 0, 0, 0.2) 0px 1px 2px, rgba(0, 0, 0, 0.3) 0px 2px 4px,

        rgba(0, 0, 0, 0.25) 0px 4px 8px, rgba(0, 0, 0, 0.2) 0px 8px 16px,

        rgba(0, 0, 0, 0.15) 0px 16px 32px;

}


.slider__content {

    flex-grow: 1;

    display: flex;

    justify-content: space-between;

}


.slider-control--button {

    border: 0;

    background: 0;

    outline: 0;

    cursor: pointer;

    place-content: center;

    padding-inline: 3vw;

    z-index: 1;

    display: grid;

}


.icon {

    height: 2rem;

    width: 2rem;

    fill: var(--icon-default);

    border-radius: 50%;

}


.slider-control--button:where(:hover) {

    background-image: linear-gradient(

        to var(--position),

        #0000 0%,

        #0002,

        80%,

        #0006 100%

    );

    .icon {

        fill: var(--icon-accent);

        background: #0001;

    }

}


.slider-control--button:active {

    outline: 0.2em solid hsl(204 100 53);

    outline-offset: -0.5em;

}


.prev-button {

    --position: left;

}

.next-button {

    --position: right;

}

.
.
.


JS ¼Ò½º

class Slider {

    constructor(slider) {

        this.slider = slider;

        this.display = slider.querySelector(".image-display");

        this.navButtons = Array.from(slider.querySelectorAll(".nav-button"));

        this.prevButton = slider.querySelector(".prev-button");

        this.nextButton = slider.querySelector(".next-button");

        this.sliderNavigation = slider.querySelector(".slider-navigation");

        this.currentSlideIndex = 0;

        this.preloadedImages = {};


        this.initialize();

    }


    initialize() {

        this.setupSlider();

        this.preloadImages();

        this.eventListeners();

    }


    setupSlider() {

        this.showSlide(this.currentSlideIndex);

    }


    showSlide(index) {

        this.currentSlideIndex = index;

        const navButtonImg = this.navButtons[

            this.currentSlideIndex

        ].querySelector("img");

        if (navButtonImg) {

            const imgClone = navButtonImg.cloneNode();

            this.display.replaceChildren(imgClone);

        }

        this.updateNavButtons();

    }


    updateNavButtons() {

        this.navButtons.forEach((button, buttonIndex) => {

            const isSelected = buttonIndex === this.currentSlideIndex;

            button.setAttribute("aria-selected", isSelected);

            if (isSelected) button.focus();

        });

    }


    preloadImages() {

        this.navButtons.forEach((button) => {

            const imgElement = button.querySelector("img");

            if (imgElement) {

                const imgSrc = imgElement.src;

                if (!this.preloadedImages[imgSrc]) {

                    this.preloadedImages[imgSrc] = new Image();

                    this.preloadedImages[imgSrc].src = imgSrc;

                }

            }

        });

    }


    eventListeners() {

        document.addEventListener("keydown", (event) => {

            this.handleAction(event.key);

        });


        this.sliderNavigation.addEventListener("click", (event) => {

            const targetButton = event.target.closest(".nav-button");

            const index = targetButton

                ? this.navButtons.indexOf(targetButton)

                : -1;

            if (index !== -1) {

                this.showSlide(index);

            }

        });


        this.prevButton.addEventListener("click", () =>

            this.handleAction("prev")

        );

        this.nextButton.addEventListener("click", () =>

            this.handleAction("next")

        );

    }

.
.
.

 


÷ºÎÆÄÀÏÀ» ´Ù¿î·ÎµåÇϰųª ÇØ´ç »çÀÌÆ®·Î À̵¿ÇÏ¿© Àüü ¼Ò½º¸¦ È®ÀÎÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.


³×ƼÁð ÀÇ°ß   ÀÌ¿ëÇϽŠÀÚ·áÀÇ Èı⸦ ÀÚÀ¯·Ó°Ô ÀÛ¼ºÇϼ¼¿ä. (»ó¾÷ÀûÀÎ ±¤°í ¹× µµ¹è¼º ±Û µîÀº »çÀüÅ뺸¾øÀÌ »èÁ¦µÉ ¼ö ÀÖ½À´Ï´Ù.)
³»¿ë ¾ÆÀ̵ð Àǰ߳²±â±â
µî·ÏµÈ ÀǰßÀÌ ¾ø½À´Ï´Ù.
1
À̸§
³»¿ë
:³×¸Â¾Æ¿ä: :È­³ª´Â±º¿ä: :Àá¿Í: :¿ì¿ïÇØ: :À̰ǾƳÄ: :¿ÕÇÏÇÏ: ¿Õ¿ôÀ½~ ³î·¥~
Æò°¡Çϱâ ÈǸ¢ÇÔ ¸Å¿ìÁÁÀ½ ÁÁÀ½ ±¦ÂúÀ½ º¸Åë º°·Î
µµ¹è¹æÁöŰ
 94765333 º¸ÀÌ´Â µµ¹è¹æÁö۸¦ ÀÔ·ÂÇϼ¼¿ä.