You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为两个区块实现组合式box-shadow效果(模拟父元素阴影)

实现两个独立区块视觉等同父元素统一阴影的效果

我有两个独立区块,没法给它们的父元素设置统一的box-shadow,得单独给每个区块设置阴影,让视觉效果跟给父元素加阴影一模一样。

当前代码(问题:两个区块各自的阴影在衔接处重叠,视觉上不像一个整体):

body {
  padding: 50px;
}

.block1 {
  padding: 20px;
  border-width: 1px 1px 0 1px;
  border-style: solid;
  border-radius: 4px 4px 0 0;
  border-color: #d5dce3;
  box-shadow: 0 0 2px #00000017,0 5px 25px #0000000a,0 1px 5px #040b170a;
}

.block2 {
  padding: 20px;
  border-width: 0 1px 1px 1px;
  border-style: solid;
  border-radius: 0 0  4px 4px;
  border-color: #d5dce3;
  box-shadow: 0 0 2px #00000017,0 5px 25px #0000000a,0 1px 5px #040b170a;
}
<div class="block1">
  Block 1
</div>
<div class="block2">
  Block 2
</div>

预期效果:
预期效果示意图


解决方案

核心思路是限制每个区块的阴影范围,避免衔接处重叠:

  • 顶部区块.block1只保留上、左、右方向的阴影,移除底部阴影
  • 底部区块.block2只保留下、左、右方向的阴影,移除顶部阴影

调整后的CSS代码:

body {
  padding: 50px;
}

.block1 {
  padding: 20px;
  border-width: 1px 1px 0 1px;
  border-style: solid;
  border-radius: 4px 4px 0 0;
  border-color: #d5dce3;
  /* 仅保留上、左、右阴影,消除底部方向的阴影扩散 */
  box-shadow: 0 0 2px #00000017, 
              0 -5px 25px #0000000a, 
              -1px 0 5px #040b170a, 
              1px 0 5px #040b170a, 
              0 -1px 5px #040b170a;
}

.block2 {
  padding: 20px;
  border-width: 0 1px 1px 1px;
  border-style: solid;
  border-radius: 0 0 4px 4px;
  border-color: #d5dce3;
  /* 仅保留下、左、右阴影,消除顶部方向的阴影扩散 */
  box-shadow: 0 0 2px #00000017, 
              0 5px 25px #0000000a, 
              -1px 0 5px #040b170a, 
              1px 0 5px #040b170a, 
              0 1px 5px #040b170a;
}

调整后两个区块的阴影会无缝衔接,视觉上完全等同于给父元素添加了统一的阴影效果。

内容的提问来源于stack exchange,提问作者Kvasimodo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 07:35:01