tag attribute javascript jquery html5 html5-canvas draw

javascript - attribute - Dibuja líneas entre 2 elementos en la página html.



title tag html (4)

Necesito dibujar líneas entre 2 elementos en la página html

los resultados deben ser así: http://img2.timg.co.il/forums/1_173873919.JPG

Me pregunté cuál es la mejor manera de hacer esto.

  1. usando lienzo y html5
  2. utilizando la imagen de fondo.
  3. hacer por ajax dinamico la imagen

Me gustaría saber cuál es la mejor manera y si hay una demostración simple en la web.

Gracias


Aquí hay un link a un gist que usa javascript (jquery) para dibujar una ruta (y volver a dibujarla en caso de cambiar el tamaño de la ventana) entre 2 elementos html.

demo


Hay una forma muy sencilla de lograr esto con algunos Javascript y la etiqueta de canvas HTML.

DEMO AQUÍ que muestra cómo dibujar el elemento más complicado en su ejemplo, que tiene un campo con líneas que se ramifican a otros dos campos.

Cómo funciona (básicamente) es como sigue.

Inicia la función de dibujo con:

context.beginPath();

Pase las coordenadas deseadas a la función con:

context.moveTo(100, 150); context.lineTo(450, 50);

Luego ejecuta el sorteo con:

context.stroke();

Hay algunos grandes tutoriales HERE


Muchas formas de resolver su necesidad:

Aquí hay una solución usando un lienzo html: http://jsfiddle.net/m1erickson/86f4C/

Código de ejemplo (podría estar completamente automatizado con jquery + css-classes):

<!doctype html> <html> <head> <link rel="stylesheet" type="text/css" media="all" href="css/reset.css" /> <!-- reset css --> <script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script> <script src="http://code.jquery.com/ui/1.9.2/jquery-ui.min.js"></script> <style> body{ background-color: ivory; margin:0; padding:0; } #canvas{ position:absolute; border:1px solid red; width:100%;height:100%; } .draggable{ width:50px; height:30px; background:skyblue; border:1px solid green; } .right{ margin-left:100px; background:salmon; } #wrap2{margin-top:-95px;} </style> <script> $(function(){ var canvas=document.getElementById("canvas"); var ctx=canvas.getContext("2d"); canvas.width=window.innerWidth; canvas.height=window.innerHeight; ctx.lineWidth=3; var $canvas=$("#canvas"); var canvasOffset=$canvas.offset(); var offsetX=canvasOffset.left; var offsetY=canvasOffset.top; var $0=$("#0"); var $1=$("#1"); var $2=$("#2"); var $0r=$("#0r"); var $1r=$("#1r"); var $2r=$("#2r"); var connectors=[]; connectors.push({from:$0,to:$0r}); connectors.push({from:$1,to:$0r}); connectors.push({from:$2,to:$2r}); connect(); $(".draggable").draggable({ // event handlers start: noop, drag: connect, stop: noop }); function noop(){} function connect(){ ctx.clearRect(0,0,canvas.width,canvas.height); for(var i=0;i<connectors.length;i++){ var c=connectors[i]; var eFrom=c.from; var eTo=c.to; var pos1=eFrom.offset(); var pos2=eTo.offset(); var size1=eFrom.size(); var size2=eTo.size(); ctx.beginPath(); ctx.moveTo(pos1.left+eFrom.width()+3,pos1.top+eFrom.height()/2); ctx.lineTo(pos2.left+3,pos2.top+eTo.height()/2); ctx.stroke(); } } }); // end $(function(){}); </script> </head> <body> <canvas id="canvas" width=300 height=300></canvas> <div> <div id="0" class="draggable">0</div> <div id="1" class="draggable">1</div> <div id="2" class="draggable">2</div> </div> <div id="wrap2"> <div id="0r" class="draggable right">0</div> <div id="1r" class="draggable right">1</div> <div id="2r" class="draggable right">2</div> </div> </body> </html>


usa <canvas> si quieres usar cosas simples como círculos e imágenes y cosas para divs, querrías buscar alternativas como en Jquery o, como dijiste, en javascript. Para <canvas> puedes probar this y this