如何让 div 阴影覆盖它的 children?

How to make div shadow come over its children?

我想让 div 的内阴影覆盖它的内容(请注意,我不只是想让图像有内阴影,我有一个更复杂的可滚动 div 这么多 children 这只是一个最小的例子。

div {
  white-space: nowrap;
  box-shadow: inset 0 0 10px #000000;
}

img {
  display: block;
}
<div>
  <img src="http://www.claireking.com/wp-content/uploads/2018/01/images.png" />
</div>

只需为阴影量添加填充。

div {
  white-space: nowrap;
  box-shadow: inset 0 0 10px #000000;
  padding: 10px;
}

查看工作 fiddle: https://jsfiddle.net/f0qasdo6/

UPD:另一个不改变 div 大小的工作示例:

div {
  white-space: nowrap;
  position: relative;
}

div:before {
  content: '';
  display: block;
  position: absolute;
  top:0;
  left: 0;
  right: 0;
  bottom: 0;
  box-shadow: inset 0 0 10px #000000;
}

这种方法的缺点是您将无法单击 div 中的内容,因此它可用于为不可交互的块添加效果。

参见fiddle: https://jsfiddle.net/r3t2p2cw/

同意 Vitalii Chmovzh 的回答,但以防万一您不想 space 通过填充。

所以只需将它用于您的 img 标签即可。

img{
  display: block;
  position:relative;
  z-index:-1;
}

不改变盒子模型的大小。

已更新fiddle

这个问题是图像在阴影上呈现。

试试这个,

div {
  white-space: nowrap;
    position: relative;
}

img{
  display: block;
}

div::before {
  box-shadow: inset 0 0 10px #000000;
    position: absolute;
    width: 100%;
    height: 100%;
    content: "";
}

不知怎么的,你的图片不适合我。这是解决方案:

div {
  width: 70%;
  white-space: nowrap;
  box-shadow: inset 0 0 10px #000000;
}

img{
  width: 100%;
  display: block;
  position: relative;
  z-index: -1;
}

https://jsfiddle.net/tp9pz9w0/7/