Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $(document).ready(function(){
- $('.slider').each(function(){
- var objSlider = $(this);
- var wrapper = $(objSlider).find('.slides-wrapper');
- var viewport = $(objSlider).find('.slider-viewport');
- var slidesCount = wrapper.children().length;
- var slideWidth = wrapper.children().outerWidth();
- var slidesPerPage = Math.round(viewport.innerWidth()/slideWidth);
- var slideNow = 0;
- var offsetNow = 0;
- var offsetSlider = 0;
- var isMouseDown = false;
- var xMouseDown = 0;
- $(objSlider).find('[data-toggle="next-slide"]').on('click', function(e){
- e.preventDefault();
- nextSlide();
- });
- $(objSlider).find('[data-toggle="prev-slide"]').on('click', function(e) {
- e.preventDefault();
- prevSlide();
- });
- viewport.on('mousedown', function(e) {
- xMouseDown = e.clientX;
- isMouseDown = true;
- wrapper.css('transition', 'none');
- });
- viewport.on('mouseup', function(e) {
- isMouseDown = false;
- offsetNow = offsetSlider;
- wrapper.css('transition', '');
- stabilizeSlide();
- });
- viewport.on('mousemove', function(e) {
- moveSlide(e);
- });
- $(window).resize(function() {
- slideWidth = wrapper.children().outerWidth();
- slidesPerPage = Math.round(viewport.innerWidth()/slideWidth);
- if (slideNow+slidesPerPage > slidesCount)
- slideNow = slidesCount - slidesPerPage;
- stabilizeSlide();
- });
- function nextSlide() {
- if (slideNow+slidesPerPage >= slidesCount) {
- slideNow = -1;
- }
- offsetNow = -slideWidth*(++slideNow);
- addOffset(offsetNow, objSlider);
- }
- function prevSlide() {
- if (slideNow == 0) {
- slideNow = slidesCount - slidesPerPage + 1;
- }
- offsetNow = -slideWidth*(--slideNow);
- addOffset(offsetNow, objSlider);
- }
- function stabilizeSlide() {
- offsetNow = -slideWidth*slideNow;
- addOffset(offsetNow, objSlider);
- }
- function moveSlide(event) {
- if (isMouseDown) {
- var offsetMouse = xMouseDown - event.clientX;
- offsetSlider = Math.abs(offsetNow) + offsetMouse;
- /*-------------------------------------------------------------------------
- Смещение слайдера вправо/влево при достижении первого/последнего слайда,
- при нажатой кнопке мыши - не более 1/3 ширины слайда.
- -------------------------------------------------------------------------*/
- if (offsetSlider < -slideWidth/3) {
- offsetSlider=-slideWidth/3;
- }
- if (offsetSlider > slideWidth*(slidesCount-slidesPerPage)+slideWidth/3) {
- offsetSlider = slideWidth*(slidesCount-slidesPerPage)+slideWidth/3;
- }
- slideNow = Math.abs(Math.round(offsetSlider/slideWidth));
- offsetSlider *= -1;
- addOffset(offsetSlider, objSlider);
- }
- }
- });
- function addOffset(offset, obj) {
- $(obj).find('.slides-wrapper').css('transform', 'translateX('+offset+'px)');
- }
- });
Add Comment
Please, Sign In to add comment