• 27-09-2023, 22:48:05
    #1
    Merhabalar Slider arasında boşluk bırakınca en sağdaki sliderin hep sağında boşluk oluyor bunu nasıl düzeltebilirim

    <!DOCTYPE html>
    <html lang="tr">
    <head>
        <meta charset="UTF-8">
        <title>Sürüklemeli Slider</title>
        <style>
            .gwpSlider {
                overflow: hidden;
                width: 100%;
                margin: auto;
            }
    
            .gwpSlider-container {
                transition: transform 0.2s ease-in-out;
                will-change: transform;
                cursor: grab;
            }
    
            .gwpSlider-container.grabbing {
                cursor: grabbing;
            }
    
            .gwpSlider-item {
                box-sizing: border-box;
                display: flex;
                float:left;
                align-items: center;
                justify-content: center;
                font-size: 2em;
                user-select: none;
            }
            .gwpSlider-item > div {
                width:100%;
            }
            body {
                padding:0;
                margin: 0;
            }
        </style>
        <script src="https://code.jquery.com/jquery-3.7.1.js" integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4=" crossorigin="anonymous"></script>
    </head>
    <body>
        <div class="gwpSlider">
            <div id="gwpSlider" class="gwpSlider-container">
                <div class="gwpSlider-item" >
                    <div style="background-color: lightcoral;">
                        1
                    </div>
                </div>
                <div class="gwpSlider-item" >
                    <div style="background-color: lightcoral;">
                        2
                    </div>
                </div>
                <div class="gwpSlider-item" >
                    <div style="background-color: lightcoral;">
                        3
                    </div>
                </div>
                <div class="gwpSlider-item" >
                    <div style="background-color: lightcoral;">
                        4
                    </div>
                </div>
                <div class="gwpSlider-item" >
                    <div style="background-color: lightcoral;">
                        5
                    </div>
                </div>
                <div class="gwpSlider-item" >
                    <div style="background-color: lightcoral;">
                        6
                    </div>
                </div>
                <div class="gwpSlider-item" >
                    <div style="background-color: lightcoral;">
                        7
                    </div>
                </div>
                <div class="gwpSlider-item" >
                    <div style="background-color: lightcoral;">
                        8
                    </div>
                </div>
            </div>
            <div class="gwpSlider-button">
                <button class="gwpSlider-button-prev">
                    Önceki
                </button>
                <button class="gwpSlider-button-next">
                    Sonraki
                </button>
            </div>
        </div>
    
        <script>
            (function( $ ){
                $.fn.gwpSlider = function( options ) {  
                    var settings = $.extend({
                        PerView: '1',
                        margin: '10'
                    }, options);
                    return this.each(function() {        
                        var $this = $(this),
                        sliderWidth = $this.width() / settings.PerView,
                        sliderTotalWidth = sliderWidth * $this.find(".gwpSlider-item").length;
                        var test = settings.margin / ($this.find(".gwpSlider-item").length);
                        $this.find(".gwpSlider-container").width(sliderTotalWidth);
                        $this.find(".gwpSlider-item").css({"width":(sliderWidth - settings.margin),"margin-right":settings.margin});
    
    
    
    
                        const carousel = document.getElementById('gwpSlider');
                        const container = carousel.parentElement;
                        let isDragging = false;
                        let startPos = 0;
                        let currentTranslate = 0;
                        let prevTranslate = 0;
                        let animationID = 0;
                        let currentIndex = 0;
    
    
    
    
                        carousel.addEventListener('mousedown', (e) => {
                            isDragging = true;
                            startPos = getPositionX(e);
                            carousel.classList.add('grabbing');
                            animationID = requestAnimationFrame(animation);
                        });
    
                        window.addEventListener('mouseup', () => {
                            if (!isDragging) return;
                            isDragging = false;
                            cancelAnimationFrame(animationID);
                            const movedBy = currentTranslate - prevTranslate;
    
                            if (movedBy < -100 && currentIndex < carousel.children.length - settings.PerView) currentIndex += 1;
                            if (movedBy > 100 && currentIndex > 0) currentIndex -= 1;
    
                            setPositionByIndex();
                            carousel.classList.remove('grabbing');
                        });
                        carousel.addEventListener('mousemove', (e) => {
                            if (!isDragging) return;
                            currentTranslate = prevTranslate + getPositionX(e) - startPos;
                            cancelAnimationFrame(animationID);
                            animationID = requestAnimationFrame(animation);
                        });
                        function getPositionX(e) {
                            return e.pageX;
                        }
                        function animation() {
                            setCarouselPosition();
                        }
                        function setCarouselPosition() {
                            carousel.style.transform = `translateX(${currentTranslate}px)`;
                        }
                        $(".gwpSlider-button button").on("click",function() {
                            if ($(this).hasClass("gwpSlider-button-next")) {
                                currentIndex++;
                                if ((carousel.children.length - settings.PerView) < currentIndex) {
                                    currentIndex = 0;
                                }
                            }else {
                                currentIndex--;
                                if (currentIndex <= 0) {
                                    currentIndex = 0;
                                }
                            }
                            
                            
                            const slideWidth = container.offsetWidth / settings.PerView;
                            currentTranslate = currentIndex * -slideWidth;
                            prevTranslate = currentTranslate;
                            setCarouselPosition();
    
                        });
                        function setPositionByIndex() {
                            const slideWidth = container.offsetWidth / settings.PerView;
                            currentTranslate = currentIndex * -slideWidth;
                            prevTranslate = currentTranslate;
                            setCarouselPosition();
                        }
                    });
                };
            })( jQuery );
            $(".gwpSlider").gwpSlider({
                PerView:3,
                margin:30
            });
        </script>
    </body>
    </html>
  • 27-09-2023, 22:51:24
    #2
    Slider arasında boşluk bıraktığınızda en sağdaki sliderin sağında boşluk olmasının nedeni, slider elemanlarını kaydırdığınızda, elemanların sağ kenarlarının sonunda boşluk bırakmanızdır. Bu boşluktan kurtulmak için aşağıdaki adımları takip edebilirsiniz:


    Öncelikle .gwpSlider-item sınıfına sahip elemanların sağ kenarında boşluk bırakmayı kaldırın. Bu, elemanların genişliğini ayarlarken sağ kenar boşluğunu dikkate almayacakları anlamına gelir. Kodunuzda şu satırları güncelleyin:
    gwpSlider-item {    box-sizing: border-box;    display: flex;    float: left;    align-items: center;    justify-content: center;    font-size: 2em;    user-select: none;    margin-right: 0; /* Sağ kenar boşluğunu kaldırın */ }
    Slider container'ının genişliğini, elemanların toplam genişliğine eşitleyin ve böylece elemanlar arasında boşluk bırakmadan sığmasını sağlayın. Kodunuzdaki bu satırları güncelleyin:
    var sliderTotalWidth = sliderWidth * $this.find(".gwpSlider-item").length;$this.find(".gwpSlider-container").width(sliderTotalWidth);
    Yukarıdaki değişikliklerle, slider elemanları arasında boşluk bırakmadan çalışan bir slider elde etmelisiniz. Bu değişikliklerle en sağdaki sliderin sağında boşluk olmamalıdır.

    via ChatGPT / Ne kadar doğru bilemem.
  • 27-09-2023, 22:53:42
    #3
    DemiratarBlog adlı üyeden alıntı: mesajı görüntüle
    Slider arasında boşluk bıraktığınızda en sağdaki sliderin sağında boşluk olmasının nedeni, slider elemanlarını kaydırdığınızda, elemanların sağ kenarlarının sonunda boşluk bırakmanızdır. Bu boşluktan kurtulmak için aşağıdaki adımları takip edebilirsiniz:


    Öncelikle .gwpSlider-item sınıfına sahip elemanların sağ kenarında boşluk bırakmayı kaldırın. Bu, elemanların genişliğini ayarlarken sağ kenar boşluğunu dikkate almayacakları anlamına gelir. Kodunuzda şu satırları güncelleyin:
    gwpSlider-item {    box-sizing: border-box;    display: flex;    float: left;    align-items: center;    justify-content: center;    font-size: 2em;    user-select: none;    margin-right: 0; /* Sağ kenar boşluğunu kaldırın */ }
    Slider container'ının genişliğini, elemanların toplam genişliğine eşitleyin ve böylece elemanlar arasında boşluk bırakmadan sığmasını sağlayın. Kodunuzdaki bu satırları güncelleyin:
    var sliderTotalWidth = sliderWidth * $this.find(".gwpSlider-item").length;$this.find(".gwpSlider-container").width(sliderTotalWidth);
    Yukarıdaki değişikliklerle, slider elemanları arasında boşluk bırakmadan çalışan bir slider elde etmelisiniz. Bu değişikliklerle en sağdaki sliderin sağında boşluk olmamalıdır.

    via ChatGPT / Ne kadar doğru bilemem.
    Chatgpt 4 e bende yazdımda sağlıklı sonuç alamadım bu yazdığınız kodlar tüm boşlukları kaldırıyor benim amacım ekranda gözüken sliderlerin sadece en sağındaki boşluğu kaldırma