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> |
А в отдельную функцию?
function showPage(page) { alert('Page: ' + page); } |
Цитата:
callback : showPage, |
Добавил скрипт скроллинга при котором на пагинации цифры меняются а вот ползунок на слайдере нет.
<!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> |
korifey,
id это уникальный идентификатор, элементов с одинаковыми id не должно быть. и даже если вы измените id ваш пагинатор не расcчитан на работу с двумя и более элементами. |
Вы про этот код в скроллинге?
Pagination.Init(document.getElementById('pagination'), { size:100, page:page, step: 3, // pages before and after current }); |
korifey,
строка 124, лучше убрать. |
А как тогда из скроллинга в пагинацию передать номер страницы?
|
korifey,
Pagination.page = номер страницы; Pagination.Start(); |
Спасибо!!!
|
Часовой пояс GMT +3, время: 00:44. |