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 相关文章推荐
javascript据option的value值快速设定初始的selected选项
Aug 13 Javascript
JQuery 学习笔记 选择器之六
Jul 23 Javascript
判断javascript的数据类型(示例代码)
Dec 11 Javascript
js操作IE浏览器弹出浏览文件夹可以返回目录路径
Jul 14 Javascript
JQuery中上下文选择器实现方法
May 18 Javascript
javascript 正则表达式去空行方法
Jan 24 Javascript
微信小程序 跳转传递数据的实例
Jul 06 Javascript
详解jQuery中的isPlainObject()使用方法
Feb 27 jQuery
javascript和php使用ajax通信传递JSON的实例
Aug 21 Javascript
Angular事件之不同组件间传递数据的方法
Nov 15 Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
Sep 29 Javascript
JavaScript函数柯里化
Nov 07 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环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
php如何实现只替换一次或N次
2015/10/29 PHP
php模拟post上传图片实现代码
2016/06/24 PHP
PHP中Notice错误常见解决方法
2017/04/28 PHP
利用php获得flv视频长度的实例代码
2017/10/26 PHP
php统计数组不同元素的个数的实例方法
2019/09/26 PHP
javascript 对象比较实现代码
2009/04/27 Javascript
jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
2012/05/23 Javascript
js换图片效果可进行定时操作
2014/06/09 Javascript
Javascript图片上传前的本地预览实例
2014/06/16 Javascript
javascript Deferred和递归次数限制实例
2014/10/21 Javascript
Javascript中3个需要注意的运算符
2015/04/02 Javascript
jQuery监控文本框事件并作相应处理的方法
2015/04/16 Javascript
js+CSS实现模拟华丽的select控件下拉菜单效果
2015/09/01 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
2016/03/01 Javascript
jQuery实现只允许输入数字和小数点的方法
2016/03/02 Javascript
标准的js无缝滚动效果
2016/08/30 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
JavaScript实现使用Canvas绘制图形的基本教程
2016/10/27 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
[03:55]2014DOTA2国际邀请赛 Fnatic经理采访赢DK在情理之中
2014/07/10 DOTA
Python实现动态图解析、合成与倒放
2018/01/18 Python
java中两个byte数组实现合并的示例
2018/05/09 Python
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
python绘制简单彩虹图
2018/11/19 Python
python对数组进行排序,并输出排序后对应的索引值方式
2020/02/28 Python
Keras模型转成tensorflow的.pb操作
2020/07/06 Python
python中os.remove()用法及注意事项
2021/01/31 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
2021/03/02 Python
video结合canvas实现视频在线截图功能
2018/06/25 HTML / CSS
关于HTML5+ API plusready的兼容问题
2020/11/20 HTML / CSS
主题酒店策划书
2014/01/28 职场文书
单位租车协议书
2015/01/29 职场文书
幼儿园园长个人总结
2015/03/02 职场文书
导游词之无锡丝业博物馆
2019/11/12 职场文书
浅谈Golang 切片(slice)扩容机制的原理
2021/06/09 Golang