Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Слайдер jQuery на классах (https://javascript.ru/forum/jquery/73409-slajjder-jquery-na-klassakh.html)

goofy1337 13.04.2018 14:53

Слайдер jQuery на классах
 
Доброго времени суток, у меня есть рабочий код слайдера jQuery на функциях, но мне нужно реализовать его с помощью классов. С jQuery знаком буквально 1 день, по-этому не выходит у меня решить эту проблему. Буду благодарен за помощь.

var slideNow = 1;
var slideCount = $('#slider').children().length; 
var slideInterval = 3000;
var navButtonId = 0;
var translateWidth = 0;

$(document).ready(function() {
    var switchInterval = setInterval(nextSlide, slideInterval);

    $('#viewport').hover(function() {
        clearInterval(switchInterval);
    }, function() {
        switchInterval = setInterval(nextSlide, slideInterval);
    });

    $('#next-button').click(function() {
        nextSlide();
    });

    $('#prev-button').click(function() {
        prevSlide();
    });

    $('.slide-nav-button').click(function() {
        navButtonId = $(this).index();

        if (navButtonId + 1 != slideNow) {
            translateWidth = -$('#viewport').width() * (navButtonId);
            
            $('#slider').css({
                'transform': 'translate(' + translateWidth + 'px, 0)',
                '-webkit-transform': 'translate(' + translateWidth + 'px, 0)',
                '-ms-transform': 'translate(' + translateWidth + 'px, 0)',
            }); 
            
            slideNow = navButtonId + 1;
        }
    });
});


function nextSlide() {
    if (slideNow == slideCount || slideNow <= 0 || slideNow > slideCount) {
        $('#slider').css('transform', 'translate(0, 0)');
        
        slideNow = 1;
    } 
    
    else {
        translateWidth = -$('#viewport').width() * (slideNow);
        
        $('#slider').css({
                'transform': 'translate(' + translateWidth + 'px, 0)',
                '-webkit-transform': 'translate(' + translateWidth + 'px, 0)',
                '-ms-transform': 'translate(' + translateWidth + 'px, 0)',
            }); 
        
        slideNow++;
    }
}

function prevSlide() {
    if (slideNow == 1 || slideNow <= 0 || slideNow > slideCount) {
        translateWidth = -$('#viewport').width() * (slideCount - 1);
        
        $('#slider').css({
                'transform': 'translate(' + translateWidth + 'px, 0)',
                '-webkit-transform': 'translate(' + translateWidth + 'px, 0)',
                '-ms-transform': 'translate(' + translateWidth + 'px, 0)',
            }); 
        
        slideNow = slideCount;
    } 
    
    else {
        translateWidth = -$('#viewport').width() * (slideNow - 2);
        
        $('#slider').css({
                'transform': 'translate(' + translateWidth + 'px, 0)',
                '-webkit-transform': 'translate(' + translateWidth + 'px, 0)',
                '-ms-transform': 'translate(' + translateWidth + 'px, 0)',
            }); 
        
        slideNow--;
    }
}


Вот еще код HTML

<!DOCTYPE html>
<html>
    <head>
        <title>Slider</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" href="newcss.css">
        <link rel="shortcut icon" href="#">
        <script src="jquery-3.3.1.js"></script> 
    </head>
    <body>
        <div id="block-for-slider">
            <div id="viewport">
                <ul id="slider">
                    <li class="slide"><img src="images/img1.jpg" alt="1" class="slide-img"></li>
                    <li class="slide"><img src="images/img2.jpg" alt="2" class="slide-img"></li>
                    <li class="slide"><img src="images/img3.jpg" alt="3" class="slide-img"></li>
                </ul>
                <div id="buttons">
                    <div id="prev-button"></div>
                    <div id="next-button"></div>
                </div>
                <ul id="nav-buttons">
                    <li class="slide-nav-button"></li>
                    <li class="slide-nav-button"></li>
                    <li class="slide-nav-button"></li>
                </ul>
            </div>
        </div>
        <script src="newjavascript.js"></script>
    </body>
</html>

Nexus 13.04.2018 14:58

goofy1337,
Цитата:

Сообщение от goofy1337
С jQuery знаком буквально 1 день, по-этому не выходит у меня решить эту проблему. Буду благодарен за помощь.

Что у вас не получается переписать?

goofy1337 13.04.2018 15:05

Цитата:

Сообщение от Nexus (Сообщение 483175)
goofy1337,
Что у вас не получается переписать?

Не получается реализовать код jQuery с помощью классов. То есть создать класс и запихнуть туда эти функции с переменными, и правильно вызвать.

Nexus 13.04.2018 15:14

goofy1337, ознакомьтесь с этой статьей и все получится: https://learn.javascript.ru/es-class


Часовой пояс GMT +3, время: 22:13.