详解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 优势以及网页设计师如何使用CSS3技术
Jul 29 HTML / CSS
纯CSS打造(无图像无js)的非常流行的讲话(语音)气泡效果
Dec 28 HTML / CSS
CSS3实现时间轴效果
Jul 11 HTML / CSS
纯CSS3实现扇形动画菜单(简化版)实例源码
Jan 17 HTML / CSS
HTML5之SVG 2D入门8—文档结构及相关元素总结
Jan 30 HTML / CSS
html5 乒乓球(碰撞检测)实例二
Jul 25 HTML / CSS
HTML5 FileReader对象的具体使用方法
May 22 HTML / CSS
HTML5+CSS设置浮动却没有动反而在中间且错行的问题
May 26 HTML / CSS
使用SVG实现提示框功能的示例代码
Jun 05 HTML / CSS
CSS3 制作的彩虹按钮样式
Apr 11 HTML / CSS
带你了解CSS基础知识,样式
Jul 21 HTML / CSS
CSS浮动引起的高度塌陷问题
Aug 05 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
使用phpQuery采集网页的方法
2013/11/13 PHP
PHP序列化/对象注入漏洞分析
2016/04/18 PHP
Laravel如何实现适合Api的异常处理响应格式
2020/06/14 PHP
js 图片轮播(5张图片)
2008/12/30 Javascript
(function($){...})(jQuery)的意思
2010/07/22 Javascript
Javascript writable特性介绍
2015/02/27 Javascript
js实现精美的图片跟随鼠标效果实例
2015/05/16 Javascript
Bootstrap每天必学之标签页(Tab)插件
2020/08/09 Javascript
JavaScript中输出信息的方法(信息确认框-提示输入框-文档流输出)
2016/06/12 Javascript
js获取元素下的第一级子元素的方法(推荐)
2017/03/05 Javascript
javascript数组去重常用方法实例分析
2017/04/11 Javascript
基于jQuery和CSS3实现APPLE TV海报视差效果
2017/06/16 jQuery
javaScript中&quot;==&quot;和&quot;===&quot;的区别详解
2018/03/16 Javascript
用node.js写一个jenkins发版脚本
2019/05/21 Javascript
解决layui动态加载复选框无法选中的问题
2019/09/20 Javascript
vuex存值与取值的实例
2019/11/06 Javascript
vue跳转方式(打开新页面)及传参操作示例
2020/01/26 Javascript
vuex中store存储store.commit和store.dispatch的用法
2020/07/24 Javascript
JavaScript实现随机点名小程序
2020/10/29 Javascript
python中使用sys模板和logging模块获取行号和函数名的方法
2014/04/15 Python
教你如何在Django 1.6中正确使用 Signal
2014/06/22 Python
Python3如何解决字符编码问题详解
2017/04/23 Python
Python3 pickle对象串行化代码实例解析
2020/03/23 Python
python实现输入三角形边长自动作图求面积案例
2020/04/12 Python
python3 sleep 延时秒 毫秒实例
2020/05/04 Python
浅谈盘点5种基于Python生成的个性化语音方法
2021/02/05 Python
罗德与泰勒百货官网:Lord & Taylor
2016/08/12 全球购物
党课学习思想汇报
2014/01/02 职场文书
《美丽的公鸡》教学反思
2014/02/25 职场文书
个人租房协议书范本
2014/09/30 职场文书
2014旅游局党组书记党建工作汇报材料
2014/11/02 职场文书
2015年教师节主持词
2015/07/03 职场文书
2016先进工作者事迹材料
2016/02/25 职场文书
浅谈MySQL函数
2021/10/05 MySQL
MySQL数据库超时设置配置的方法实例
2021/10/15 MySQL
Apache Pulsar结合Hudi构建Lakehouse方案分析
2022/03/31 Servers