使用css让图片透明渐变

简介: 今天接到一个这样的需求,将一张图片作为一个背景,然后四周透明渐变,很简单是吧,只要这个背景图片是png的,然后图片四周半透明就ok了,然而给到我手里的是jpg格式的,怎么办?

1. 前言


今天接到一个这样的需求,将一张图片作为一个背景,然后四周透明渐变,效果如下:
image.png
很简单是吧,只要这个背景图片是png的,然后图片四周半透明就ok了,然而给到我手里的是jpg格式的,怎么办?让UI小姐姐在帮你做一个呗,又多了一个搭讪的好机会,额... 我社恐。。。直接css手冲吧!!!

2. css 手冲第一波


使用背景渐变,覆盖到图片上面,就可以实现一个伪透明渐变的效果了,上代码:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        html,
        body {
    
    
            margin: 0;
            padding: 0;
        }

        body {
    
    
            height: 100vh;
            width: 100vw;
            display: flex;
            background: aquamarine;
        }

        .mask {
    
    
            margin: auto;
            position: relative;
        }

        .mask::after {
    
    
            content: '';
            position: absolute;
            left: 0;
            top: 0;
            right: 0;
            bottom: 0;
            background: radial-gradient(transparent 50%, aquamarine 100%);
        }

        .mask img {
    
    
            width: 500px;
            position: relative;
        }
    </style>
</head>
<body>
<div class="mask">
    <img src="1.jpg">
</div>
</body>
</html>

效果同上面截图一样,这里就不放截图了,但是这里是有缺陷的,如果这个大背景图是其他颜色,那么你也需要跟着改,如果是背景图直接凉了。

  1. 换一种背景色
    image.png

  2. 色彩多变的背景图
    image.png

3. css 手冲第二波


上面的方式被我pass后,第二波里面就想到了cssfilter属性,可以使用alpha通道来实现透明渐变效果,上代码:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        html,
        body {
    
    
            margin: 0;
            padding: 0;
        }

        body {
    
    
            height: 100vh;
            width: 100vw;
            display: flex;
            background: radial-gradient(#00ff00, #0000cc, #999977, #EEEEEE, #ff5500, #dd4444, #00ff00, #0000cc, #999977, #EEEEEE, #ff5500, #dd4444);
        }

        img {
    
    
            margin: auto;
            position: relative;
            width: 500px;
            filter: Alpha(Opacity=30, FinishOpacity=0, Style=1, StartX=0, StartY=0, FinishX=100, FinishY=100)
        }

    </style>
</head>
<body>
<img src="1.jpg">
</body>
</html>

image.png
空学一身知识,结果很令我失望,这filter属性不用也罢,反正这个属性目前风评也不是很好,兼容性差,消耗性能,虽然网上也有很多说这个属性很强大,确实很强大,但是不建议使用在生产环境中,自己玩玩还是ok的,所以这里就不介绍详细信息了,感兴趣可以自己查一下资料去玩玩。

4. css 手冲第三波

这一波咱使用mask属性,mask这个单词很熟悉了吧,写遮罩的时候总喜欢用这个单词,所以see mask,我就先上代码了:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        html,
        body {
    
    
            margin: 0;
            padding: 0;
        }

        body {
    
    
            height: 100vh;
            width: 100vw;
            display: flex;
            background: radial-gradient(#00ff00, #0000cc, #999977, #EEEEEE, #ff5500, #dd4444, #00ff00, #0000cc, #999977, #EEEEEE, #ff5500, #dd4444);
        }

        img {
    
    
            margin: auto;
            position: relative;
            width: 500px;
            -webkit-mask: radial-gradient(black 50%, transparent 100%);
        }

    </style>
</head>
<body>
<img src="1.jpg">
</body>
</html>

image.png
效果很完美,唯一的缺点就是需要带上-webkit-前缀,因为是实验性的功能,又解决一个问题,顺带着还学习了一个css属性,外加几个解决问题的方案,完美撒花。

乐意去学习一下mask属性的可以去MDN上面看看哟 ---> https://developer.mozilla.org/zh-CN/docs/Web/CSS/mask

目录
相关文章
|
2月前
|
前端开发 计算机视觉 开发者
利用CSS改变图片颜色的100种方法!
利用CSS改变图片颜色的100种方法!
44 1
|
6月前
|
前端开发
如何用css显示一个图片中多个小图标
如何用css显示一个图片中多个小图标
|
7月前
|
前端开发
|
8月前
|
前端开发
css鼠标放上图片变大
css鼠标放上图片变大
css鼠标放上图片变大
|
1天前
|
前端开发 UED 开发者
【专栏:HTML与CSS实战项目篇】制作一个响应式图片画廊
【4月更文挑战第30天】本文介绍了如何使用HTML和CSS创建响应式图片画廊。响应式画廊能根据用户设备屏幕大小自动调整布局。首先规划结构,包含一个图片容器和每张图片元素,并为图片提供替代文本。接着设计样式,设置图片大小、间距和视觉效果。然后通过媒体查询实现响应式设计,根据不同屏幕尺寸调整图片排列。同时考虑性能优化,如压缩图片和使用懒加载技术。最后,测试和调试确保画廊在各种设备上正常工作。这个过程强调了响应式设计和用户体验的重要性。
|
16天前
|
移动开发 前端开发 搜索推荐
HTML图片标签(2) HTML5+CSS3+移动web 前端开发入门笔记(三)
HTML图片标签(2) HTML5+CSS3+移动web 前端开发入门笔记(三)
22 0
|
2月前
css3鼠标悬停图片特效源码
css3鼠标悬停图片特效,图片悬停效果源码,可以在网页上面作为自己的动态加载名片,放到侧边栏或者网站合适的位置即可
14 0
css3鼠标悬停图片特效源码
|
2月前
|
Web App开发 前端开发 iOS开发
编程笔记 html5&css&js 008 HTML图片
编程笔记 html5&css&js 008 HTML图片
|
3月前
CSS3图片反射box-reflect属性
CSS3图片反射box-reflect属性
23 0