详解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 相关文章推荐
50个强大璀璨的CSS3/JS技术运用实例
Feb 27 HTML / CSS
CSS3 实用技巧:实现黑白图像效果示例代码
Jul 11 HTML / CSS
CSS3制作文字半透明倒影效果的两种实现方式
Aug 08 HTML / CSS
HTML+CSS3模拟心的跳动实例代码
Sep 05 HTML / CSS
CSS3解析抖音LOGO制作的方法步骤
Apr 11 HTML / CSS
css3的focus-within选择器的使用
May 11 HTML / CSS
CSS3 实现的加载动画
Dec 07 HTML / CSS
HTML5 Web 存储详解
Sep 16 HTML / CSS
HTML5中的nav标签学习笔记
Jun 24 HTML / CSS
谈一谈HTML5本地存储技术
Mar 02 HTML / CSS
JavaScript+Canvas实现自定义画板的示例代码
May 13 HTML / CSS
使用CSS实现音波加载效果
May 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短域名转换为实际域名函数
2011/01/17 PHP
jquery 学习笔记 传智博客佟老师附详细注释
2020/09/12 Javascript
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
2009/11/26 Javascript
关于setInterval、setTimeout在jQuery中的使用注意事项
2011/09/28 Javascript
通过Jquery的Ajax方法读取将table转换为Json
2014/05/31 Javascript
ActiveX控件与Javascript之间的交互示例
2014/06/04 Javascript
javascript将浮点数转换成整数的三个方法
2014/06/23 Javascript
jQuery中offset()方法用法实例
2015/01/16 Javascript
require.js的用法详解
2015/10/20 Javascript
AngularJs 指令详解及示例代码
2016/09/01 Javascript
Bootstrap选项卡动态切换效果
2016/11/28 Javascript
微信小程序中的onLoad详解及简单实例
2017/04/05 Javascript
详解webpack 多入口配置
2017/06/16 Javascript
使用vue与jquery实时监听用户输入状态的操作代码
2017/09/19 jQuery
如何快速解决JS或Jquery ajax异步跨域的问题
2018/01/08 jQuery
当vue路由变化时,改变导航栏的样式方法
2018/08/22 Javascript
详解create-react-app 2.0版本如何启用装饰器语法
2018/10/23 Javascript
11个教程中不常被提及的JavaScript小技巧(推荐)
2019/04/17 Javascript
js实现拖拽与碰撞检测
2020/09/18 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
Python合并多个装饰器小技巧
2015/04/28 Python
Python验证企业工商注册码
2015/10/25 Python
Tensorflow加载预训练模型和保存模型的实例
2018/07/27 Python
python版本五子棋的实现代码
2018/12/11 Python
Python3使用TCP编写一个简易的文件下载器功能
2019/05/08 Python
django-rest-swagger的优化使用方法
2019/08/29 Python
IntelliJ 中配置 Anaconda的过程图解
2020/06/01 Python
python创建文本文件的简单方法
2020/08/30 Python
python爬虫请求头的使用
2020/12/01 Python
印度尼西亚综合购物网站:Lazada印尼
2016/09/07 全球购物
friso美素佳儿官方海外旗舰店:荷兰原产原罐
2017/07/03 全球购物
遇到的Mysql的面试题
2014/06/29 面试题
妇女儿童发展规划实施方案
2014/03/16 职场文书
学习党章心得体会2016
2016/01/15 职场文书
go语言中http超时引发的事故解决
2021/06/02 Golang
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
2022/03/22 MySQL