PSD-Tutorials.de
Forum für Design, Fotografie & Bildbearbeitung
Tutkit
Agentur
Hilfe
Kontakt
Start
Forum
Aktuelles
Besonderer Inhalt
Foren durchsuchen
Tutorials
News
Anmelden
Kostenlos registrieren
Aktuelles
Suche
Suche
Nur Titel durchsuchen
Von:
Menü
Anmelden
Kostenlos registrieren
App installieren
Installieren
JavaScript ist deaktiviert. Für eine bessere Darstellung aktiviere bitte JavaScript in deinem Browser, bevor du fortfährst.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen
alternativen Browser
verwenden.
Antworten auf deine Fragen:
Neues Thema erstellen
Start
Forum
Sonstiges
Webdesign, Webentwicklung & Programmierung
PHP, Javascript, jQuery, Ajax, nodeJS, MySQL...
HTML5 Drag + Drop
Beitrag
<blockquote data-quote="Duddle" data-source="post: 2533507" data-attributes="member: 17775"><p>Nicht notwendig.</p><p></p><p>Ich habe mal ein Minimalbeispiel gebastelt, dass so ziemlich alles umsetzt. Entweder nutzt du das als Inspiration oder baust drumherum dein Zeug.</p><p></p><p>schippo.php:</p><p>[html]</p><p><!DOCTYPE html></p><p><html lang="en"></p><p><head></p><p> <meta charset="UTF-8"></p><p> <title></title></p><p> <style type="text/css"></p><p> #kerzenbereich {</p><p> border: 1px solid red;</p><p> width:900px;</p><p> height:900px;</p><p> margin: 1em auto;</p><p> position:relative;</p><p> }</p><p> </style></p><p></head></p><p><body></p><p><script src="http://code.jquery.com/jquery-1.11.3.min.js"></script></p><p><script src="http://code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script></p><p><script></p><p> (function() { </p><p> 'use strict';</p><p></p><p> $(document).ready(function()</p><p> {</p><p> $("#verschieben").draggable({</p><p> helper: "clone",</p><p> cursor: "move",</p><p> opacity: 0.7,</p><p> containment: "parent",</p><p> scroll: false</p><p> });</p><p></p><p> $("#verschieben").bind('dragstop', function(event, ui) {</p><p></p><p> $(this).after($(ui.helper).clone().draggable({</p><p> helper: "original",</p><p> cursor: "move",</p><p> opacity: 0.7,</p><p> containment: "parent",</p><p> scroll: false</p><p> }).attr("id", "neueKerze"));</p><p> </p><p> $("#verschieben").unbind('dragstop');</p><p></p><p> var neueKerze = $("#neueKerze");</p><p> neueKerze.append('<a id="speicherlink" href="#">speichern</a>');</p><p></p><p> $("#speicherlink").bind("click", function() {</p><p> $.post( "kerzenverwaltung.php", { x: neueKerze.position().left, y: neueKerze.position().top } );</p><p> $(this).remove();</p><p> neueKerze.draggable('disable');</p><p> return false;</p><p> });</p><p> });</p><p></p><p> });</p><p> })();</p><p></script></p><p><div id="kerzenbereich"></p><p> <div class="ui-draggable ui-draggable-handle" id="verschieben"><img src="http://www.4-wände.de/hpfixseparat_blumenkerze_2.gif"></div></p><p> <?php include('kerzenverwaltung.php'); ?></p><p></div></p><p></body></p><p></html></p><p>[/html]</p><p>Wichtige Aspekte:</p><ul> <li data-xf-list-type="ul">#kerzenbereich braucht eine CSS-Positionierung, in meinem Fall <em>relative</em>, damit die Kerzen dann gescheit absolut darin positioniert werden können</li> <li data-xf-list-type="ul">dragstop löst folgende Schritte aus:<ul> <li data-xf-list-type="ul">klont das Element und initialisiert es wie ein anderes Draggable und gibt ihm die ID <em>neueKerze</em></li> <li data-xf-list-type="ul">löst den dragstop-Eventhandler von der Ursprungskerze, damit nur eine Kerze gezogen werden kann</li> <li data-xf-list-type="ul">hängt einen kleinen Speicher-Link an <em>neueKerze</em></li> <li data-xf-list-type="ul">bindet an diesen Link einen POST -Aufruf, entfernt den Link, deaktiviert das Draggable für <em>neueKerze </em>(ist somit "fest")</li> </ul></li> <li data-xf-list-type="ul">in #kerzenbereich inkludiere ich direkt die kerzenverwaltung.php, die ohne POST nur die vorhandenen Positionen zurückgibt, siehe weiter unten</li> </ul><p>kerzenverwaltung.php:</p><p>[php]</p><p><?php</p><p></p><p>$dateiname = "kerzenpositionen.txt";</p><p>if(isset($_POST) && isset($_POST['x']) && isset($_POST['y'])) {</p><p> //speichern</p><p> $x = (int)($_POST['x']);</p><p> $y = (int)($_POST['y']);</p><p> $daten = $x.";".$y."\n";</p><p></p><p> $fh = fopen($dateiname, "a");</p><p> fwrite($fh, $daten);</p><p> fclose($fh);</p><p>} else {</p><p> //auslesen</p><p> $zeilen = file($dateiname, FILE_IGNORE_NEW_LINES);</p><p> foreach($zeilen as $zeile) {</p><p> $zeile = explode(";", $zeile);</p><p> $x = $zeile[0];</p><p> $y = $zeile[1];</p><p></p><p> echo '<div style="position: absolute; left: '.$x.'px; top: '.$y.'px;">';</p><p> echo '<img src="http://www.4-wände.de/hpfixseparat_blumenkerze_2.gif" style="width: 68px; height: 180px;">';</p><p> echo '</div>';</p><p> }</p><p>}</p><p></p><p>?></p><p>[/php]</p><p>Zuerst wird unterschieden, ob ein POST ankommt. Im Speichern-Fall werden die beiden Werte einfach als Zeile in eine Datei geschrieben. Im Auslesen-Fall wird diese Datei zeilenweise ausgelesen und das entsprechende HTML erzeugt.</p><p></p><p>kerzenpositionen.txt ist nichts sehenswertes. Es enthält dann sowas wie [code]</p><p>465;99</p><p>249;97</p><p>102;14</p><p>384;172</p><p>[/code]</p><p></p><p>Was hier fehlt ist eine Fehlerbehandlung (nur minimalst vorhanden) und ein paar deiner Finessen (wie das :hover bei den Kerzen), aber die kannst du wahrscheinlich selbst ergänzen.</p><p>Falls du Fragen zum Code hast oder deine Erweiterungs-/Implementationsversuche scheitern, sag Bescheid.</p><p></p><p></p><p>Duddle</p></blockquote><p></p>
[QUOTE="Duddle, post: 2533507, member: 17775"] Nicht notwendig. Ich habe mal ein Minimalbeispiel gebastelt, dass so ziemlich alles umsetzt. Entweder nutzt du das als Inspiration oder baust drumherum dein Zeug. schippo.php: [html] <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> #kerzenbereich { border: 1px solid red; width:900px; height:900px; margin: 1em auto; position:relative; } </style> </head> <body> <script src="http://code.jquery.com/jquery-1.11.3.min.js"></script> <script src="http://code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script> <script> (function() { 'use strict'; $(document).ready(function() { $("#verschieben").draggable({ helper: "clone", cursor: "move", opacity: 0.7, containment: "parent", scroll: false }); $("#verschieben").bind('dragstop', function(event, ui) { $(this).after($(ui.helper).clone().draggable({ helper: "original", cursor: "move", opacity: 0.7, containment: "parent", scroll: false }).attr("id", "neueKerze")); $("#verschieben").unbind('dragstop'); var neueKerze = $("#neueKerze"); neueKerze.append('<a id="speicherlink" href="#">speichern</a>'); $("#speicherlink").bind("click", function() { $.post( "kerzenverwaltung.php", { x: neueKerze.position().left, y: neueKerze.position().top } ); $(this).remove(); neueKerze.draggable('disable'); return false; }); }); }); })(); </script> <div id="kerzenbereich"> <div class="ui-draggable ui-draggable-handle" id="verschieben"><img src="http://www.4-wände.de/hpfixseparat_blumenkerze_2.gif"></div> <?php include('kerzenverwaltung.php'); ?> </div> </body> </html> [/html] Wichtige Aspekte: [LIST] [*]#kerzenbereich braucht eine CSS-Positionierung, in meinem Fall [I]relative[/I], damit die Kerzen dann gescheit absolut darin positioniert werden können [*]dragstop löst folgende Schritte aus: [LIST] [*]klont das Element und initialisiert es wie ein anderes Draggable und gibt ihm die ID [I]neueKerze[/I] [*]löst den dragstop-Eventhandler von der Ursprungskerze, damit nur eine Kerze gezogen werden kann [*]hängt einen kleinen Speicher-Link an [I]neueKerze[/I] [*]bindet an diesen Link einen POST -Aufruf, entfernt den Link, deaktiviert das Draggable für [I]neueKerze [/I](ist somit "fest") [/LIST] [*]in #kerzenbereich inkludiere ich direkt die kerzenverwaltung.php, die ohne POST nur die vorhandenen Positionen zurückgibt, siehe weiter unten [/LIST] kerzenverwaltung.php: [php] <?php $dateiname = "kerzenpositionen.txt"; if(isset($_POST) && isset($_POST['x']) && isset($_POST['y'])) { //speichern $x = (int)($_POST['x']); $y = (int)($_POST['y']); $daten = $x.";".$y."\n"; $fh = fopen($dateiname, "a"); fwrite($fh, $daten); fclose($fh); } else { //auslesen $zeilen = file($dateiname, FILE_IGNORE_NEW_LINES); foreach($zeilen as $zeile) { $zeile = explode(";", $zeile); $x = $zeile[0]; $y = $zeile[1]; echo '<div style="position: absolute; left: '.$x.'px; top: '.$y.'px;">'; echo '<img src="http://www.4-wände.de/hpfixseparat_blumenkerze_2.gif" style="width: 68px; height: 180px;">'; echo '</div>'; } } ?> [/php] Zuerst wird unterschieden, ob ein POST ankommt. Im Speichern-Fall werden die beiden Werte einfach als Zeile in eine Datei geschrieben. Im Auslesen-Fall wird diese Datei zeilenweise ausgelesen und das entsprechende HTML erzeugt. kerzenpositionen.txt ist nichts sehenswertes. Es enthält dann sowas wie [code] 465;99 249;97 102;14 384;172 [/code] Was hier fehlt ist eine Fehlerbehandlung (nur minimalst vorhanden) und ein paar deiner Finessen (wie das :hover bei den Kerzen), aber die kannst du wahrscheinlich selbst ergänzen. Falls du Fragen zum Code hast oder deine Erweiterungs-/Implementationsversuche scheitern, sag Bescheid. Duddle [/QUOTE]
Bilder bitte
hier hochladen
und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Zitate einfügen…
Authentifizierung
Wenn ▲ = 5, ▼ = 2 und ■ = 7, was ist ▲ × ▼ + ■?
Antworten
Start
Forum
Sonstiges
Webdesign, Webentwicklung & Programmierung
PHP, Javascript, jQuery, Ajax, nodeJS, MySQL...
HTML5 Drag + Drop
Oben