关键词搜索

源码搜索 ×
×

canvas笔记-在canvas中使用其他HTML元素

发布2020-06-03浏览2382次

详情内容

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

 

程序运行截图如下:

点击控制面板的按钮

再点击一个

源码如下:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. #canvas-wrapper{
  8. width: 1200px;
  9. height: 800px;
  10. position: relative;
  11. margin: 50px auto;
  12. }
  13. #canvas{
  14. border: 1px solid #aaaaaa;
  15. }
  16. #controller{
  17. position: absolute;
  18. top: 30px;
  19. left: 30px;
  20. background-color: rgba(0, 85, 116, 0.7);
  21. padding: 5px 20px 25px 20px;
  22. border-radius: 10px 10px;
  23. }
  24. #controller h1{
  25. color: white;
  26. font-width: bold;
  27. font-family: Microsoft Yahei;
  28. }
  29. #controller .color-btn{
  30. display: inline-block;
  31. padding: 5px 15px;
  32. border-radius: 6px 6px;
  33. font-size: 14px;
  34. margin-top: 10px;
  35. margin-right: 5px;
  36. text-decoration: none;
  37. }
  38. #controller #white-color-btn{
  39. background-color: white;
  40. }
  41. #controller #black-color-btn{
  42. background-color: black;
  43. }
  44. #controller #green-color-btn{
  45. background-color: green;
  46. }
  47. #controller #blue-color-btn{
  48. background-color: blue;
  49. }
  50. </style>
  51. </head>
  52. <body>
  53. <div id="canvas-wrapper">
  54. <canvas id="canvas" style="border: 1px solid #aaa; display: block; margin: 50px auto;">
  55. 当前浏览器不支持canvas
  56. </canvas>
  57. <div id="controller">
  58. <h1>控制面板</h1>
  59. <a href="#" class="color-btn" id="white-color-btn">&nbsp</a>
  60. <a href="#" class="color-btn" id="black-color-btn">&nbsp</a>
  61. <a href="#" class="color-btn" id="green-color-btn">&nbsp</a>
  62. <a href="#" class="color-btn" id="blue-color-btn">&nbsp</a>
  63. </div>
  64. </div>
  65. <script>
  66. window.onload = function(){
  67. let canvas = document.getElementById("canvas");
  68. canvas.width = 1200;
  69. canvas.height = 800;
  70. let context = canvas.getContext("https://cdn.jxasp.com:9143/image/2d");
  71. document.getElementById("white-color-btn").onclick = function(event){
  72. context.clearRect(0, 0, canvas.width, canvas.height);
  73. context.fillStyle = "white";
  74. context.fillRect(0, 0, canvas.width, canvas.height);
  75. return false;
  76. }
  77. document.getElementById("black-color-btn").onclick = function(event){
  78. context.clearRect(0, 0, canvas.width, canvas.height);
  79. context.fillStyle = "black";
  80. context.fillRect(0, 0, canvas.width, canvas.height);
  81. return false;
  82. }
  83. document.getElementById("green-color-btn").onclick = function(event){
  84. context.clearRect(0, 0, canvas.width, canvas.height);
  85. context.fillStyle = "green";
  86. context.fillRect(0, 0, canvas.width, canvas.height);
  87. return false;
  88. }
  89. document.getElementById("blue-color-btn").onclick = function(event){
  90. context.clearRect(0, 0, canvas.width, canvas.height);
  91. context.fillStyle = "blue";
  92. context.fillRect(0, 0, canvas.width, canvas.height);
  93. return false;
  94. }
  95. }
  96. </script>
  97. </body>
  98. </html>

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

相关技术文章

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载