图片投影阴影效果

原理

使用 CSS 的 before 效果,将 background 设置为 inherit,复制一个一样的图片项。

使用 filter 滤镜将其模糊化,然后置于底层即可。

准备

首先写一个列表,用来存放图片项,然后写几个图片项,用来展示图片,这里面图片要以背景的形式展示。

HTML:

<div class="list">
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
</div>

CSS:

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
body {
  background-color: #ccc;
}
.list {
  width: 100%;
  display: flex;
  justify-content: center;
  padding: 100px 0;
}
.item {
  width: 200px;
  height: 200px;
  border: 1px solid #f00; /* 为了看清楚,这里设置了边框,后面会删掉 */
  margin: 0 50px;
  border-radius: 30px;
  position: relative;
}

效果:

效果图

现在,大体的布局已经实现了,接下来就是实现图片投影阴影效果。

实现

1. 为每个项添加背景图效果

<div class="list">
  <div class="item" style="background-image: url('./1.jpg')"></div>
  <div class="item" style="background-image: url('./2.jpg')"></div>
  <div class="item" style="background-image: url('./3.jpg')"></div>
</div>

同时删掉CSS中注释的那行代码。添加如下代码,让图片填充整个容器,超出部分隐去,并且居中显示,这里看个人喜好:

background-size: cover;
background-position: center;

效果图:

效果图

2. 使用 before 来复制一层图片

.item::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: inherit;
  border-radius: 30px;
}

此时,图片重叠,是看不出什么效果的,接下来就是让图片重叠的部分不一样——让它成为一个阴影效果。

3. 使用 filter 来实现阴影 before 的模糊效果

在 before 中添加如下代码,模糊度根据你想要的投影大小来设定:

filter: blur(30px);

我们可以通过调整 top 等的值来实现位置的指定。这里我设置了 top: 10px;,效果图如下:

效果图

可以看到周围已经有了投影的效果,但是图片也有部分内容被遮盖住了,因此我们需要把阴影移到图片后面。

4. 使用 z-index 来调整 before 的层级

在 before 中添加如下代码:

z-index: -1;

效果图:

效果图

5. 调整透明度

当我们把模糊度调整较低的时候,会发现阴影的效果不是很明显,跟图片相差过小,因此我们需要调整透明度来增强阴影的效果。

如图:

效果图

此时,我们只需要在给 before 设置一个 opacity(透明度)即可:

opacity: 0.6;

效果图:

效果图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值