html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片


Posted in Javascript onJanuary 12, 2020

如何使用JS截取HTML页面为图片呢,下面为大家介绍一款JS截图插件html2canvas.js

html2canvas.js 能够实现在用户浏览器端直接对整个或部分页面进行截屏。

html2canvas.js可以将当页面渲染成一个Canvas图片,通过读取DOM并将不同的样式应用到这些元素上实现。

它不需要来自服务器任何渲染,整张图片都是在客户端浏览器创建。当

浏览器不支持Canvas时,将采用Flashcanvas或ExplorerCanvas技术代替实现。

以下浏览器能够很好的支持该脚本:Firefox 3.5+, Google Chrome, Opera新的版本, IE9以上的浏览器。

基本语法

html2canvas(element, options);
html2canvas(document.body, {
 onrendered: function(canvas) {
  var url = canvas.toDataURL();//图片地址
  document.body.appendChild(canvas);
 },
 width: 300,
 height: 300

或者使用ES6的promise

//两个参数:所需要截图的元素id,截图后要执行的函数, canvas为截图后返回的最后一个canvas html2canvas(document.getElementById('id')).then(function(canvas) {document.body.appendChild(canvas);});

html2canvas基本参数说明

参数名称 类型 默认值 描述
allowTaint boolean false Whether to allow cross-origin images to taint the canvas---允许跨域
background string #fff Canvas background color, if none is specified in DOM. Set undefined for transparent---canvas的背景颜色,如果没有设定默认透明
height number null Define the heigt of the canvas in pixels. If null, renders with full height of the window.---canvas高度设定
letterRendering boolean false Whether to render each letter seperately. Necessary if letter-spacing is used.---在设置了字间距的时候有用
logging boolean false Whether to log events in the console.---在console.log()中输出信息
proxy string undefined Url to the proxy which is to be used for loading cross-origin images. If left empty, cross-origin images won't be loaded.---代理地址
taintTest boolean true Whether to test each image if it taints the canvas before drawing them---是否在渲染前测试图片
timeout number 0 Timeout for loading images, in milliseconds. Setting it to 0 will result in no timeout.---图片加载延迟,默认延迟为0,单位毫秒
width number null Define the width of the canvas in pixels. If null, renders with full width of the window.---canvas宽度
useCORS boolean false Whether to attempt to load cross-origin images as CORS served, before reverting back to proxy--这个我也不知道是干嘛的

例子

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title>html2canvas example</title>
  <script type="text/javascript" src="html2canvas.js"></script>
</head>
<script type="text/javascript">
function takeScreenshot() {
 console.log('test');
  html2canvas(document.getElementById('view'), {
    onrendered: function(canvas) {
      document.body.appendChild(canvas);
    },
   // width: 300,
   // height: 300
  });
}
</script>
<body>
  <div id="view" style="background:url(test.jpg) 50%; width: 700px; height: 500px;">
    <input type="button" value="截图" onclick="takeScreenshot()">
  </div>
</body>

</html>

效果图如下:

html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片

截图效果如下:

html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片

最后附上html2canvas官网链接

官网

Github

Javascript 相关文章推荐
IE iframe的onload方法分析小结
Jan 07 Javascript
javascript调试说明
Jun 07 Javascript
javascript正则表达式中分组详解
Jul 17 Javascript
JS实现六位字符密码输入器功能
Aug 19 Javascript
详解JS模块导入导出
Dec 20 Javascript
关于Webpack dev server热加载失败的解决方法
Feb 22 Javascript
vue中实现先请求数据再渲染dom分享
Mar 17 Javascript
Node 代理访问的实现
Sep 19 Javascript
微信小程序基于高德地图查找位置并显示文字
Oct 30 Javascript
vue 实现在同一界面实现组件的动态添加和删除功能
Jun 16 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
Jul 15 Javascript
详解ES6 中的Object.assign()的用法实例代码
Jan 11 Javascript
ES2020 新特性(种草)
Jan 12 #Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
Jan 12 #Javascript
es6 for循环中let和var区别详解
Jan 12 #Javascript
js 计数排序的实现示例(升级版)
Jan 12 #Javascript
JS实现动态无缝轮播
Jan 11 #Javascript
原生js实现无缝轮播图
Jan 11 #Javascript
JS实现轮播图效果
Jan 11 #Javascript
You might like
PHP 金额数字转换成英文
2010/05/06 PHP
PHP遍历二维数组的代码
2011/04/22 PHP
php通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
thinkphp如何获取客户端IP
2015/11/03 PHP
浅谈PHP5.6 与 PHP7.0 区别
2019/10/09 PHP
tp5.1 框架查询表达式用法详解
2020/05/25 PHP
jquery ajax 同步异步的执行 return值不能取得的解决方案
2012/01/08 Javascript
Javascript 遍历页面text控件详解
2014/01/06 Javascript
IE浏览器中图片onload事件无效的解决方法
2014/04/29 Javascript
离开当前页面前使用js判断条件提示是否要离开页面
2014/05/02 Javascript
jquery实现显示已选用户
2014/07/21 Javascript
JavaScript实现获取dom中class的方法
2015/02/09 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
2015/03/30 Javascript
jQuery超酷平面式时钟效果代码分享
2020/03/30 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
2017/08/15 Javascript
vue 实现全选全不选的示例代码
2018/03/29 Javascript
express默认日志组件morgan的方法
2018/04/05 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
2019/03/01 Javascript
javascript设计模式 ? 工厂模式原理与应用实例分析
2020/04/09 Javascript
解决vue-router路由拦截造成死循环问题
2020/08/05 Javascript
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
2018/12/06 Python
Python实现去除列表中重复元素的方法总结【7种方法】
2019/02/16 Python
Python实现 PS 图像调整中的亮度调整
2019/06/28 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
2020/03/27 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
python如何利用paramiko执行服务器命令
2020/11/07 Python
HTML5 微格式和相关的属性名称
2010/02/10 HTML / CSS
经销商会议欢迎词
2014/01/11 职场文书
电子商务个人职业生涯规划范文
2014/02/12 职场文书
2014年公司迎新年活动方案
2014/02/24 职场文书
阳光体育活动实施方案
2014/05/25 职场文书
商场客服专员岗位职责
2014/06/13 职场文书
四风问题个人剖析材料
2014/10/07 职场文书
交通安全教育心得体会
2016/01/15 职场文书
原生Js 实现的简单无缝滚动轮播图的示例代码
2021/05/10 Javascript
浅谈PostgreSQL表分区的三种方式
2021/06/29 PostgreSQL