рдПрдЪрдЯреАрдПрдордПрд▓ 5 рдкрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЦреАрдВрдЪрдирд╛ рдФрд░ рдЧрд┐рд░рд╛рдирд╛ рдХрд┐рд╕реА рдХреЛ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдореИрдВ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ HTML5 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рдХрдИ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕реБрдВрджрд░ рдЦреАрдВрдЪрдиреЗ рдФрд░ рдбреНрд░реЙрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рддрд░реАрдХреЗ рд╕реЗ рдХреБрдЫ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рдкреГрд╖реНрда рдкрд░ рдЯрд╛рдЗрдк рдП рдХреЗ рддрддреНрд╡реЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдпрд╛ рд╕рдореВрд╣ рдХреЛ рдЯрд╛рдЗрдк рдмреА рдХреЗ рдПрдХ рддрддреНрд╡ рдореЗрдВ рдЦреАрдВрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╡рд╣ рдПрдХ рддрддреНрд╡ рдпрд╛ рдХрдИ рдХреЛ рдбреНрд░рдЧ рдХрд░рддрд╛ рд╣реИред рдПрдХ рддрддреНрд╡ рдХреЛ рдЦреАрдВрдЪрдирд╛ рд╕рд░рд▓ рд╣реИ, рдмрд╕ рдбреНрд░реИрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╕рдВрдкрддреНрддрд┐ рдХреЛ
true
рд╕реЗрдЯ рдХрд░реЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╕рднреА рдиреЗ рдХрд┐рдпрд╛ред
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдШрд╕реАрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЗрдЬ рддреИрдпрд╛рд░ рд╣реИред
item
рд╡рд░реНрдЧ рд╡рд╛рд▓реЗ рддрддреНрд╡реЛрдВ рдХреЛ
dropzone
рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рддрддреНрд╡ рдореЗрдВ рдЪреБрдирд╛ рдФрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (
dropzone
рдмреЙрдХреНрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ
dropzone
)ред
рдмрджрд╕реВрд░рдд рдЦреАрдВрдЪреЗрдВ рдФрд░ рдбреНрд░реЙрдк рдбреЗрдореЛрдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рддрддреНрд╡ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЖрдк рдХреЗрд╡рд▓ рдЪрдпрдирд┐рдд рддрддреНрд╡реЛрдВ рдХреЛ рдЦреАрдВрдЪ рдФрд░ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдПрдХ рдмрд╛рд░ рдореЗрдВ рдХрдИ рддрддреНрд╡реЛрдВ рдХреЛ рдЦреАрдВрдЪ рдФрд░ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдкреГрд╖реНрда рд╕рдВрд░рдЪрдирд╛:
<div class="items-container"> <div class="items"> <div class="item"><span>a</span></div> <div class="item"><span>b</span></div> <div class="item"><span>c</span></div> <div class="item"><span>d</span></div> <div class="item"><span>e</span></div> <div class="item"><span>f</span></div> <div class="item"><span>g</span></div> </div> </div> <div class="dropzone-container"> <div class="dropzone"></div> </div>
рдХреЛрдб:
рдпрджрд┐ рдЖрдкрдиреЗ рдХрдИ рддрддреНрд╡реЛрдВ рдХреЛ рдЪреБрдирдиреЗ рдФрд░ рдЦреАрдВрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рддреЛ рдЖрдкрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЗрд╕ рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдХреЗрд╡рд▓ рдПрдХ рдиреЗрддреНрд░рд╣реАрди рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдм рд╣рдо рдЗрд╕реЗ рдареАрдХ рдХрд░ рджреЗрдВрдЧреЗ!
рдкреБрд░рд╛рдиреЗ рдлреИрд╢рди рдореЗрдВ рдпрд╣ рдмрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╣рдо рдорд╛рдЙрд╕ рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдорд╛рдЙрд╕ рдХреЗ рдкреАрдЫреЗ рддрддреНрд╡реЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЛ рдЦреАрдВрдЪрддреЗ рд╣реИрдВред HTML5 рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдХрдВрдзреЛрдВ рдкрд░ рдПрдиреАрдореЗрд╢рди рдХреА рджреЗрдЦрднрд╛рд▓ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдХреЗ рдЗрд╕ рджрд┐рдирдЪрд░реНрдпрд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╣реА рддрддреНрд╡ рдХреЗ рд╕рд╛рде рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
"рд╕рд╣реА рдЪрд┐рддреНрд░" рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рддрддреНрд╡реЛрдВ рдХреЛ рдЦреАрдВрдЪрддреЗ рд╕рдордп
setDragImage
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА
setDragImage
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
function setDragImage(image, x, y)
image
- рд╡рд╣ рддрддреНрд╡ рдЬрд┐рд╕рдХреА рдЫрд╡рд┐ рдЦреАрдВрдЪрддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдПрдЧреАред
x
рдФрд░
y
рдСрдлрд╕реЗрдЯ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдбреНрд░реИрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдВ, рдЬрдм рд╣рдо
e.dataTransfer.setData('text/html', html)
рдХреЛ рдЦреАрдВрдЪрдиреЗ рдФрд░ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ
setDragImage
рд╡рд┐рдзрд┐ рд╕реЗ рдкрд╛рд╕ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдЪрд┐рддреНрд░ рддрддреНрд╡ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдкрд╣рд▓реЗ рд╣рдо рдЙрди рдЪрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ:
frame
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╡рд╛рдВрдЫрд┐рдд рдЖрдХрд╛рд░ рдФрд░ рдЪрд┐рддреНрд░ рддрддреНрд╡ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕реЗрдЯ рдХрд░реЗрдВ:
$image.css({ position: 'absolute',
рдЪрдпрдирд┐рдд рддрддреНрд╡реЛрдВ рдХреА рдкреНрд░рддрд┐рдпреЛрдВ рдХреЛ
$image
:
$selectedItems.each(function(i, item) { var $item = $(item), $clone = $item.clone(), itemOffset = $item.offset();
рдЕрдВрддрд┐рдо рд░рд╛рдЧ:
рд╣рдо рдЖрдпрдд рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП
getFrame
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЪрдпрдирд┐рдд рддрддреНрд╡ рдлрд┐рдЯ рд╣реЛрддреЗ рд╣реИрдВ:
function getFrame($items) { var offset = $items.first().offset(), frame = { lx: offset.left, ly: offset.top, rx: offset.left, ry: offset.top }; $items.each(function() { var $this = $(this), offset = $this.offset(), width = $this.width(), height = $this.height(); if (offset.left < frame.lx) frame.lx = offset.left; if (offset.top < frame.ly) frame.ly = offset.top; if (offset.left + width > frame.rx) frame.rx = offset.left + width; if (offset.top + height > frame.ry) frame.ry = offset.top + height; }); return frame; }
рд╕реБрдВрджрд░ рдЦреАрдВрдЪреЗрдВ рдФрд░ рдбреНрд░реЙрдк рдбреЗрдореЛрдЧрд┐рдЯрд╣рдм рдирдореВрдирд╛ рдХреЛрдб