首页 > 其他分享 >在Canvas上进行文本输入及其它html元素操作

在Canvas上进行文本输入及其它html元素操作

时间:2023-09-07 17:12:09浏览次数:35  
标签:function Canvas 文本 ctx getElementById html input document id

问题

使用canvas绘制了一个表格,想要在上面进行编辑操作,但canvas并不支持修改操作

思路

通过给html元素设置绝对定位,遮盖canvas上的指定位置,所有编辑操作都在元素上进行,也可以将元素的值绘制到canvas上,示例demo如下:

点击查看代码
<!DOCTYPE HTML>
<html>
<style>
</style>
<body style="padding:0px;margin:0px;">

<div style="width:500px; height:500px; position:relative;">
	<canvas id="canvas_id" width="500px" height="500px"></canvas>
	<input id="input_id" style="top:20px;left:20px;position:absolute;outline:none;border:0px;font-size:20px" readonly=""></input>
</div>
<button onclick="beginEdit()">编辑</button>
<button onclick="cancelEdit()">取消编辑</button>
<button onclick="drawText()">绘制输入框内容</button>
<button onclick="hiddenInput()">隐藏输入框</button>
<button onclick="showInput()">显示输入框</button>
</body>
<script>

var ctx;
window.onload = function(){
	ctx = document.getElementById("canvas_id").getContext('2d');
    ctx.fillStyle = '#d9ecff';
	ctx.font = "20px '微软雅黑'";
    ctx.beginPath();
	ctx.moveTo(1,1);
	ctx.lineTo(1,498);
	ctx.lineTo(498,498);
	ctx.lineTo(498,1);
	ctx.closePath();
	ctx.fill();
}

function beginEdit(){
	document.getElementById("input_id").removeAttribute("readonly");
	document.getElementById("input_id").style.border = "1px solid #000000";
	document.getElementById("input_id").focus();
}

function cancelEdit(){
	document.getElementById("input_id").setAttribute("readonly",true);
	document.getElementById("input_id").style.border = "0px";
	
}

function drawText(){
	ctx.fillStyle = '#000000';
	ctx.fillText(document.getElementById("input_id").value,20,20 + 20);
}

function hiddenInput(){
	document.getElementById("input_id").style.display = "none";
}

function showInput(){
	document.getElementById("input_id").style.display = "";
}

</script>
</html>

标签:function,Canvas,文本,ctx,getElementById,html,input,document,id
From: https://www.cnblogs.com/elapsed/p/17685499.html

相关文章

  • 如何在jupyter notebook中批量替换文本
    在JupyterNotebook中,您可以使用以下步骤来批量替换文本:1.打开JupyterNotebook并导航到包含需要替换文本的笔记本。2.在需要替换的代码或文本的单元格中,使用快捷键`Ctrl+F`(Windows和Linux)或`Command+F`(Mac)打开查找工具。3.在查找工具中输入您要替换的文本,并点击查找下......
  • html+css:“圣杯布局”的设计案例
    一、什么是圣杯布局圣杯布局:左右两个盒子固定宽度,中间盒子自适应 二、圣杯布局的设计原则:我们现在来思考自适应这个问题,其本质就是left和right覆盖一整个大的center,然后center使用padding把内容左右留出left和right相应的宽度。可是,现在如何来覆盖呢?这里使用margin......
  • 爬虫系统的核心:如何创建高质量的HTML文件?
    在网页抓取或爬虫系统中,HTML文件的创建是一项重要的任务。HTML文件是网页的基础,包含了网页的所有内容和结构。在爬虫系统中,我们需要生成一个HTML文件,以便于保存和处理网页的内容。在这种情况下,可以使用Java函数来实现将爬取到的网页内容保存为HTML文件的功能。具体来说,当爬虫系统......
  • Uchardet C++源码编译步骤 文本编码检测命令行工具 Command line
    从官网 https://www.freedesktop.org/wiki/Software/uchardet/下载源码 https://www.freedesktop.org/software/uchardet/releases/=====================================================================================下载编译工具:Cmake和mingw64https://cmake.org......
  • Ext.form.HtmlEditor获取和清空数据的方法
    下面是从网上拷的一段代码,主要是对其进行注解以便理解Ext.form.HtmlEditor获取和清空数据的方法<script>02.varfaxWin;03.Ext.onReady(function(){04.varform2=newExt.form.FormPanel({05.labelAlign:'top',06.frame:tr......
  • Javascript 中对HTML编码和解码的方法
    String.prototype.HTMLEncode=function(){vartemp=document.createElement("div");(temp.textContent!=null)?(temp.textContent=this):(temp.innerText=this);varoutput=temp.innerHTML;temp=null;returnoutput;}String.prot......
  • html+css:<a>中嵌入<img>,实现图片链接
    这个很好理解,记住<a>中不仅可以写标签,还可以嵌入文字。现在效果如下,在<a>中嵌入了<img>,同时又嵌入了<p>,点击图片和文字段落,其都会直接来进行跳转。这个是非常重要的,一点也不难,耐心做下去。  ......
  • html+css:文章居中,图片居中
    我们平常要涉及很多居中,现在这个要理解一、文字内容居中如下,其宽度居中采用text-align,但其高度居中,则让块高度,和行高度保持一致,此时就可以实现宽度居中 二、图片居中于浏览器,img作为行内块元素是无法实现的!img作为行内块元素,其有行的性质,此时margin是没有效果的,如下图。......
  • 1.HTML开发--个人网页:创建一个个人网页,包括个人简介、联系信息和照片
    创建一个个人网页是一个很好的方式来展示你自己,你可以在上面分享个人信息、联系方式以及你的兴趣爱好。以下是一个简单的HTML模板,你可以基于它创建你自己的个人网页:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=......
  • 借助html2canvas下载图片,有滚动条的情况显示不全的问题
    我自己的遇到的情况是将页面的一个小窗口里边的内容生成图片下载,试了网上搜到的几个方法都没有生效,最后自己用了个取巧的方法:通过调整overflow-y来解决这个问题。downloadItem(){consttargetDom=document.getElementById(`image-${this.dialogNo}`)targetDo......