Initializing
Liveweave
Web
expand_more
home
Home
data_object
CSS Explorer
arrow_outward
Palette
Color Explorer
arrow_outward
Polyline
Graphics Editor
arrow_outward
outbox_alt
Generative AI
arrow_outward
frame_source
Python Playground
New
arrow_outward
build
Tools
expand_more
restart_alt
Load "Hello Weaver!"
post_add
Generate Lorem ipsum...
code
Format HTML
code_blocks
Format CSS
data_object
Format JavaScript
library_add
Library
expand_more
A
Algolia JS
Animate CSS
Apex Charts JS
B
Bulma CSS
Bootstrap
C
Chart JS
Chartist
Create JS
D
D3
Dojo
F
Foundation
Fullpage JS
G
Granim JS
Google Charts
H
Halfmoon
J
jQuery
M
Materialize
Moment JS
Masonry JS
Milligram CSS
P
Pure CSS
Primer CSS
Popper JS
Pattern CSS
Picnic CSS
R
React JS
Raphael JS
Raisin CSS
S
Semantic UI
Skeleton CSS
Spectre CSS
Tachyons CSS
T
Tailwind
Three JS
U
UI Kit
Vis JS
W
Water CSS
download
Download
expand_more
developer_mode
Download as HTML
folder_zip
Download as .ZIP
cloud_upload
Save
account_circle
Login
settings
Settings
expand_more
14
px
Live mode
Night mode
Line number
Mini map
Word wrap
sync_alt
Reset Settings
smart_display
Run
<!DOCTYPE html> <html> <head> <title>Drag and Drop</title> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.js"></script> <script src="http://fabricjs.com/lib/fabric.js"></script> <!--script src="js/Delicious_500.font.js"></script--> <link rel="stylesheet" href="css/main.css"> </head> <body> <div id="wrapper"> <table> <tr> <td> <ul id="image-list"> <li><img src="http://upload.wikimedia.org/wikipedia/commons/c/c3/Aurora_as_seen_by_IMAGE.PNG" class="draggable-image"></li> </ul> </td><td> <div id="content"> <canvas id="canvas" width="640" height="512"> Canvas not supported in your browser! </canvas> <div id="canvas-drop-area"></div> <textarea id="text-input"></textarea> <button id="create-text-obj">Go</button> <button id="save-as-image">Save as Image</button> </div> </td><td> <ul id="image-list"> <li><img src="http://www.gettyimages.com/CMS/Pages/ImageCollection/StaticContent/image1_%20164248809.jpg" class="draggable-image"></li> </ul> </td></tr> <tr><td><b>Delete</b></td><td></td><td></td></tr> </table> </div> <script src="js/main.js"></script> </body> </html>
#wrapper{ margin: 0 auto; width: 100%; border: 1px solid #999; padding: 5px; overflow: hidden; } #content{ float:left; } #canvas{ width:800px; height:450px; overflow:hidden; float:left; border:1px solid #000000; } #canvas-drop-area{ display:none; position: absolute; top:14px; width:800px; height:450px; background:transparent; } #canvas-drop-area.active{ display:block; border: 1px solid red; } #image-list{ margin: 0px; padding: 0px; float:right; width:150px; } #image-list li{ list-style: none; overflow: hidden; margin-bottom: 10px; border: 2px dashed #000; cursor:move; } .draggable-image{ width: 150px; max-height: 175px; float:left; }
(function () { var canvas = new fabric.Canvas('canvas'); var canvas_el = document.getElementById('canvas'); $(document).ready(function () { $('#create-text-obj').on('click', function () { var text = $('#text-input').val(); create_text_obj(text); }); $('#save-as-image').on('click', function () { save_canvas(); }); /* Bring active object to the front of the canvas */ canvas.on('mouse:down', function (e) { if (!(typeof (e.target) === 'undefined')) { canvas.bringToFront(e.target); } }); /* Define drag and drop zones */ var $drop = $('#canvas-drop-area'), $gallery = $('td > #image-list li'); /* Define the draggable properties */ $gallery.draggable({ start: function () { $drop.css({ 'display': 'block' }) }, stop: function () { $(this).find('img').css({ 'opacity': 0.4 }); $drop.css({ 'display': 'none' }); }, revert: true }); /* Define the events for droppable properties */ $drop.droppable({ over: function (event, ui) { $(this).addClass('active'); }, drop: function (event, ui) { var image = event.originalEvent.target.src, loc = windowToCanvas(canvas_el, event.clientX, event.clientY); alert(image); img_to_canvas(image, loc.x, loc.y); }, out: function (event, ui) { $(this).removeClass('active'); }, deactivate: function (event, ui) { $(this).removeClass('active'); } }); }); var create_text_obj = function(text) { var text_obj = new fabric.Text(text, { fontFamily: 'Delicious_500', left: 600, top: 225, fontSize: 80, textAlign: "left", fill: "#FF0000" // Set text color to red }); canvas.add(text_obj); } var img_to_canvas = function(image, x, y) { var img = new Image(); img.src = image; fabric.Image.fromURL(img.src, function (source) { img = source.set({ left: 320, top: 256, angle: 0 }); canvas.add(img); canvas.renderAll(); }); } var windowToCanvas = function(canvas, x, y) { var bbox = canvas.getBoundingClientRect(); return { x: x - bbox.left * (canvas.width / bbox.width), y: y - bbox.top * (canvas.height / bbox.height) }; } var save_canvas = function() { window.location = canvas.toDataURL("image/png"); } })();