这里使用的原理是使用css把div中关于html的元素通过布局位置,以及透明相关的设置,将其设置到canvas上,这样看起来就是在canvas绘制的按钮。然后使用JavaScript获取按钮的数据或者其他数据设置到canvas中。

程序运行截图如下:

点击控制面板的按钮

再点击一个

源码如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>#canvas-wrapper{width: 1200px;height: 800px;position: relative;margin: 50px auto;}#canvas{border: 1px solid #aaaaaa;}#controller{position: absolute;top: 30px;left: 30px;background-color: rgba(0, 85, 116, 0.7);padding: 5px 20px 25px 20px;border-radius: 10px 10px;}#controller h1{color: white;font-width: bold;font-family: Microsoft Yahei;}#controller .color-btn{display: inline-block;padding: 5px 15px;border-radius: 6px 6px;font-size: 14px;margin-top: 10px;margin-right: 5px;text-decoration: none;}#controller #white-color-btn{background-color: white;}#controller #black-color-btn{background-color: black;}#controller #green-color-btn{background-color: green;}#controller #blue-color-btn{background-color: blue;}</style></head>
<body><div id="canvas-wrapper"><canvas id="canvas" style="border: 1px solid #aaa; display: block; margin: 50px auto;">当前浏览器不支持canvas</canvas><div id="controller"><h1>控制面板</h1><a href="#" class="color-btn" id="white-color-btn">&nbsp</a><a href="#" class="color-btn" id="black-color-btn">&nbsp</a><a href="#" class="color-btn" id="green-color-btn">&nbsp</a><a href="#" class="color-btn" id="blue-color-btn">&nbsp</a></div>
</div><script>window.onload = function(){let canvas = document.getElementById("canvas");canvas.width = 1200;canvas.height = 800;let context = canvas.getContext("2d");document.getElementById("white-color-btn").onclick = function(event){context.clearRect(0, 0, canvas.width, canvas.height);context.fillStyle = "white";context.fillRect(0, 0, canvas.width, canvas.height);return false;}document.getElementById("black-color-btn").onclick = function(event){context.clearRect(0, 0, canvas.width, canvas.height);context.fillStyle = "black";context.fillRect(0, 0, canvas.width, canvas.height);return false;}document.getElementById("green-color-btn").onclick = function(event){context.clearRect(0, 0, canvas.width, canvas.height);context.fillStyle = "green";context.fillRect(0, 0, canvas.width, canvas.height);return false;}document.getElementById("blue-color-btn").onclick = function(event){context.clearRect(0, 0, canvas.width, canvas.height);context.fillStyle = "blue";context.fillRect(0, 0, canvas.width, canvas.height);return false;}}</script></body>
</html>

这里解析下上面代码的部分逻辑,这里把canvas和按钮相关都放到id为canvas-wrapper的div中,在canvas-wrapper中的css使用position为relative也就是相对定位的元素。在id为controller中div中将position设置为absolute,也就是生成绝对定位的元素,然后设置下透明度啥的。

canvas笔记-在canvas中使用其他HTML元素相关推荐

  1. canvas笔记-扩展canvas的context及画椭圆及浏览器兼容问题

    首先是扩展canvas的context 比如扩展一个画五角星的代码 <!DOCTYPE html> <html lang="en"> <head> ...

  2. canvas笔记-使用canvas画圆及点阵的使用

    如下例子: <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF- ...

  3. canvas笔记-使用canvas画矩形及各样式(透明)

    程序运行截图如下: 源码如下: <!DOCTYPE html> <html lang="en"> <head><meta charset= ...

  4. html5 canvas 画阿迪达斯logo,HTML5 Canvas笔记——HTML5 Canvas绘图绘制太极图

    HTML5 Canvas绘图绘制太极图 太极图 * { padding: 0; margin: 0; } body { } #myCanvas { background-color: #eee; } ...

  5. canvas笔记-canvas中用户与图形交互

    运行截图如下: 点击某个圆后: 代码如下: <!DOCTYPE html> <html lang="en"> <head><meta ch ...

  6. canvas笔记-画三角形并计算其外心(含算法其他绘图框架类似)

    程序运行截图如下: 源码如下: <!DOCTYPE html> <html lang="en"> <head><meta charset= ...

  7. canvas笔记-clip裁剪函数的使用及探照灯实例

    在canvas中有clip函数,也就是裁剪,从原始画布中剪切任意形状和尺寸. 如下例子: <!DOCTYPE html> <html lang="en"> ...

  8. canvas笔记-globalAlpha和globaleCompositeOperation的使用

    如下代码: <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF- ...

  9. canvas笔记-阴影的使用

    关于阴影有如下的几个属性 context.shadowOffsetX context.shadowOffsetY context.shadowBlur 其中blur的英文解释为模糊不清的,在canva ...

最新文章

  1. 关于ORA-01950: no privileges on tablespace 的解决
  2. Python3中 对local和nonlocal 关键字的改善认识(新手向)
  3. 窗口不小心拉到任务栏下面,窗口无法拖回桌面的解决办法
  4. bean 属性设置默认值_activiti7源码分析之引擎初始化与Bean注入
  5. leetcode513. 找树左下角的值(dfs)
  6. Kubernetes—如何批量删除对象资源?(二十三)
  7. DOM 其他一些特性
  8. Elastic ik插件配置热更新功能
  9. 记一次修复Mac和Win7双系统启动菜单的经历
  10. 2019网易校招(1星) 俄罗斯方块
  11. linux 获取无线网卡密码错误,解决linux下外接无线网卡报错问题
  12. Google Play安装应用一直在等待下载的解决方案
  13. 在电路中,耦合是什么?有哪些方式?
  14. opencv-python 中文显示在图像上
  15. 解压缩文件并将其中的excel文件汇总
  16. modbus tcp主站和从站_Modbus-RTU 一主多从PLC无线通讯经典案例
  17. qq申诉网站无法接到服务器,为什么我qq申诉不成功 - 卡饭网
  18. 复杂网络分析(5)----共引和文献耦合
  19. Anroid11有多个Launcher应用时,默认其中一个Launcher为启动Launcher,不用弹框选择Launcher
  20. lag和lead 分析函数

热门文章

  1. [转]Android应用签名
  2. 【下载中心】如何撰写分卷资源的标题、简介
  3. Weblogic Server上部署War包
  4. 男子吐槽:为什么那么多人不喜欢996,非要年纪轻轻进国企养老
  5. 广东人大常委会党组会议强调:要加快人工智能等领域的相关立法工作。【Python】
  6. 太想成功了--成功之前,你是否养成了这些习惯?
  7. 千万不要成为这样一个程序员!
  8. Tip of the day的bug
  9. 学习编程的过程中可能会走哪些弯路,有哪些经验可以参考?
  10. javascript 字符串操作函数大全