рд╡реИрдХрд▓реНрдкрд┐рдХ .sortable - рдирдИ jQuery рд╕реВрдЪреА рд╕реЙрд░реНрдЯрд┐рдВрдЧ рд╕рдорд╛рдзрд╛рди

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

JsFiddle ( рдЕрд╕рдВрдЧрдд рдХреЛрдб) рдкрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рджреЗрдЦреЗрдВ ред

HTML рдорд╛рд░реНрдХрдЕрдк
<!DOCTYPE html> <html><head> <meta charset='utf-8'> <link type='text/css' rel='stylesheet' href='style.css'> <script type='text/javascript' src='http://code.jquery.com/jquery-2.0.3.min.js'></script> <script type='text/javascript' src='actions.js'></script> </head><body> <div id="container"> <div class="drag">1</div> <div class="drag">2</div> <div class="drag">3</div> <div class="drag">4</div> <div class="drag">5</div> </div> </body></html> 


style.css
 #container {position:absolute; width:500px; top:100px;} .drag {position:relative; cursor:default; z-index:1;} 


actions.js
 $(document).ready(function(){ $.fn.draggable = function(){ //     function disableSelection(){ return false; } //    $(this).mousedown(function(e){ var drag = $(this); //    var posParentTop = drag.parent().offset().top; //    var posParentBottom = posParentTop + drag.parent().height(); //     var posOld = drag.offset().top; //       var posOldCorrection = e.pageY - posOld; //     z- drag.css({'z-index':2, 'background-color':'#eeeeee'}); //   var mouseMove = function(e){ //      var posNew = e.pageY - posOldCorrection; //        if (posNew < posParentTop){ //   ,    drag.offset({'top': posParentTop}); //      DOM,   ( )  //    ,   if (drag.prev().length > 0 ) { drag.insertBefore(drag.prev().css({'top':-drag.height()}).animate({'top':0}, 100)); } //        } else if ((posNew + drag.height()) > posParentBottom){ //   ,    +   -   drag.offset({'top': posParentBottom - drag.height()}); //      DOM,   ( )  //    ,   if (drag.next().length > 0 ) { drag.insertAfter(drag.next().css({'top':drag.height()}).animate({'top':0}, 100)); } //      } else { //    (   ) drag.offset({'top': posNew}); //        if (posOld - posNew > drag.height() - 1){ //      DOM drag.insertBefore(drag.prev().css({'top':-drag.height()}).animate({'top':0}, 100)); //   drag.css({'top':0}); //        posOld = drag.offset().top; posNew = e.pageY - posOldCorrection; posOldCorrection = e.pageY - posOld; //        } else if (posNew - posOld > drag.height() - 1){ //      DOM drag.insertAfter(drag.next().css({'top':drag.height()}).animate({'top':0}, 100)); drag.css({'top':0}); posOld = drag.offset().top; posNew = e.pageY - posOldCorrection; posOldCorrection = e.pageY - posOld; } } }; //    var mouseUp = function(){ //    $(document).off('mousemove', mouseMove).off('mouseup', mouseUp); //      $(document).off('mousedown', disableSelection); //         drag.animate({'top':0}, 100, function(){ //  z-     drag.css({'z-index':1, 'background-color':'transparent'}); }); //      // (cookie  post-  ,    ) }; //         //   ,      $(document).on('mousemove', mouseMove).on('mouseup', mouseUp).on('contextmenu', mouseUp); //      $(document).on('mousedown', disableSelection); //  ,     (,    ) $(window).on('blur', mouseUp); }); } $('.drag').draggable(); }); 

рдХреЛрдб (рдпрд╣рд╛рдВ рдФрд░ jsFiddle рдкрд░) рдЦреЛрдЬреЗ рдЧрдП рджреЛрд╖реЛрдВ рдХреЗ рд╕реБрдзрд╛рд░ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕реЗ рдореИрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░реВрдВрдЧрд╛ред
рдЕрдирд╛рд░рдХреНрд╖рд┐рдд рдореБрджреНрджреЗ: рдЕрдкрдиреЗ рдореВрд▓ рдХрдВрдЯреЗрдирд░ рдХреА рд╕реАрдорд╛рдУрдВ рд╕реЗ рдкрд░реЗ рдЗрд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рдЦреАрдВрдЪрддреЗ рд╕рдордп рдПрдХ рддрддреНрд╡ рдХреЛ рдорд░реЛрдбрд╝рддреЗ рд╣реБрдПред

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


All Articles