zoukankan      html  css  js  c++  java
  • HTML5 -canvas拖拽、移动 绘制图片可操作移动,拖动

    关于canvas 的基础知识就不多说了,可以进这个网址学习

    http://www.w3school.com.cn/html5/html_5_canvas.asp

    对于canvas 和 SVG 其实一开始个人是比较倾向于SVG多一点,不过后来工作需要,又学习了下canvas, 
    这两个之间主要不同是 canvas是在JavaScript中绘制,SVG则是在 XML 绘制

    其实canvas 主要的工作就是绘制图像,图表之类的工作,对于一些可操作的特效个人还是更喜欢用canvas + div 来实现; 
    如果不是特别难的需求能做到尽量做<( ̄︶ ̄)↗[GO!]

    列出一个demo 这个主要功能就是canvas 内图片拖拽 
    (想要拖拽什么可以直接更换JavaScript 中第3、4、5句);

    说是拖拽,但也只是目测看起是 “像”是,其实在每次鼠标移动的时候都会先清掉之前画好的,再在鼠标所在的位置重新绘制一个,全套demo如下:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6     <style>
     7         body,div{
     8             margin:0;
     9             padding:0;
    10         }
    11         #d1{
    12             500px;
    13             height: 400px;
    14             border: 2px solid #00FFD1;
    15         }
    16     </style>
    17 </head>
    18 <body>
    19 
    20 
    21 <div id="d1">
    22     <canvas id="myCanvas" width="500" height="400">
    23         <p>您的系统不支持此程序!</p>
    24     </canvas>
    25 </div>
    26 
    27 <script>
    28     const canva=document.getElementById("myCanvas");
    29     const cansText=canva.getContext("2d");
    30 
    31     let img = new Image();
    32     img.src="http://www.w3school.com.cn/i/ct_html5_canvas_circle.gif";
    33     cansText.drawImage(img,50,50,150,100);
    34     //在事件外声明需要用到的变量
    35     let ax,ay,x,y;
    36 
    37     canva.onmousedown=function (e) {
    38 
    39         canva.onmousemove = function(e){
    40              x= e.clientX;y=e.clientY;
    41 
    42             //限制移动不能超出画布
    43             (x<173)? ax=75 : ax=425;
    44             (y<148)? ay=50 : ay=350;
    45 
    46             (x < 425 && x >75)? x =e.clientX : x =ax;
    47 
    48             (y > 50 && y <350) ? y=e.clientY : y=ay;
    49 
    50             //先清除之前的然后重新绘制
    51             cansText.clearRect(0,0,canva.width,canva.height);
    52 
    53             cansText.drawImage(img,x-75,y-50,150,100);
    54         };
    55 
    56         canva.onmouseup = function(){
    57             canva.onmousemove = null;
    58             canva.onmouseup = null;
    59         };
    60     }
    61 
    62 </script>
    63 </body>
    64 </html>

    补充:点击图片非中心移动时,会自动跳动到,图片以当前光标为中心

    原链:https://blog.csdn.net/freedomVenly/article/details/79042536

  • 相关阅读:
    css 三种布局定位
    居中布局注意的要点
    CSS盒子3D模型
    SpringMVC中JSP取不到ModelAndView的数据原因
    如何让 height:100%; 起作用
    css形变
    消除html元素之间空白
    h5移动端网页头部标签模板
    大数据之Hadoop核心之HDFS
    大数据之Hadoop集群搭建
  • 原文地址:https://www.cnblogs.com/7qin/p/9615406.html
Copyright © 2011-2022 走看看