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 相关文章推荐
juqery 学习之五 文档处理 包裹、替换、删除、复制
Feb 11 Javascript
基于JavaScript 声明全局变量的三种方式详解
May 07 Javascript
js控制表单不能输入空格的小例子
Nov 20 Javascript
innerText 使用示例
Jan 23 Javascript
javascript事件函数中获得事件源的两种不错方法
Mar 17 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
Dec 08 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
Jan 08 Javascript
使用vue-infinite-scroll实现无限滚动效果
Jun 22 Javascript
如何在vue里添加好看的lottie动画
Aug 02 Javascript
webpack4 SCSS提取和懒加载的示例
Sep 03 Javascript
微信小程序 授权登录详解(附完整源码)
Aug 23 Javascript
js实现图片上传即时显示效果
Sep 30 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下检测字符串是否是utf8编码的代码
2008/06/28 PHP
发一个php简单的伪原创程序,配合商城采集用的
2010/10/12 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
2013/10/22 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
2016/04/07 PHP
js实现网站首页图片滚动显示
2013/02/04 Javascript
如何用JavaScript动态呼叫函数(两种方式)
2013/05/03 Javascript
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
jQuery如何取id有.的值一般的方法是取不到的
2014/04/18 Javascript
node.js中的console.log方法使用说明
2014/12/09 Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
2015/06/01 Javascript
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
2016/06/08 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
BootStrapValidator初使用教程详解
2017/02/10 Javascript
详解Angular路由 ng-route和ui-router的区别
2017/05/22 Javascript
微信小程序适配iphoneX的实现方法
2018/09/18 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
JS中使用react-tooltip插件实现鼠标悬浮显示框
2019/05/15 Javascript
vue日历/日程提醒/html5本地缓存功能
2019/09/02 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
巧用python和libnmapd,提取Nmap扫描结果
2016/08/23 Python
python编写微信远程控制电脑的程序
2018/01/05 Python
python爬取各类文档方法归类汇总
2018/03/22 Python
用Python实现筛选文件脚本的方法
2018/10/27 Python
Python 仅获取响应头, 不获取实体的实例
2019/08/21 Python
python中利用numpy.array()实现俩个数值列表的对应相加方法
2019/08/26 Python
python smtplib发送多个email联系人的实现
2020/10/09 Python
使用CSS3来代替JS实现交互
2017/08/10 HTML / CSS
教师实习自我鉴定
2013/12/14 职场文书
优秀实习生主要事迹
2014/05/29 职场文书
缓刑人员思想汇报
2014/10/11 职场文书
继承公证书格式
2015/01/26 职场文书
离婚上诉状范文
2015/05/23 职场文书
师范生教育见习总结
2015/06/23 职场文书
css3应用示例:新增的选择器
2022/03/16 HTML / CSS
Win10本地连接不见了怎么恢复? win10系统电脑本地连接不见了解决方法
2023/01/09 数码科技