Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 06.04.2020, 14:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,797

korifey,
обработка страницы строка 234, 235
<!doctype html>
<html>
    <head>
        <meta charset = "utf8" />
<style>
html {
    height: 100%;
    width: 100%;
    background-color: #D7D7D7;
    background-image: -webkit-radial-gradient(contain, #F2F2F2, #D1D1D1);
    background-image:    -moz-radial-gradient(contain, #F2F2F2, #D1D1D1);
    background-image:     -ms-radial-gradient(contain, #F2F2F2, #D1D1D1);
    background-image:      -o-radial-gradient(contain, #F2F2F2, #D1D1D1);
    background-image:         radial-gradient(contain, #F2F2F2, #D1D1D1);
}
#pagination {
    display: inline-block;
    vertical-align: middle;
    border-radius: 4px;
    padding: 1px 2px 4px 2px;
    border-top: 1px solid #AEAEAE;
    border-bottom: 1px solid #FFFFFF;
    background-color: #DADADA;
    background-image: -webkit-linear-gradient(top, #DBDBDB, #E2E2E2);
    background-image:    -moz-linear-gradient(top, #DBDBDB, #E2E2E2);
    background-image:     -ms-linear-gradient(top, #DBDBDB, #E2E2E2);
    background-image:      -o-linear-gradient(top, #DBDBDB, #E2E2E2);
    background-image:         linear-gradient(top, #DBDBDB, #E2E2E2);
}
#pagination a, #pagination i {
    display: inline-block;
    vertical-align: middle;
    width: 22px;
    color: #7D7D7D;
    text-align: center;
    font-size: 10px;
    padding: 3px 0 2px 0;
    -webkit-user-select:none;
       -moz-user-select:none;
        -ms-user-select:none;
         -o-user-select:none;
            user-select:none;
}

#pagination a {
    margin: 0 2px 0 2px;
    border-radius: 4px;
    border: 1px solid #E3E3E3;
    cursor: pointer;
    box-shadow: inset 0 1px 0 0 #FFF, 0 1px 2px #666;
    text-shadow: 0 1px 1px #FFF;
    background-color: #E6E6E6;
    background-image: -webkit-linear-gradient(top, #F3F3F3, #D7D7D7);
    background-image:    -moz-linear-gradient(top, #F3F3F3, #D7D7D7);
    background-image:     -ms-linear-gradient(top, #F3F3F3, #D7D7D7);
    background-image:      -o-linear-gradient(top, #F3F3F3, #D7D7D7);
    background-image:         linear-gradient(top, #F3F3F3, #D7D7D7);
}
#pagination i {
    margin: 0 3px 0 3px;
}
#pagination a.current {
    border: 1px solid #E9E9E9;
    box-shadow: 0 1px 1px #999;
    background-color: #DFDFDF;
    background-image: -webkit-linear-gradient(top, #D0D0D0, #EBEBEB);
    background-image:    -moz-linear-gradient(top, #D0D0D0, #EBEBEB);
    background-image:     -ms-linear-gradient(top, #D0D0D0, #EBEBEB);
    background-image:      -o-linear-gradient(top, #D0D0D0, #EBEBEB);
    background-image:         linear-gradient(top, #D0D0D0, #EBEBEB);
}
.slidecontainer {
    width: 100%;
}

.slider {
    -webkit-appearance: none;
    width: 100%;
    height: 25px;
    background: #d3d3d3;
    outline: none;
    opacity: 0.7;
    -webkit-transition: .2s;
    transition: opacity .2s;
}

.slider:hover {
    opacity: 1;
}

.slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 25px;
    height: 25px;
    background: #4CAF50;
    cursor: pointer;
}

.slider::-moz-range-thumb {
    width: 25px;
    height: 25px;
    background: #4CAF50;
    cursor: pointer;
}
</style>
</head>
<body>

<div id="pagination"></div>
                <script>
var Pagination = {
    code: '',
    Extend: function(data) {
        data = data || {};
        Pagination.size = data.size || 150;
        Pagination.page = data.page || 1;
        Pagination.step = data.step || 3;
        Pagination.input = data.input || false;
        Pagination.callback = data.callback || function() {};
        Pagination.duration = data.duration || 300;
        Pagination.timer = null;
    },
    Add: function(s, f) {
        for (var i = s; i < f; i++) {
            Pagination.code += '<a>' + i + '</a>';
        }
    },
    Last: function() {
        Pagination.code += '<i>...</i><a>' + Pagination.size + '</a>';
    },
    First: function() {
        Pagination.code += '<a>1</a><i>...</i>';
    },
    Click: function() {
        Pagination.page = +this.innerHTML;
        Pagination.Start();
    },
    Prev: function() {
        Pagination.page--;
        if (Pagination.page < 1) {
            Pagination.page = 1;
        }
        Pagination.Start();
    },
    Next: function() {
        Pagination.page++;
        if (Pagination.page > Pagination.size) {
            Pagination.page = Pagination.size;
        }
        Pagination.Start();
    },
    Bind: function() {
        var a = Pagination.e.getElementsByTagName('a');
        for (var i = 0; i < a.length; i++) {
            if (+a[i].innerHTML === Pagination.page) {
            clearTimeout(Pagination.timer);
            Pagination.timer = setTimeout(function() {
            Pagination.callback(Pagination.page);
            }, Pagination.duration);
            if(Pagination.input) Pagination.input.value = Pagination.page;
            a[i].className = 'current';

            }
            a[i].addEventListener('click', Pagination.Click, false);
        }
    },
    Finish: function() {
        Pagination.e.innerHTML = Pagination.code;
        Pagination.code = '';
        Pagination.Bind();

    },
    Start: function() {

        if (Pagination.size < Pagination.step * 2 + 6) {
            Pagination.Add(1, Pagination.size + 1);
        }
        else if (Pagination.page < Pagination.step * 2 + 1) {
            Pagination.Add(1, Pagination.step * 2 + 4);
            Pagination.Last();
        }
        else if (Pagination.page > Pagination.size - Pagination.step * 2) {
            Pagination.First();
            Pagination.Add(Pagination.size - Pagination.step * 2 - 2, Pagination.size + 1);
        }
        else {
            Pagination.First();
            Pagination.Add(Pagination.page - Pagination.step, Pagination.page + Pagination.step + 1);
            Pagination.Last();
        }
        Pagination.Finish();
    },
    Buttons: function(e) {
        var nav = e.getElementsByTagName('a');
        nav[0].addEventListener('click', Pagination.Prev, false);
        nav[1].addEventListener('click', Pagination.Next, false);
    },
    Create: function(e) {
        var html = [
            '<a>◄</a>', // previous button
            '<span></span>',  // pagination container
            '<a>►</a>'  // next button
        ];
        e.innerHTML = html.join('');
        Pagination.e = e.getElementsByTagName('span')[0];
        Pagination.Buttons(e);
    if(Pagination.input) {
    var html = `<div class="slidecontainer">
    <input type="range" min="1" max="${Pagination.size}" value="1">
    </div>`;
    e.insertAdjacentHTML("beforebegin", html);
    Pagination.input = document.querySelector('.slidecontainer input');
    Pagination.input.addEventListener('input', function() {
    Pagination.page = +this.value;
    Pagination.Start();
         });

        }
    },
    Init: function(e, data) {
        Pagination.Extend(data);
        Pagination.Create(e);
        Pagination.Start();
        Pagination.input && (Pagination.input.style.width = `${e.offsetWidth}px`);
    }
};
var init = function() {
Pagination.Init(document.getElementById('pagination'), {
        size: 30, // pages size
        page: 1,  // selected page
        step: 3,   // pages before and after current
        input: true,
        callback : function(page) {alert(page)},//обработка выбранной страницы
        duration : 600// пауза перед обработкой
    });
};
document.addEventListener('DOMContentLoaded', init, false);
        </script>
    </body>
</html>

Последний раз редактировалось рони, 06.04.2020 в 14:34.
Ответить с цитированием
  #12 (permalink)  
Старый 06.04.2020, 15:14
Интересующийся
Отправить личное сообщение для korifey Посмотреть профиль Найти все сообщения от korifey
 
Регистрация: 30.03.2020
Сообщений: 28

А в отдельную функцию?
function showPage(page) {
        alert('Page: ' + page);
    }
Ответить с цитированием
  #13 (permalink)  
Старый 06.04.2020, 15:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,797

Сообщение от korifey
А в отдельную функцию?
а это какая?
callback : showPage,
Ответить с цитированием
  #14 (permalink)  
Старый 09.04.2020, 14:01
Интересующийся
Отправить личное сообщение для korifey Посмотреть профиль Найти все сообщения от korifey
 
Регистрация: 30.03.2020
Сообщений: 28

Добавил скрипт скроллинга при котором на пагинации цифры меняются а вот ползунок на слайдере нет.
<!doctype html>
<html>
    <head>
        <meta charset = "utf8" />
<style>
html {
    height: 100%;
    width: 100%;
    background-color: #D7D7D7;
    background-image: -webkit-radial-gradient(contain, #F2F2F2, #D1D1D1);
    background-image:    -moz-radial-gradient(contain, #F2F2F2, #D1D1D1);
    background-image:     -ms-radial-gradient(contain, #F2F2F2, #D1D1D1);
    background-image:      -o-radial-gradient(contain, #F2F2F2, #D1D1D1);
    background-image:         radial-gradient(contain, #F2F2F2, #D1D1D1);
}
    body{width:100%;height:100%;text-align:center}
    #posts{height:100%}
    .gl-post{height:100%;background-color:aqua}    
#pagination {
    display: inline-block;
    vertical-align: middle;
    border-radius: 4px;
    padding: 1px 2px 4px 2px;
    border-top: 1px solid #AEAEAE;
    border-bottom: 1px solid #FFFFFF;
    background-color: #DADADA;
    background-image: -webkit-linear-gradient(top, #DBDBDB, #E2E2E2);
    background-image:    -moz-linear-gradient(top, #DBDBDB, #E2E2E2);
    background-image:     -ms-linear-gradient(top, #DBDBDB, #E2E2E2);
    background-image:      -o-linear-gradient(top, #DBDBDB, #E2E2E2);
    background-image:         linear-gradient(top, #DBDBDB, #E2E2E2);
}
#pagination a, #pagination i {
    display: inline-block;
    vertical-align: middle;
    width: 22px;
    color: #7D7D7D;
    text-align: center;
    font-size: 10px;
    padding: 3px 0 2px 0;
    -webkit-user-select:none;
       -moz-user-select:none;
        -ms-user-select:none;
         -o-user-select:none;
            user-select:none;
}

#pagination a {
    margin: 0 2px 0 2px;
    border-radius: 4px;
    border: 1px solid #E3E3E3;
    cursor: pointer;
    box-shadow: inset 0 1px 0 0 #FFF, 0 1px 2px #666;
    text-shadow: 0 1px 1px #FFF;
    background-color: #E6E6E6;
    background-image: -webkit-linear-gradient(top, #F3F3F3, #D7D7D7);
    background-image:    -moz-linear-gradient(top, #F3F3F3, #D7D7D7);
    background-image:     -ms-linear-gradient(top, #F3F3F3, #D7D7D7);
    background-image:      -o-linear-gradient(top, #F3F3F3, #D7D7D7);
    background-image:         linear-gradient(top, #F3F3F3, #D7D7D7);
}
#pagination i {
    margin: 0 3px 0 3px;
}
#pagination a.current {
    border: 1px solid #E9E9E9;
    box-shadow: 0 1px 1px #999;
    background-color: #DFDFDF;
    background-image: -webkit-linear-gradient(top, #D0D0D0, #EBEBEB);
    background-image:    -moz-linear-gradient(top, #D0D0D0, #EBEBEB);
    background-image:     -ms-linear-gradient(top, #D0D0D0, #EBEBEB);
    background-image:      -o-linear-gradient(top, #D0D0D0, #EBEBEB);
    background-image:         linear-gradient(top, #D0D0D0, #EBEBEB);
}
.slidecontainer {
    width: 100%;
}

.slider {
    -webkit-appearance: none;
    width: 100%;
    height: 25px;
    background: #d3d3d3;
    outline: none;
    opacity: 0.7;
    -webkit-transition: .2s;
    transition: opacity .2s;
}

.slider:hover {
    opacity: 1;
}

.slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 25px;
    height: 25px;
    background: #4CAF50;
    cursor: pointer;
}

.slider::-moz-range-thumb {
    width: 25px;
    height: 25px;
    background: #4CAF50;
    cursor: pointer;
}
</style>
</head>
<body>
<div id="posts" class="1">
<div class="gl-post">Страница 1</div>
    </div>
    <div id="pag"><div id="pagination"></div></div>
                <script>
var flag=false;
window.addEventListener("scroll", function(e){
var block=document.getElementById('posts');var page=block.className;
var contentHeight=block.offsetHeight;var yOffset=window.pageYOffset;var window_height=window.innerHeight;var y=yOffset+window_height;
if(y>=contentHeight&&!flag){page++;flag=true;
block.innerHTML=block.innerHTML+"<div>Страница "+page+"</div>";

Pagination.Init(document.getElementById('pagination'), {
        size:100,
        page:page,
        step: 3,   // pages before and after current
        value:page,
    });
document.getElementById("posts").className=page;flag=false;}});

                    
                    
                    
var Pagination = {
    code: '',
    Extend: function(data) {
        data = data || {};
        Pagination.size = data.size || 150;
        Pagination.page = data.page || 1;
        Pagination.step = data.step || 3;
        Pagination.input = data.input || false;
    },
    Add: function(s, f) {
        for (var i = s; i < f; i++) {
            Pagination.code += '<a>' + i + '</a>';
        }
    },
    Last: function() {
        Pagination.code += '<i>...</i><a>' + Pagination.size + '</a>';
    },
    First: function() {
        Pagination.code += '<a>1</a><i>...</i>';
    },
    Click: function() {
        Pagination.page = +this.innerHTML;
        Pagination.Start();
var block=document.getElementById('posts');block.className=Pagination.page;block.innerHTML='<div>Страница '+Pagination.page+'</div>';
scroll(0,0);
    },
    Prev: function() {
        Pagination.page--;
        if (Pagination.page < 1) {
            Pagination.page = 1;
        }
        Pagination.Start();
    },
    Next: function() {
        Pagination.page++;
        if (Pagination.page > Pagination.size) {
            Pagination.page = Pagination.size;
        }
        Pagination.Start();
    },
    Bind: function() {
        var a = Pagination.e.getElementsByTagName('a');
        for (var i = 0; i < a.length; i++) {
            if (+a[i].innerHTML === Pagination.page) {
            if(Pagination.input) Pagination.input.value = Pagination.page;
            a[i].className = 'current';

            }
            a[i].addEventListener('click', Pagination.Click, false);
        }
    },
    Finish: function() {
        Pagination.e.innerHTML = Pagination.code;
        Pagination.code = '';
        Pagination.Bind();

    },
    Start: function() {
        if (Pagination.size < Pagination.step * 2 + 6) {
            Pagination.Add(1, Pagination.size + 1);
        }
        else if (Pagination.page < Pagination.step * 2 + 1) {
            Pagination.Add(1, Pagination.step * 2 + 4);
            Pagination.Last();
        }
        else if (Pagination.page > Pagination.size - Pagination.step * 2) {
            Pagination.First();
            Pagination.Add(Pagination.size - Pagination.step * 2 - 2, Pagination.size + 1);
        }
        else {
            Pagination.First();
            Pagination.Add(Pagination.page - Pagination.step, Pagination.page + Pagination.step + 1);
            Pagination.Last();
        }
        Pagination.Finish();
    },
    Buttons: function(e) {
        var nav = e.getElementsByTagName('a');
        nav[0].addEventListener('click', Pagination.Prev, false);
        nav[1].addEventListener('click', Pagination.Next, false);
    },
    Create: function(e) {
        var html = [
            '<a>◄</a>', // previous button
            '<span></span>',  // pagination container
            '<a>►</a>'  // next button
        ];
        e.innerHTML = html.join('');
        Pagination.e = e.getElementsByTagName('span')[0];
        Pagination.Buttons(e);
    if(Pagination.input) {
    var html = `<div class="slidecontainer">
    <input type="range" min="1" max="${Pagination.size}" value="1">
    </div>`;
    e.insertAdjacentHTML("beforebegin", html);
    Pagination.input = document.querySelector('.slidecontainer input');
    Pagination.input.addEventListener('input', function() {
    Pagination.page = +this.value;
    Pagination.Start();
var block=document.getElementById('posts');block.className=Pagination.page;block.innerHTML='<div>Страница '+Pagination.page+'</div>';
scroll(0,0);
         });

        }
    },
    Init: function(e, data) {
        Pagination.Extend(data);
        Pagination.Create(e);
        Pagination.Start();
        Pagination.input && (Pagination.input.style.width = `${e.offsetWidth}px`);
    }
};
var init = function() {
Pagination.Init(document.getElementById('pagination'), {
        size: 30, // pages size
        page: 1,  // selected page
        step: 3,   // pages before and after current
        input: true
    });
};
document.addEventListener('DOMContentLoaded', init, false);
        </script>
    </body>
</html>
Ответить с цитированием
  #15 (permalink)  
Старый 09.04.2020, 14:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,797

korifey,
id это уникальный идентификатор, элементов с одинаковыми id не должно быть. и даже если вы измените id ваш пагинатор не расcчитан на работу с двумя и более элементами.
Ответить с цитированием
  #16 (permalink)  
Старый 09.04.2020, 16:28
Интересующийся
Отправить личное сообщение для korifey Посмотреть профиль Найти все сообщения от korifey
 
Регистрация: 30.03.2020
Сообщений: 28

Вы про этот код в скроллинге?
Pagination.Init(document.getElementById('pagination'), {
        size:100,
        page:page,
        step: 3,   // pages before and after current
    });
Ответить с цитированием
  #17 (permalink)  
Старый 09.04.2020, 16:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,797

korifey,
строка 124, лучше убрать.
Ответить с цитированием
  #18 (permalink)  
Старый 09.04.2020, 17:03
Интересующийся
Отправить личное сообщение для korifey Посмотреть профиль Найти все сообщения от korifey
 
Регистрация: 30.03.2020
Сообщений: 28

А как тогда из скроллинга в пагинацию передать номер страницы?
Ответить с цитированием
  #19 (permalink)  
Старый 09.04.2020, 17:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,797

korifey,
Pagination.page = номер страницы;
Pagination.Start();
Ответить с цитированием
  #20 (permalink)  
Старый 09.04.2020, 19:30
Интересующийся
Отправить личное сообщение для korifey Посмотреть профиль Найти все сообщения от korifey
 
Регистрация: 30.03.2020
Сообщений: 28

Спасибо!!!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вкладки и слайдер slicks ildar94 Элементы интерфейса 6 16.01.2018 14:29
Как поместить слайдер в модальное окно? ИщуПомощь Элементы интерфейса 2 24.08.2017 20:27
Полноэкранный слайдер с визуальными эффектами. LLIypuk Элементы интерфейса 3 06.04.2017 13:33
Связать ползунковый слайдер и аккордеон... All_ex74 Элементы интерфейса 1 31.05.2013 12:20
Слайдер с помощью CSS и jQuery - 1000 р. stixia007 jQuery 21 27.03.2013 20:44