CSS 一行代码实现头像与国旗的融合


Posted in HTML / CSS onOctober 24, 2021

到国庆了,大家都急着给祖国母亲庆生。

每年每到此时,微信朋友圈就会流行起给头像装饰上国旗,而今年又流行这款:

CSS 一行代码实现头像与国旗的融合

emm,很不错。

那么,将一张国旗图片与我们的头像,快速得到想要的头像,使用 CSS 如何简单实现呢?

有人认为是改变其中一张图的透明度,实际上不是的。仔细观察合成后的头像,最左边的基本上只能看到红旗看不到原本的头像内容,而最右边基本只能看到头像而不再显示红旗的红色背景。

在 CSS 中使用 mask 遮罩,一行代码实现头像与国旗的融合

在 CSS 中,我们仅仅需要将两张图片叠加在一起,对上层的图片使用 mask 属性,一行代码即可实现该效果。

div {
    position: relative;
    margin: auto;
    width: 200px;
    height: 200px;
    // 正常头像
    background: url(image1) no-repeat;
    background-size: cover;
}
.div::after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
    // 国旗图片
    background: url(image2) no-repeat;
    background-size: cover;
    mask: linear-gradient(110deg, #000 10%, transparent 70%, transparent);
}

在上面的代码中,我们利用了 div 和它的一个伪元素 div::after,实现了将头像和国旗叠加在一起。

只需要在 div::after 中,设置一层 mask 遮罩 mask: linear-gradient(110deg, #000 10%, transparent 70%, transparent),我们就可以实现头像与国旗的巧妙叠:

CSS 一行代码实现头像与国旗的融合

简单介绍下 Mask

在 CSS 中,mask 属性允许使用者通过遮罩或者裁切特定区域的图片的方式来隐藏一个元素的部分或者全部可见区域。

最基本,使用 mask 的方式是借助图片,类似这样:

{
    /* Image values */
    mask: url(mask.png);                       /* 使用位图来做遮罩 */
    mask: url(masks.svg#star);                 /* 使用 SVG 图形中的形状来做遮罩 */
}

当然,借助图片的方式其实比较繁琐,因为我们首先还得准备相应的图片素材,除了图片,mask 还可以接受一个类似 background 的参数,也就是渐变。

类似如下使用方法:

{
    mask: linear-gradient(#000, transparent)                      /* 使用渐变来做遮罩 */
}

下面这样一张图片,叠加上一个从透明到黑色的渐变,

{
    background: url(image.png) ;
    mask: linear-gradient(90deg, transparent, #fff);
}

CSS 一行代码实现头像与国旗的融合

应用了 mask 之后,就会变成这样:

CSS 一行代码实现头像与国旗的融合

这个 DEMO,可以先简单了解到 mask 的基本用法。

这里得到了使用 mask 最重要结论:图片与 mask 生成的渐变的 transparent 的重叠部分,将会变得透明。

值得注意的是,上面的渐变使用的是 linear-gradient(90deg, transparent, #fff),这里的 #fff 纯色部分其实换成任意颜色都可以,不影响效果。

CodePen Demo -- 使用 MASK 的基本使用

利用 Mask 的其他一些小技巧

当然,掌握了 Mask 之后,可以玩出非常多花来。

譬如上述的国旗头像,我们可以配合 CSS @property,实现一些有意思的 hover 效果:

CSS 一行代码实现头像与国旗的融合

或者利用 mask 实现一些趣味转场效果:

CSS 一行代码实现头像与国旗的融合

甚至乎,弹幕网站的人物遮挡弹幕,都是利用 CSS mask 实现的:

CSS 一行代码实现头像与国旗的融合

如果你想深入了解 CSS MASK,不妨细细读一下这两篇文章:

奇妙的 CSS MASK

使用 mask 实现视频弹幕人物遮罩过滤

到此这篇关于CSS 一行代码实现头像与国旗的融合的文章就介绍到这了,更多相关CSS头像与国旗融合内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章,希望大家以后多多支持三水点靠木!

 
HTML / CSS 相关文章推荐
纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)
Aug 11 HTML / CSS
CSS3实现swap交换动画
Jan 19 HTML / CSS
CSS3 函数技巧 用css 实现js实现的事情(clac Counters Tooltip)
Aug 15 HTML / CSS
html5 video标签屏蔽右键视频另存为的js代码
Nov 12 HTML / CSS
一款html5 canvas实现的图片玻璃碎片特效
Sep 11 HTML / CSS
在HTML5中使用MathML数学公式的简单讲解
Feb 19 HTML / CSS
调用HTML5的Canvas API绘制图形的快速入门指南
Jun 17 HTML / CSS
Html5实现移动端、PC端 刮刮卡效果
Jun 30 HTML / CSS
html5.2 dialog简介详解
Feb 27 HTML / CSS
如何在Canvas中添加事件的方法示例
May 21 HTML / CSS
AmazeUI中各种的导航式菜单与解决方法
Aug 19 HTML / CSS
AmazeUI 按钮交互的实现示例
Aug 24 HTML / CSS
如何利用 CSS Overview 面板重构优化你的网站
基于HTML十秒做出淘宝页面
css 边框添加四个角的实现代码
HTML基础详解(下)
Oct 16 #HTML / CSS
HTML基础详解(上)
Oct 16 #HTML / CSS
CSS基础详解
HTML5+CSS+JavaScript实现捉虫小游戏设计和实现
You might like
PHP编码转换函数 自动转换字符集支持数组转换
2012/12/16 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
2016/01/07 PHP
深入分析PHP优化及注意事项
2016/07/04 PHP
浅谈laravel aliases别名的原理
2019/10/24 PHP
对YUI扩展的Gird组件 Part-2
2007/03/10 Javascript
javascript 图片上传预览-兼容标准
2009/06/01 Javascript
jQuery语法总结和注意事项小结
2012/11/11 Javascript
使用js对select动态添加和删除OPTION示例代码
2013/08/12 Javascript
js格式化时间小结
2014/11/03 Javascript
jQuery制作简洁的多级联动Select下拉框
2014/12/23 Javascript
vue.js入门教程之绑定class和style样式
2016/09/02 Javascript
如何使用Bootstrap创建表单
2017/03/29 Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
2019/02/21 Javascript
使用webpack搭建vue项目及注意事项
2019/06/10 Javascript
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
web.py中调用文件夹内模板的方法
2014/08/26 Python
教你用Python脚本快速为iOS10生成图标和截屏
2016/09/22 Python
Python SqlAlchemy动态添加数据表字段实例解析
2018/02/07 Python
TensorFlow实现MLP多层感知机模型
2018/03/09 Python
使用anaconda的pip安装第三方python包的操作步骤
2018/06/11 Python
python进行文件对比的方法
2018/12/24 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
2020/04/01 Python
Python正则表达式如何匹配中文
2020/05/27 Python
Pythonic版二分查找实现过程原理解析
2020/08/11 Python
matplotlib基础绘图命令之bar的使用方法
2020/08/13 Python
详解纯CSS3制作的20种loading动效
2017/07/05 HTML / CSS
Styleonme中文网:韩国高档人气品牌
2017/06/21 全球购物
几道数据库的概念性面试题
2014/05/30 面试题
如何用JQuery进行表单验证
2013/05/29 面试题
数控专业毕业生自荐信范文
2014/03/04 职场文书
投标文件签署授权委托书范本
2014/10/12 职场文书
2015年保送生自荐信
2015/03/24 职场文书
导游词之吉林吉塔
2019/11/11 职场文书
《卧薪尝胆》读后感3篇
2019/12/26 职场文书
苹果macOS 13开发者预览版Beta 8发布 正式版10月发布
2022/09/23 数码科技