使用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

目录
相关文章
|
5月前
|
前端开发 UED 容器
CSS基础-背景属性:颜色、图片、重复
【6月更文挑战第9天】本文介绍了CSS背景属性,包括背景颜色、图片、重复的使用和常见问题。通过实例展示了如何设置背景颜色(如使用rgba()注意透明度影响)、背景图片(使用background-size控制缩放)、背景重复(避免默认平铺导致混乱)以及综合使用背景属性创建复杂效果。理解并熟练运用这些属性能提升网页设计的视觉层次和用户体验。建议通过实践不断探索和提升CSS技能。
69 4
|
6月前
|
前端开发 计算机视觉 开发者
利用CSS改变图片颜色的100种方法!
利用CSS改变图片颜色的100种方法!
141 1
|
1月前
|
前端开发 UED
Webpack 中处理 CSS 和图片资源的多 Loader 配置
【10月更文挑战第12天】 处理 CSS 和图片资源是 Webpack 配置中的重要部分。通过合理选择和配置多个 Loader,可以实现对这些资源的精细处理和优化,提升项目的性能和用户体验。在实际应用中,需要不断探索和实践,根据项目的具体情况进行灵活调整和优化,以达到最佳的处理效果。通过对 Webpack 中多 Loader 处理 CSS 和图片资源的深入了解和掌握,你将能够更好地应对各种复杂的资源处理需求,为项目的成功构建和运行提供坚实的基础。
55 1
|
3月前
|
前端开发
如何使用 CSS object-fit 进行图片的缩放和裁剪
如何使用 CSS object-fit 进行图片的缩放和裁剪
86 0
如何使用 CSS object-fit 进行图片的缩放和裁剪
|
3月前
|
前端开发
视觉冲击:CSS实现相册图片的放大效果,让网站首页更震撼!
视觉冲击:CSS实现相册图片的放大效果,让网站首页更震撼!
|
4月前
|
前端开发 容器
CSS【详解】对齐 (含文本垂直对齐,文本水平对齐、单行文本垂直居中、多行文本垂直居中、6 种方案块级元素水平垂直居中 、7 种方案图片水平垂直居中、文本自适应对齐、图标和文本对齐,图片和文本对齐等)
CSS【详解】对齐 (含文本垂直对齐,文本水平对齐、单行文本垂直居中、多行文本垂直居中、6 种方案块级元素水平垂直居中 、7 种方案图片水平垂直居中、文本自适应对齐、图标和文本对齐,图片和文本对齐等)
73 0
|
4月前
|
前端开发 C++
css 鼠标悬浮显示放大图片 vs 鼠标点击显示放大图片
css 鼠标悬浮显示放大图片 vs 鼠标点击显示放大图片
52 0
|
4月前
|
前端开发 UED
前端 CSS 经典:在 Vue3 中使用渐进式图片
前端 CSS 经典:在 Vue3 中使用渐进式图片
112 0
|
4月前
|
前端开发
前端 CSS 经典:图片边框
前端 CSS 经典:图片边框
38 0
|
4月前
|
前端开发 容器
css 【详解】—— 图片底部留有间隙(含解决方案)
css 【详解】—— 图片底部留有间隙(含解决方案)
133 0