详解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 border实现图片遮罩效果代码
Apr 09 HTML / CSS
纯CSS3实现绘制各种图形实现代码详细整理
Dec 26 HTML / CSS
css3+伪元素实现鼠标移入时下划线向两边展开的效果
Apr 25 HTML / CSS
css3实现椭圆轨迹旋转的示例代码
Oct 29 HTML / CSS
Html5之svg可缩放矢量图形_动力节点Java学院整理
Jul 17 HTML / CSS
基于 HTML5 Canvas实现 的交互式地铁线路图
Mar 05 HTML / CSS
Canvas与Image互相转换示例代码
Aug 09 HTML / CSS
HTML5各种头部meta标签的功能(推荐)
Mar 13 HTML / CSS
详解H5 活动页之移动端 REM 布局适配方法
Dec 07 HTML / CSS
利用三角函数在canvas上画虚线的方法
Jan 11 HTML / CSS
通过canvas转换颜色为RGBA格式及性能问题的解决
Nov 22 HTML / CSS
HTML 里 img 元素的 src 和 srcset 属性的区别详解
May 21 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编程最快明白》第五讲:php目录、文件操作
2010/11/01 PHP
编写Smarty插件在模板中直接加载数据的详细介绍
2013/06/26 PHP
php发送post请求的三种方法
2014/02/11 PHP
浅析get与post的一些特殊情况
2014/07/28 PHP
php简单实现快速排序的方法
2015/04/04 PHP
PHP永久登录、记住我功能实现方法和安全做法
2015/04/27 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
2015/05/12 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
IE6下JS动态设置图片src地址问题
2010/01/08 Javascript
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
Ajax局部更新导致JS事件重复触发问题的解决方法
2014/10/14 Javascript
jQuery 选择器详解
2015/01/19 Javascript
JavaScript闭包详解
2015/02/02 Javascript
jquery mobile界面数据刷新的实现方法
2016/05/28 Javascript
JS本地刷新返回上一页代码
2016/07/25 Javascript
node.js学习之交互式解释器REPL详解
2016/12/08 Javascript
Mui使用jquery并且使用点击跳转新窗口的实例
2017/08/19 jQuery
Vue 项目中遇到的跨域问题及解决方法(后台php)
2018/03/28 Javascript
微信小程序性能优化之checkSession的使用
2019/03/06 Javascript
jquery实现Ajax请求的几种常见方式总结
2019/05/28 jQuery
Python实现两个list对应元素相减操作示例
2017/06/09 Python
基于python select.select模块通信的实例讲解
2017/09/21 Python
python使用turtle绘制分形树
2018/06/22 Python
pyqt 多窗口之间的相互调用方法
2019/06/19 Python
Python验证码截取识别代码实例
2020/05/16 Python
纯CSS3实现的井字棋游戏
2020/11/25 HTML / CSS
审计工作个人的自我评价
2013/12/25 职场文书
经销商会议欢迎词
2014/01/11 职场文书
优秀学生评语大全
2014/04/25 职场文书
2014年办公室文秘工作总结
2014/12/09 职场文书
2015年社区妇联工作总结
2015/04/21 职场文书
户外亲子活动总结
2015/05/08 职场文书
晚会开幕词范文
2016/03/04 职场文书
MySQL Shell的介绍以及安装
2021/04/24 MySQL
Python实现制作销售数据可视化看板详解
2021/11/27 Python
python运行脚本文件的三种方法实例
2022/06/25 Python