详解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中的注音对齐属性ruby-align用法指南
Jul 01 HTML / CSS
css3 flex布局 justify-content:space-between 最后一行左对齐
Jan 02 HTML / CSS
CSS3为背景图设置遮罩并解决遮罩样式继承问题
Jun 22 HTML / CSS
程序设计HTML5 Canvas API
Apr 08 HTML / CSS
html5使用canvas压缩图片的示例代码
Sep 11 HTML / CSS
手对手的教你用canvas画一个简单的海报的方法示例
Dec 10 HTML / CSS
html5 canvas实现给图片添加平铺水印
Aug 20 HTML / CSS
HTML实现代码雨源码及效果示例
Feb 25 HTML / CSS
video.js支持m3u8格式直播的实现示例
May 20 HTML / CSS
Web前端:CSS最强总结 附详细代码
Mar 31 HTML / CSS
CSS3实现的3D隧道效果
Apr 27 HTML / CSS
CSS实现切角+边框+投影+内容背景色渐变效果
Nov 01 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 VS ASP
2006/10/09 PHP
ecshop适应在PHP7的修改方法解决报错的实现
2016/11/01 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
详解json在php中的应用
2018/09/30 PHP
jquery live()重复绑定的解决方法介绍
2014/01/03 Javascript
使用javascript控制cookie显示和隐藏背景图
2014/02/12 Javascript
易被忽视的js事件问题总结
2016/05/14 Javascript
微信小程序 获取二维码实例详解
2017/06/23 Javascript
纯JS实现简单的日历
2017/06/26 Javascript
微信小程序 确认框的实现(附代码)
2019/07/23 Javascript
java和js实现的洗牌小程序
2019/09/30 Javascript
Vue项目打包编译优化方案
2020/09/16 Javascript
[02:30]DOTA2放量测试专访海涛:呼吁保护新手玩家
2013/08/26 DOTA
[02:51]2018年度DOTA2最佳中单位选手-完美盛典
2018/12/17 DOTA
使用Python下载Bing图片(代码)
2013/11/07 Python
将Python的Django框架与认证系统整合的方法
2015/07/24 Python
python3新特性函数注释Function Annotations用法分析
2016/07/28 Python
python逆向入门教程
2018/01/15 Python
python爬取个性签名的方法
2018/06/17 Python
python3第三方爬虫库BeautifulSoup4安装教程
2018/06/19 Python
Django项目创建到启动详解(最全最详细)
2019/09/07 Python
python 利用turtle模块画出没有角的方格
2019/11/23 Python
Python如何实现爬取B站视频
2020/05/20 Python
python实现录制全屏和选择区域录屏功能
2021/02/05 Python
美国著名的团购网站:Woot
2016/08/02 全球购物
国际性能运动服装品牌:Dare 2b
2018/07/27 全球购物
Java的接口和C++的虚类的相同和不同处
2014/03/27 面试题
利用指针变量实现队列的入队操作
2012/04/07 面试题
销售类个人求职信范文
2013/09/25 职场文书
计算机毕业大学生推荐信
2013/12/01 职场文书
医院竞聘演讲稿
2014/05/16 职场文书
群众路线自查自纠工作情况报告
2014/10/28 职场文书
2014年信贷员工作总结
2014/11/18 职场文书
2015年教务处干事工作总结
2015/07/22 职场文书
《走遍天下书为侣》教学反思
2016/02/22 职场文书
晶体管来复再生式二管收音机
2021/04/22 无线电