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 相关文章推荐
js中将字符串转换成json的三种方式
Jan 12 Javascript
jquery getScript动态加载JS方法改进详解
Nov 15 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
Oct 10 Javascript
原生JavaScript+LESS实现瀑布流
Dec 12 Javascript
jQuery插件JWPlayer视频播放器用法实例分析
Jan 11 Javascript
微信小程序 设置启动页面的两种方法
Mar 09 Javascript
如何理解jQuery中的ajaxSubmit方法
Mar 13 Javascript
JS switch判断 三目运算 while 及 属性操作代码
Sep 03 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
Sep 19 Javascript
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
Jun 13 Javascript
详解Vue template 如何支持多个根结点
Feb 10 Javascript
解决vue项目中某一页面不想引用公共组件app.vue的问题
Aug 14 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 无限级缓存的类的扩展
2009/03/16 PHP
php缓存技术详细总结
2013/08/07 PHP
destoon各类调用汇总
2014/06/20 PHP
基于jsTree的无限级树JSON数据的转换代码
2010/07/27 Javascript
js精度溢出解决方案
2012/12/02 Javascript
JavaScript lastIndexOf方法入门实例(计算指定字符在字符串中最后一次出现的位置)
2014/10/17 Javascript
JQuery实现超链接鼠标提示效果的方法
2015/06/10 Javascript
js和jquery分别验证单选框、复选框、下拉框
2015/12/17 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
2016/01/25 Javascript
javascript嵌套函数和在函数内调用外部函数的区别分析
2016/01/31 Javascript
JavaScript正则表达式匹配 div  style标签
2016/03/15 Javascript
详解React native全局变量的使用(跨组件的通信)
2017/09/07 Javascript
javascript标准库(js的标准内置对象)总结
2018/05/26 Javascript
使用Layui搭建后台管理界面的操作方法
2019/09/20 Javascript
axios实现简单文件上传功能
2019/09/25 Javascript
element跨分页操作选择详解
2020/06/29 Javascript
[02:51]2014DOTA2 TI小组赛总结中国军团全部进军钥匙球馆
2014/07/15 DOTA
浅谈Scrapy框架普通反爬虫机制的应对策略
2017/12/28 Python
Tornado高并发处理方法实例代码
2018/01/15 Python
pandas 对series和dataframe进行排序的实例
2018/06/09 Python
selenium+python设置爬虫代理IP的方法
2018/11/29 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
2019/06/17 Python
Python 实现还原已撤回的微信消息
2019/06/18 Python
pytorch 输出中间层特征的实例
2019/08/17 Python
tensorflow如何批量读取图片
2019/08/29 Python
Django Admin中增加导出Excel功能过程解析
2019/09/04 Python
Python字典生成式、集合生成式、生成器用法实例分析
2020/01/07 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
2020/02/28 Python
几个常见的消息中间件(MOM)
2014/01/08 面试题
市场策划求职信
2014/08/07 职场文书
入党函调证明材料
2014/12/24 职场文书
导游欢迎词范文
2015/01/23 职场文书
小学工作总结2015
2015/05/04 职场文书
python 如何执行控制台命令与操作剪切板
2021/05/20 Python
Python 装饰器(decorator)常用的创建方式及解析
2022/04/24 Python
MySql如何将查询的出来的字段进行转换
2022/06/14 MySQL