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实现仿新浪微博发布内容为空时提示功能代码
Aug 19 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
Jul 04 Javascript
Vue.js在使用中的一些注意知识点
Apr 29 Javascript
js 用于检测类数组对象的函数方法
May 02 Javascript
微信小程序中页面FOR循环和嵌套循环
Jun 21 Javascript
浅谈node模块与npm包管理工具
Jan 03 Javascript
Vue中 v-if/v-show/插值表达式导致闪现的原因及解决办法
Oct 12 Javascript
vue组件通信传值操作示例
Jan 08 Javascript
vue 进阶之实现父子组件间的传值
Apr 26 Javascript
Node.js API详解之 readline模块用法详解
May 22 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
Aug 22 Javascript
js制作提示框插件
Dec 24 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不用递归实现无限分级的例子分享
2014/04/18 PHP
php实现使用正则将文本中的网址转换成链接标签
2014/12/03 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
2019/05/06 PHP
PHP+redis实现微博的推模型案例分析
2019/07/10 PHP
JQuery困惑—包装集 DOM节点
2009/10/16 Javascript
JavaScript之Getters和Setters 平台支持等详细介绍
2012/12/07 Javascript
js获取url参数代码实例分享(JS操作URL)
2013/12/13 Javascript
JS实现进入页面时渐变背景色的方法
2015/02/25 Javascript
jquery实现焦点图片随机切换效果的方法
2015/03/12 Javascript
jQuery简单实现日历的方法
2015/05/04 Javascript
javascript获取重复次数最多的字符
2015/07/08 Javascript
详解angularjs的数组传参方式的简单实现
2017/07/28 Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
2018/04/23 Javascript
JS动态图片的实现方法完整示例
2020/01/13 Javascript
微信小程序实现签到弹窗动画
2020/09/21 Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
2020/11/16 Javascript
python操作MySQL数据库的方法分享
2012/05/29 Python
python相似模块用例
2016/03/04 Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
2017/01/21 Python
Python中easy_install 和 pip 的安装及使用
2017/06/05 Python
Python中asyncio与aiohttp入门教程
2018/10/16 Python
结合OpenCV与TensorFlow进行人脸识别的实现
2019/10/10 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
2020/02/20 Python
python中strip(),lstrip(),rstrip()函数的使用讲解
2020/11/17 Python
施华洛世奇天猫官方旗舰店:SWAROVSKI
2017/04/17 全球购物
德国机车企业:FC-Moto
2017/10/27 全球购物
护理个人求职信范文
2014/01/08 职场文书
应用化学专业职业生涯规划书
2014/01/22 职场文书
宪法宣传周工作方案
2014/05/26 职场文书
食品安全宣传标语
2014/06/07 职场文书
公司股东出资证明书
2014/11/01 职场文书
合伙经营协议书范本(通用版)
2014/12/03 职场文书
超级礼物观后感
2015/06/15 职场文书
2015年教师节主持词
2015/07/03 职场文书
2016年秋季新学期致辞
2015/07/30 职场文书