博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
透明背景情况下遮罩出不规则图片
阅读量:5958 次
发布时间:2019-06-19

本文共 944 字,大约阅读时间需要 3 分钟。

我们在处理图片,比如用户头像的时候,通常上传的都是矩形图片

例如:
3250007602-547424f893b6a_huge256

有时候根据设计师的需求,会要求是圆形或者带圆角,这时候我们通常使用css border-radius来达到这一效果:

css.avatar {    width: 50px;    height: 50px;    overflow: hidden;    border-radius: 50%;}.avatar > img {    width: 100%;    height: 100%;}

但是这次遇到的一个需求是,图片要不规则显示出来,设计稿中是这样的

图片描述

好我们来想可能办法,总体思路是遮罩,难点是遮罩出的图片是不规则,要有白色边框,背景透明。

  1. 使用png透明蒙版
  2. css shape、clip等
  3. 在四个角画三角形来遮罩出六边形
  4. canvas
  5. svg

我们来一一试验:

使用png透明蒙版

如果纯色背景还可以,但是背景要求透明的,所以第一种看样子不大可能了。

css shape、clip等

css-webkit-clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);

这样确实可以画出来六边形,背景也可以是透明,如果仔细研究还有可能画出白色的边框但是

图片描述
这样画出来是完全的标准六边形,而设计稿是带设计师傲娇的圆角的,显然不符合精准还原。

在四个角画三角形来遮罩出六边形

这样也确实可以画出六边形,但是实现出来效果和css shape一样,标准六边形,只是兼容性要好一些。

canvas

我这里没做canvas的demo,就不演示了,如果实在没有完美的方式,就回来用canvas。

svg

好的,终于码到这里了……

在经过一系列研究探讨之后,发现了这篇文章
文中很巧妙的实现了在不规则情况下显示图片,还可以透明背景,在查阅后,还原了设计稿。
图片描述
还原一下步骤,这个方式需要设计师配合导出一个处理好透明区域的svg,在使用-webkit-mask-box-image方法把svg当做蒙版,这时输出的图片已经是六边形的了
那白色边框怎么办?
既然头像大小是固定的,渲染出来六边形也是固定的,那就。
图片描述
切一个盖在上面吧。

demo:

转载地址:http://jvrxx.baihongyu.com/

你可能感兴趣的文章
切图崽的自我修养-[ES6] 编程风格规范
查看>>
[React Native Android 安利系列]样式与布局的书写
查看>>
利用dxflib读写cad文件
查看>>
服务器迁移小记
查看>>
FastDFS存储服务器部署
查看>>
Android — 创建和修改 Fragment 的方法及相关注意事项
查看>>
流程控制: jQ Deferred 与 ES6 Promise 使用新手向入坑!
查看>>
swift基础之_swift调用OC/OC调用swift
查看>>
Devexpress 15.1.8 Breaking Changes
查看>>
推荐JS插件:imagesLoaded,监测图片加载情况并提供相应的事件(加载成功/失败)...
查看>>
Java B2B2C多用户商城 springcloud架构- common-service 项目构建过程(七)
查看>>
杨老师课堂之ArrayList集合常用方法解析
查看>>
ElasticSearch Client详解
查看>>
新零售讲堂之时代下的传统零售业,何去何从?
查看>>
c++读取和写入TXT文件的整理
查看>>
深入动态人脸识别小场景应用,2019年或将迎来爆发期
查看>>
Ionic2 下处理 Android 设备下返回按钮的事件
查看>>
linux安全问答(1)
查看>>
zabbix监控进程的CPU和内存占用量
查看>>
Error creating bean with name 'userServiceImpl': Injection of autowired dependencies failed
查看>>