Guest User

Untitled

a guest
Apr 24th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.01 KB | None | 0 0
  1. $(document).ready(function(){
  2. $('.slider').each(function(){
  3. var objSlider = $(this);
  4. var wrapper = $(objSlider).find('.slides-wrapper');
  5. var viewport = $(objSlider).find('.slider-viewport');
  6. var slidesCount = wrapper.children().length;
  7. var slideWidth = wrapper.children().outerWidth();
  8. var slidesPerPage = Math.round(viewport.innerWidth()/slideWidth);
  9. var slideNow = 0;
  10. var offsetNow = 0;
  11. var offsetSlider = 0;
  12. var isMouseDown = false;
  13. var xMouseDown = 0;
  14. $(objSlider).find('[data-toggle="next-slide"]').on('click', function(e){
  15. e.preventDefault();
  16. nextSlide();
  17. });
  18. $(objSlider).find('[data-toggle="prev-slide"]').on('click', function(e) {
  19. e.preventDefault();
  20. prevSlide();
  21. });
  22. viewport.on('mousedown', function(e) {
  23. xMouseDown = e.clientX;
  24. isMouseDown = true;
  25. wrapper.css('transition', 'none');
  26. });
  27. viewport.on('mouseup', function(e) {
  28. isMouseDown = false;
  29. offsetNow = offsetSlider;
  30. wrapper.css('transition', '');
  31. stabilizeSlide();
  32. });
  33. viewport.on('mousemove', function(e) {
  34. moveSlide(e);
  35. });
  36. $(window).resize(function() {
  37. slideWidth = wrapper.children().outerWidth();
  38. slidesPerPage = Math.round(viewport.innerWidth()/slideWidth);
  39. if (slideNow+slidesPerPage > slidesCount)
  40. slideNow = slidesCount - slidesPerPage;
  41. stabilizeSlide();
  42. });
  43.  
  44. function nextSlide() {
  45. if (slideNow+slidesPerPage >= slidesCount) {
  46. slideNow = -1;
  47. }
  48. offsetNow = -slideWidth*(++slideNow);
  49. addOffset(offsetNow, objSlider);
  50. }
  51.  
  52. function prevSlide() {
  53. if (slideNow == 0) {
  54. slideNow = slidesCount - slidesPerPage + 1;
  55. }
  56. offsetNow = -slideWidth*(--slideNow);
  57. addOffset(offsetNow, objSlider);
  58. }
  59.  
  60. function stabilizeSlide() {
  61. offsetNow = -slideWidth*slideNow;
  62. addOffset(offsetNow, objSlider);
  63. }
  64.  
  65. function moveSlide(event) {
  66. if (isMouseDown) {
  67. var offsetMouse = xMouseDown - event.clientX;
  68. offsetSlider = Math.abs(offsetNow) + offsetMouse;
  69. /*-------------------------------------------------------------------------
  70. Смещение слайдера вправо/влево при достижении первого/последнего слайда,
  71. при нажатой кнопке мыши - не более 1/3 ширины слайда.
  72. -------------------------------------------------------------------------*/
  73. if (offsetSlider < -slideWidth/3) {
  74. offsetSlider=-slideWidth/3;
  75. }
  76. if (offsetSlider > slideWidth*(slidesCount-slidesPerPage)+slideWidth/3) {
  77. offsetSlider = slideWidth*(slidesCount-slidesPerPage)+slideWidth/3;
  78. }
  79. slideNow = Math.abs(Math.round(offsetSlider/slideWidth));
  80. offsetSlider *= -1;
  81. addOffset(offsetSlider, objSlider);
  82. }
  83. }
  84. });
  85. function addOffset(offset, obj) {
  86. $(obj).find('.slides-wrapper').css('transform', 'translateX('+offset+'px)');
  87. }
  88. });
Add Comment
Please, Sign In to add comment