需求
实现图片的透明度渐变效果,效果如下:
效果图实现
先说下我的实现,并没有用什么黑科技,而是通过两层图层堆叠的方式来做的。下面一层就是单纯的 svg 图片,上面覆盖了一层遮罩,并设置遮罩的背景色为蓝色到透明色的从左到右渐变。这样,看上去就是一个图片从右到左渐渐变得透明的效果。
<el-col :span="8">
<el-card
class="dashboard-card dashboard-card-total"
>
<div class="dashboard-card-title">总数</div>
<div class="dashboard-card-value">2</div>
<i class="iconfont icon-text-audit-total dashboard-card-icon" />
<div class="dashboard-card-icon-mask" />
</el-card>
</el-col>
.dashboard-card {
padding: 20px 20px;
height: 124px;
position: relative;
.dashboard-card-title {
font-size: 16px;
color: #606266;
}
.dashboard-card-value {
font-size: 24px;
margin-top: 20px;
color: #303133;
font-weight: bold;
}
.dashboard-card-percent {
font-size: 14px;
font-weight: normal;
color: #909399;
}
.dashboard-card-icon {
position: absolute;
color: #ffffff;
font-size: 50px;
line-height: 60px;
width: 80px;
text-align: right;
right: 10px;
bottom: 0px;
opacity: 0.8;
z-index: 11;
}
.dashboard-card-icon-mask {
position: absolute;
right: 0;
bottom: 0px;
width: 90px;
height: 60px;
z-index: 22;
}
}
.dashboard-card-total {
background: #9eceff;
.dashboard-card-icon-mask {
background-image: linear-gradient(to right, #9eceff, transparent);
}
}
这是我比较粗暴的方法,后来在网上看到一种更加优雅的方式:
.div {
box-sizing: border-box;
width: 400px;
height: 240px;
font-size: 22px;
padding-top: 100px;
overflow: hidden;
background: no-repeat center top / 100% 100%;
background-image: linear-gradient(to top, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0)), url(img/3.jpg)
}
大体上差不多,重点是CSS 的 background-image 属性可以设置多张图片,用逗号隔开。因为我不知道这个属性有这个能力才会额外加了个渐变透明图层来实现效果。
网友评论