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 相关文章推荐
基于jquery的tab切换 js原理
Apr 01 Javascript
关于jQuery参考实例 1.0 jQuery的哲学
Apr 07 Javascript
详解Javascript动态操作CSS
Dec 08 Javascript
node.js中的console.trace方法使用说明
Dec 09 Javascript
简介JavaScript中toTimeString()方法的使用
Jun 12 Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
Jul 27 Javascript
使用Javascript监控前端相关数据的代码
Oct 27 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
Sep 28 Javascript
vue axios数据请求及vue中使用axios的方法
Sep 10 Javascript
jQuery实现可编辑的表格
Dec 11 jQuery
Javascript如何实现双指控制图片功能
Feb 25 Javascript
如何使用原生Js实现随机点名详解
Jan 06 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写出自己的BLOG系统 2
2010/04/12 PHP
php无限分类且支持输出树状图的详细介绍
2013/06/19 PHP
编写Smarty插件在模板中直接加载数据的详细介绍
2013/06/26 PHP
VB中的RasEnumConnections函数返回632错误解决方法
2014/07/29 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
2014/11/18 PHP
laravel容器延迟加载以及auth扩展详解
2015/03/02 PHP
php使用str_replace替换多维数组的实现方法分析
2017/06/15 PHP
js AspxButton的客户端操作
2009/06/26 Javascript
js 全兼容可高亮二级缓冲折叠菜单
2010/06/04 Javascript
JS文本框默认值处理详解
2013/07/10 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
2014/01/06 Javascript
AngularJS基础学习笔记之控制器
2015/05/10 Javascript
解析javascript中鼠标滚轮事件
2015/05/26 Javascript
jquery实现简单的二级导航下拉菜单效果
2015/09/07 Javascript
html5+javascript实现简单上传的注意细节
2016/04/18 Javascript
微信小程序 新建登录页并实现tabBar隐藏
2017/06/13 Javascript
jQuery基于cookie实现换肤功能实例
2017/10/14 jQuery
老生常谈JavaScript面向对象基础与this指向问题
2017/10/16 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
2019/06/04 Javascript
vue 实现通过vuex 存储值 在不同界面使用
2019/11/11 Javascript
[02:44]完美大师赛主赛事淘汰赛第二日观众采访
2017/11/24 DOTA
Python中实现对Timestamp和Datetime及UTC时间之间的转换
2015/04/08 Python
python比较两个列表是否相等的方法
2015/07/28 Python
在Python中分别打印列表中的每一个元素方法
2018/11/07 Python
python 实现敏感词过滤的方法
2019/01/21 Python
python selenium爬取斗鱼所有直播房间信息过程详解
2019/08/09 Python
Python 50行爬虫抓取并处理图灵书目过程详解
2019/09/20 Python
北京银河万佳Java面试题
2012/03/21 面试题
经典c++面试题三
2015/07/08 面试题
七年级地理教学反思
2014/01/26 职场文书
2014年迎新年联欢会活动策划方案
2014/02/26 职场文书
大学生学习面向未来的赶考思想汇报
2014/09/12 职场文书
喝酒驾驶检讨书
2014/10/01 职场文书
爱国主义教育基地观后感
2015/06/18 职场文书