详解html2canvas截图不能截取圆角图片的解决方案


Posted in HTML / CSS onJanuary 30, 2018

以前我们只能通过其他的截图工具来截取图像。现代浏览器的功能已经越来越强,随着H5的逐渐普及,浏览器本身就可以截图啦。html2canvas就是这样一款前端插件,它的原理是将Dom节点在Canvas里边画出来。虽然很方便,但有以下限制:

  • 不支持iframe
  • 不支持跨域图片
  • 不能在浏览器插件中使用
  • 部分浏览器上不支持SVG图片
  • 不支持Flash
  • 不支持古代浏览器和IE,如果你想确认是否支持某个浏览器,可以用它访问 http://deerface.sinaapp.com/ 试试 :)

由于我的使用场景很简单,记录一下异常信息,并且异常页面也是由自己定义的,那么html2canvas 就足够使用了。

第一次用html2canvas,目的就是想把整个页面截图下来生成一张图片给用户保存

下面我们先来看看HTML渲染出来的是啥样子的

详解html2canvas截图不能截取圆角图片的解决方案

HTML渲染出来的图片可以看到上面的图片是有圆角效果的,但是当我用html2canvas来进行转换图片操作的时候,发现图片圆角效果没失效了。

详解html2canvas截图不能截取圆角图片的解决方案

变成了上面这个样子。想了很多解决方案,后来决定把后面的圆角做成一张背景图片,中间圆的部分背景透明,然后通过绝对定位覆盖到原来的图片上面,相当于是一个遮罩这种效果。

当然,遮罩图片的DOM节点必须在需要圆角图片的下面,类似于

<div class="avatar_img fl"><div class="avatar_img fl"> 
     <img src="" id="you" class="avatar_pp fl" /><!--需要圆角的原始图片-->
     <img src="/template/images/avatar.png" class="img-responsive" style="position: absolute;"><!--遮罩图片-->
</div>

生成出来就是正常的样子了

<div class="avatar_img fl"><div class="avatar_img fl"> 
     <img src="" id="you" class="avatar_pp fl" /><!--需要圆角的原始图片-->
     <img src="/template/images/avatar.png" class="img-responsive" style="position: absolute;"><!--遮罩图片-->
</div>

复制代码
代码如下:

<a href="<a href="http://www.teaxia.com/wp-content/uploads/2018/01/2.jpg"><img">http://www.teaxia.com/wp-content/uploads/2018/01/2.jpg"><img</a> src="<a href="http://www.teaxia.com/wp-content/uploads/2018/01/2-169x300.jpg">http://www.teaxia.com/wp-content/uploads/2018/01/2-169x300.jpg</a>" alt="" width="169" height="300" srcset="<a href="http://www.teaxia.com/wp-content/uploads/2018/01/2-169x300.jpg">http://www.teaxia.com/wp-content/uploads/2018/01/2-169x300.jpg</a> 169w, <a href="http://www.teaxia.com/wp-content/uploads/2018/01/2.jpg">http://www.teaxia.com/wp-content/uploads/2018/01/2.jpg</a> 377w" sizes="(max-width: 169px) 100vw, 169px" /></a>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
css3动画事件—webkitAnimationEnd与计时器time事件
Jan 31 HTML / CSS
基于CSS3制作立体效果导航菜单
Jan 12 HTML / CSS
CSS3 实现图形下落动画效果
Nov 13 HTML / CSS
CSS3 实现的加载动画
Dec 07 HTML / CSS
Android本地应用打开方法——通过html5写连接
Mar 11 HTML / CSS
HTML5边玩边学(1)画布实现方法
Sep 21 HTML / CSS
HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览
Dec 13 HTML / CSS
html5 canvas fillRect坐标和大小的问题解决方法
Mar 26 HTML / CSS
html5 input输入实时检测以及延时优化
Jul 18 HTML / CSS
HTML5中input输入框默认提示文字向左向右移动的示例代码
Sep 10 HTML / CSS
HTML怎么设置下划线?html文字加下划线方法
Dec 06 HTML / CSS
使用HBuilder制作一个简单的HTML5网页
Jul 07 HTML / CSS
HTML5 Canvas实现360度全景图的示例代码
Jan 29 #HTML / CSS
详解canvas多边形(蜘蛛图)的画法示例
Jan 29 #HTML / CSS
HTML5 source标签:媒介元素定义媒介资源
Jan 29 #HTML / CSS
HTML5仿微信聊天界面、微信朋友圈实例代码
Jan 29 #HTML / CSS
详解HTML5 data-* 自定义属性
Jan 24 #HTML / CSS
详解html5 shiv.js和respond.min.js
Jan 24 #HTML / CSS
浅析HTML5:'data-'属性的作用
Jan 23 #HTML / CSS
You might like
PHP 中文乱码解决办法总结分析
2009/07/30 PHP
php数组函数序列之in_array() 查找数组值是否存在
2011/10/29 PHP
PHP遍历数组的三种方法及效率对比分析
2015/02/12 PHP
php编写简单的文章发布程序
2015/06/18 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
2017/07/27 PHP
extjs实现选择多表自定义查询功能 前台部分(ext源码)
2011/12/20 Javascript
javascript Event对象详解及使用示例
2013/11/22 Javascript
jQuery处理xml格式的返回数据(实例解析)
2013/11/28 Javascript
javaScript使用EL表达式的几种方式
2014/05/27 Javascript
Jquery easyui开启行编辑模式增删改操作
2016/01/14 Javascript
使用JQuery实现智能表单验证功能
2016/03/08 Javascript
jQuery.Uploadify插件实现带进度条的批量上传功能
2016/06/08 Javascript
JS中使用DOM来控制HTML元素
2016/07/31 Javascript
Javascript动画效果(4)
2016/10/11 Javascript
微信小程序使用input组件实现密码框功能【附源码下载】
2017/12/11 Javascript
vue实现学生录入系统之添加删除功能
2018/07/11 Javascript
vue 自定义提示框(Toast)组件的实现代码
2018/08/17 Javascript
浅谈JavaScript 代码简洁之道
2019/01/09 Javascript
vue+egg+jwt实现登录验证的示例代码
2019/05/18 Javascript
JS 自执行函数原理及用法
2019/08/05 Javascript
element-ui 本地化使用教程详解
2019/10/28 Javascript
vue项目或网页上实现文字转换成语音播放功能
2020/06/09 Javascript
详细分析vue响应式原理
2020/06/22 Javascript
微信小程序学习之自定义滚动弹窗
2020/12/20 Javascript
Python实现针对给定单链表删除指定节点的方法
2018/04/12 Python
详解Python给照片换底色(蓝底换红底)
2019/03/22 Python
python中栈的原理及实现方法示例
2019/11/27 Python
python二分法查找算法实现方法【递归与非递归】
2019/12/06 Python
在python中logger setlevel没有生效的解决
2020/02/21 Python
Python常用断言函数实例汇总
2020/11/30 Python
英国异国风情旅游网站:Travel Talk Tours(团体旅游、探险旅游、帆船假期)
2018/07/26 全球购物
毕业典礼主持词大全
2014/03/26 职场文书
租房协议书
2014/04/10 职场文书
作风年建设汇报材料
2014/08/14 职场文书
使用pycharm运行flask应用程序的详细教程
2021/06/07 Python
PostgreSQL出现死锁该如何解决
2022/05/30 PostgreSQL