框阴影切断

Box Shadow Cut off

我有一个容器,其中列出了一些卡片 (divs)。这个容器是一个有 2 列的网格元素 下面是容器元素的 CSS。

  display: grid;
  grid-template-columns: repeat(2, 350px);
  grid-template-rows: min-content;
  gap: 1.75rem 3rem;
  margin-top: 1.5rem;
  width: 100%;

  // This is needed to display the box-shadows since overflow is set
  padding: 10px;
  margin: -10px;
  margin-top: 1rem;
  height: 450px;
  overflow-y: scroll;
}

每个卡片元素(带有框阴影的元素)都包裹在一个 div 中,将其高度扩展 16px

const Wrapper = styled(Box)`
  height: calc(100% + 16px);
`;

这似乎修复了被截断的框阴影,但 height: 450px 不适用于所有浏览器,因为它看起来不一致。我正在尝试找到一种解决方案,其中卡片容器(即滚动容器,下面的代码)的高度距离底部仅 12px,这样就可以避免这种 hacky 解决方案。

我不太明白为什么底部的盒子阴影被切断了。

.grid {
  display: grid;
  grid-template-columns: repeat(2, 350px);
  grid-template-rows: min-content;
  gap: 1.75rem 3rem;
  margin-top: 1.5rem;
  width: 100%;
  
  padding: 16px;
  padding-bottom: 16px;
  margin: -10px;
  margin-top: 1rem;
  margin-bottom: -16px;
  height: 450px;
  overflow-y: scroll;
  
  outline: 1px solid red;
}

.card {
  padding: 1rem 1.25rem;
  outline: 1px solid blue;
  width: 350px;
  height: 245px;
  
  box-shadow:
    -5px -5px 10px 0px white,
    10px 10px 15px 0px black;
}
<div class="grid">
  <div class="card"></div>
  <div class="card"></div>
  <div class="card"></div>
</div>

这是您的查询的解决方案。

.grid-wrapper {
  overflow-y: scroll;
  height: 450px;
  overflow-x: hidden;
}

.grid {
  display: grid;
  grid-template-columns: repeat(2, 350px);
  grid-template-rows: min-content;
  gap: 1.75rem 3rem;
  margin-top: 1.5rem;
  width: 100%;
  padding: 16px;
  padding-bottom: 16px;
  margin: -10px;
  margin-top: 1rem;
  margin-bottom: -16px;
  overflow: hidden;
  outline: 1px solid red;
}

.card {
  padding: 1rem 1.25rem;
  outline: 1px solid blue;
  width: 350px;
  height: 245px;
  box-shadow: -5px -5px 10px 0px white, 10px 10px 15px 0px black;
}
<div class="grid-wrapper">
  <div class="grid">
    <div class="card"></div>
    <div class="card"></div>
    <div class="card"></div>
  </div>
</div>