рдХрд╛рдЗрдиреЗрдЯрд┐рдХ рд╕реНрдХреНрд░реЙрд▓ рдмрд╛рд░

рдХрд╛рдЗрдиреЗрдЯрд┐рдХ рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ рдХрд╛ рдкреНрд░рднрд╛рд╡ рдЕрдм рд▓рдЧрднрдЧ рд╣рд░ рдЬрдЧрд╣ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдкрд░ рдпрд╣ рдЖрдкрдХреА рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдпрд╛ рд╕реНрдЯрд╛рдЗрд▓рд╕ рдФрд░ рдмрд╣реБрдд рдордЬрд╝реЗрджрд╛рд░ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИред

рд╡реЗрдм рдкрд░, рдРрд╕рд╛ рдкреНрд░рднрд╛рд╡ рдХреЗрд╡рд▓ рдЬрдбрд╝ рд▓реЗ рд░рд╣рд╛ рд╣реИред рдФрд░ рдпрд╣ рд╕реЛрдЪрдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╣рд╛рдБ рддрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ ... рд╢рд╛рдпрдж рдХреЗрд╡рд▓ рд╕реНрдХреНрд░реЙрд▓ рдмрд╛рд░ рд╣реА рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рдЬреЛ рдкреГрд╖реНрда рдХреЗ рдЕрдВрджрд░ рдХреБрдЫ рд╕рд╛рдордЧреНрд░реА, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рд╕рд╛рдЗрдЯ рдкрд░ рдЧреИрд▓рд░реА рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╣рдордд рд╣реВрдБ, рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдпрджрд┐ рд╕реНрд▓рд╛рдЗрдбрд░ рддреБрд░рдВрдд рдмрдВрдж рдирд╣реАрдВ рд╣реБрдЖ, рдЬреИрд╕реЗ рд╣реА рдорд╛рдЙрд╕ рдмрдЯрди рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдЬрдбрд╝рддрд╛ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рдЬрд╛рд░реА рд░рд╣рд╛, рдзреАрд░реЗ-рдзреАрд░реЗ рд░реЛрдХрдирд╛ ...
рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рдЗрдиреЗрдЯрд┐рдХ рд╕реНрдХреНрд░реЙрд▓ рдмрд╛рд░ рдкреНрд░рднрд╛рд╡ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдЕрдВрдд рдореЗрдВ рдХреНрдпрд╛ рд╣реБрдЖ рдЖрдк рдпрд╣рд╛рдБ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо


рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд╛рдорд╛рдиреНрдп рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо (рд╕реНрд▓рд╛рдЗрдбрд░ + "рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ" рдЦреАрдВрдЪрдХрд░) рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрд╣ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рд╕рд░рд▓ рд╣реИ:

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдФрд░ рди рдХреЗрд╡рд▓ рдЬреЗрдПрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ ...

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк jQuery рдпреВрдЖрдИ рд╕реЗ jQuery рдкреБрд╕реНрддрдХрд╛рд▓рдп рдФрд░ рд╕рд╣рдЬрддрд╛ рдкреНрд░рднрд╛рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
HTML рдХреЛрдб рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛:
<div id="track"> <div id="thumb"></div> </div> 

рдЬрд╣рд╛рдВ рдЯреНрд░реИрдХ рд╡рд╣ рдХреНрд╖реЗрддреНрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реНрд▓рд╛рдЗрдбрд░ рдЪрд▓рддрд╛ рд╣реИ, рдФрд░ рдЕрдВрдЧреВрдареЗ рд╣реА рд╕реНрд▓рд╛рдЗрдбрд░ рд╣реИред
рд╕реАрдПрд╕рдПрд╕:
 #track { width: 500px; position: relative; display: block; height: 22px; margin: 20px; border: solid 1px #000; overflow: hidden; } #track #thumb { width: 70px; height: 22px; position: absolute; background-color: gray; left: 200px; } 

рдЕрдм рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╢реИрд▓реА рдореЗрдВ рд▓рд┐рдЦреВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдг рд╣реИ ... рдЖрдк рдЗрд╕реЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдкрд░ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЪрд╛рд╣реЗрдВ рддреЛ рдЗрд╕реЗ jQuery рдкреНрд▓рдЧрдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ:
  1. $ рдЯреНрд░реИрдХ (jQuery рдСрдмреНрдЬреЗрдХреНрдЯ) - рд╕реНрдХреНрд░реЙрд▓ рдмрд╛рд░ рдХреНрд╖реЗрддреНрд░
  2. $ рдЕрдВрдЧреВрдард╛ (jQuery рдСрдмреНрдЬреЗрдХреНрдЯ) - рд╕реНрд▓рд╛рдЗрдбрд░
  3. isClicked (рдмреВрд▓) - рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдЬреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕реНрд▓рд╛рдЗрдбрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред
  4. clickPointX (int) - x рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд╛ рд╕рдордиреНрд╡рдп
  5. dx (int) - рдПрдХ рдорд╛рдЙрд╕рдореЛрд╡ рдЗрд╡реЗрдВрдЯ рдореЗрдВ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ x рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдмрджрд▓рдирд╛ред
 var $track = $('#track'); var $thumb = $('#thumb'); var isClicked = false; var clickPointX = 0; var dx = 0; 

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреБрдЫ рд▓рд╛рд▓ рд╕рд┐рд░ рд╡рд╛рд▓реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЛ рд╣рдорд╛рд░реЗ рд╕реНрд▓рд╛рдЗрдбрд░ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХреЗрдВ:
 $thumb.bind('dragstart', false); 

рд╣рдо рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдорд╛рдЙрд╕рдбрд╛рдЙрди рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддреЗ рд╣реИрдВ:
 $thumb.mousedown( function(e) { //     clickPointX = e.pageX - $(this).offset().left; isClicked = true; $thumb.stop(); //    }); 

рд╣рдо MouseMove рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдкреВрд░реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд░
 $(document).mousemove( function(e) { if (isClicked) { //   ,     //   var x = (e.pageX - $track.offset().left - clickPointX); //       if (x < -maxBorderOut) { x = -maxBorderOut; } if ( (x + $thumb.width()) > ($track.width() + maxBorderOut)) { x = $track.width() - $thumb.width() + maxBorderOut; } //   var selfLeft = parseInt($thumb.css('left')); $thumb.css({'left': x + 'px' }); dx = x - selfLeft; } }); 

рдпрд╣рд╛рдВ рд╣рдо рдПрдХ рдЕрдШреЛрд╖рд┐рдд рдЪрд░ maxBorderOut рд╕реЗ рдорд┐рд▓рддреЗ рд╣реИрдВ , рдЬреЛ рдЕрдзрд┐рдХрддрдо рдкрд┐рдХреНрд╕реЗрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЖрдк рд╕реНрд▓рд╛рдЗрдбрд░ рдХреЛ рдХреНрд╖реЗрддреНрд░ рдХреА рд╕реАрдорд╛рдУрдВ рд╕реЗ рдкрд░реЗ рдЦреАрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред
рдФрд░ рдЕрдВрдд рдореЗрдВ, рдорд╛рдЙрд╕рдЕрдк:
 $(document).mouseup( function(e) { if (isClicked) { if (Math.abs(dx) < lapse) { dx = 0; } var selfLeft = parseInt($thumb.css('left')); //    // "impulse * dx"    ,     var x = (selfLeft + impulse * dx); // ,        scroll box'a if (x < 0) { x = 0; } if ( (x + $thumb.width()) > $track.width() ) { x = $track.width() - $thumb.width(); } //    $thumb.stop().animate({'left': x + 'px'}, speed, 'easeOutQuart'); } isClicked = false; }); 

рдЪреВрдХ рдЪрд░ рдХреБрдЫ рддреНрд░реБрдЯрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЕрдЧрд░ dx рдЗрд╕ рддреНрд░реБрдЯрд┐ рд╕реЗ рдХрдо рд╣реИ, рддреЛ рдПрдиреАрдореЗрд╢рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдорд╛рди рдХреЛ рдЖрдБрдЦ рд╕реЗ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдЪреБрдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЖрд╡реЗрдЧ рдЪрд░ рд╕реНрд▓рд╛рдЗрдбрд░ рдкрд░ рдХреБрдЫ рдЖрд╡реЗрдЧ рдЕрднрд┐рдирдп рдХрд╛ рдореВрд▓реНрдп рд╣реИ, рдФрд░ рдЖрдВрджреЛрд▓рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рджреВрд░реА рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЧреБрдгрд╛рдВрдХ dx рджреНрд╡рд╛рд░рд╛ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдЖрдВрдЦ рд╕реЗ рднреА рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред
рдЧрддрд┐ - рдПрдиреАрдореЗрд╢рди рдЧрддрд┐ред
рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдмрджрд▓рдХрд░, рд╕реНрдХреНрд░реЙрд▓ рдмрд╛рд░ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдирд┐рд╖реНрдХрд░реНрд╖


рдпрд╣ рд╕реНрдХреНрд░реЙрд▓ рдмрд╛рд░ рдХрд╛ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╡рд╣ рднрд╛рдЧ рдЬреЛ рдбреНрд░реИрдЧ рдПрдВрдб рдбреНрд░реЙрдк рдФрд░ "рдХрд╛рдЗрдиреЗрдЯрд┐рдХ" рд╕реНрдХреНрд░реЙрд▓ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдХреЛрдб рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдФрд░ рдкреНрд░рднрд╛рд╡ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред
рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдкреГрд╖реНрдард╛рдВрдХрди, рдЫрд╡рд┐ рджреАрд░реНрдШрд╛рдУрдВ рдЖрджрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ред

UPD рдПрдХ jQuery рдкреНрд▓рдЧрдЗрди рдмрдирд╛рдпрд╛, рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдБ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЖрдк рдПрдХ рд╕рд░рд▓ рд╣рд┐рдВрдбреЛрд▓рд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ ...

рдЙрдкрдпреЛрдЧ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:
 <div id="track"></div> 

 $('#track').kineticBar() 

Source: https://habr.com/ru/post/In136374/


All Articles