comparison src/index.html @ 5:1293cb0d30da

minor
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 23 Apr 2023 17:14:52 -0600
parents 0130ae25ef94
children 4d699321068f
comparison
equal deleted inserted replaced
4:0130ae25ef94 5:1293cb0d30da
2 <html> 2 <html>
3 <head> 3 <head>
4 <meta name="viewport" content="width=device-width, initial-scale=1"> 4 <meta name="viewport" content="width=device-width, initial-scale=1">
5 <style> 5 <style>
6 @import "/site.css"; 6 @import "/site.css";
7
8 code {
9 white-space: pre-line;
10 display: block;
11 margin-left: 32px;
12 }
7 </style> 13 </style>
8 <title>Reactionary Drag and Drop</title> 14 <title>Reactionary Drag and Drop</title>
9 </head> 15 </head>
10 <body> 16 <body>
11 <h1>Reactionary Drag and Drop</h1> 17 <h1>Reactionary Drag and Drop</h1>
24 <li><a href="/examples/simple.html">Simple</a></li> 30 <li><a href="/examples/simple.html">Simple</a></li>
25 <li><a href="/examples/handle.html">Handle</a></li> 31 <li><a href="/examples/handle.html">Handle</a></li>
26 <li><a href="/examples/drop.html">Drop</a></li> 32 <li><a href="/examples/drop.html">Drop</a></li>
27 </ul> 33 </ul>
28 <p>These use <a href="/dad.js">dad.js</a> and <a href="/dad.css">dad.css</a>. 34 <p>These use <a href="/dad.js">dad.js</a> and <a href="/dad.css">dad.css</a>.
35
36 <p>When dragging starts, this happens:
37 <code>
38 original = dad.whatToDrag(draggable);
39 dragging = original.cloneNode(true);
40 original.parentNode.appendChild(dragging);
41 </code>
42 </p>
43
44 <p>Most drag-and-drop tools drag the original by setting <b>position</b> to <b>relative</b> and moving it by setting <b>left</b> and <b>top</b>. But this breaks if the DOM is changed. So instead I clone the original and set <b>position</b> of the clone to <b>fixed</b>. This way, changing the DOM doesn't affect the location of what is being dragged.</p>
29 </body> 45 </body>
30 </html> 46 </html>