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 相关文章推荐
30个最好的jQuery 灯箱插件分享
Apr 25 Javascript
在JS中如何调用JSP中的变量
Jan 22 Javascript
JavaScript中的prototype.bind()方法介绍
Apr 04 Javascript
js 弹出新页面避免被浏览器、ad拦截的一种新方法
Apr 30 Javascript
js 左右悬浮对联广告特效代码
Dec 12 Javascript
Nginx上传文件全部缓存解决方案
Aug 17 Javascript
js实现的光标位置工具函数示例
Oct 03 Javascript
js表单登陆验证示例
Oct 19 Javascript
JavaScript实现反转字符串的方法详解
Apr 27 Javascript
Vue.js组件使用props传递数据的方法
Oct 19 Javascript
JQuery复选框全选效果如何实现
May 08 jQuery
在webstorm中配置less的方法详解
Sep 25 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
一个基于PDO的数据库操作类
2011/03/24 PHP
2014最热门的24个php类库汇总
2014/12/18 PHP
php生出随机字符串
2017/07/06 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
JS获取scrollHeight问题想到的标准问题
2007/05/27 Javascript
js实现单一html页面两套css切换代码
2013/04/11 Javascript
无刷新上传文件并返回自定义值
2015/06/11 Javascript
微信小程序中做用户登录与登录态维护的实现详解
2017/05/17 Javascript
JavaScript 中的 this 简单规则
2017/09/19 Javascript
jquery ajaxfileupload异步上传插件
2017/11/21 jQuery
解决vue页面DOM操作不生效的问题
2018/03/17 Javascript
详解vue组件开发脚手架
2018/06/15 Javascript
Cocos2d实现刮刮卡效果
2018/12/20 Javascript
antd Select下拉菜单动态添加option里的内容操作
2020/11/02 Javascript
[49:54]Ti4 循环赛第三日 LGD vs Titan
2014/07/12 DOTA
[54:27]TNC vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
图文详解WinPE下安装Python
2016/05/17 Python
Python 字符串换行的多种方式
2018/09/06 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
Python3之外部文件调用Django程序操作model等文件实现方式
2020/04/07 Python
真正了解CSS3背景下的@font face规则
2017/05/04 HTML / CSS
印尼旅游网站:via
2017/11/12 全球购物
Smashbox英国官网:美国知名彩妆品牌
2017/11/13 全球购物
澳大利亚窗帘商店:Curtain Wonderland
2019/12/01 全球购物
C#实现启动一个进程
2016/10/01 面试题
销售员岗位职责
2014/06/09 职场文书
婚礼女方父母答谢词
2015/01/04 职场文书
个性与发展自我评价
2015/03/06 职场文书
违规违纪检讨书范文
2015/05/06 职场文书
给女朋友的道歉短信
2015/05/12 职场文书
原告离婚代理词
2015/05/23 职场文书
催款函范文
2015/06/24 职场文书
优秀共产党员主要事迹材料
2015/11/05 职场文书
Mysql实现简易版搜索引擎的示例代码
2021/08/30 MySQL
Java9新特性之Module模块化编程示例演绎
2022/03/16 Java/Android
java实现自定义时钟并实现走时功能
2022/06/21 Java/Android