内容下方插图的box-shadow

问题描述 投票:29回答:2

我不明白为什么,但插图框阴影是我的内容之下。

下面是一个例子:

div {
   box-shadow:inset 0 0 10px black;
   height:300px;
   color:red;
}
<div>
   a
</div>

http://jsfiddle.net/MAckM/

你看a是包装盒上的阴影的顶部。

我怎样才能获得箱子的影子是在a的顶部?

css z-index css3
2个回答
34
投票

你需要做一个新的元素在div里面,绝对定位和高度和宽度为100%,然后给该元素的盒子阴影。

HTML:

<div>
    <div></div>
    a
</div>​

CSS:

div {
    height:300px;
    color:red;
    position:relative;
}

div div {
    box-shadow:inset 0 0 10px black;
    position:absolute;
    top:0;
    left:0;
    width:100%;
    height:100%;
}​

这里是一个JSFiddle

编辑:

或者,你可以使用伪元素:

HTML:

<div>
    a
</div>​

CSS:

div {
    height:300px;
    color:red;
    position:relative;
}

div:before {
    content:'';
    display:block;
    box-shadow:inset 0 0 10px black;
    position:absolute;
    top:0;
    left:0;
    width:100%;
    height:100%;
}​

JSFiddle


1
投票

这个答案通过提供一个最小的例子最简单的解决方案,并解决滚动的问题。

不幸的是没有办法避免的额外包裹div(由于box-shadow layering)。

.container {
  position: relative;
}

.container::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  box-shadow: inset 0 0 9px 3px yellow;
  pointer-events: none;
}

.items {
  height: 100px;
  overflow: scroll;
}
<div class="container">
  <div class="items">
    <div class="item">One</div>
    <div class="item">Two</div>
    <div class="item">Three</div>
    <div class="item">Four</div>
    <div class="item">Five</div>
    <div class="item">Six</div>
    <div class="item">Seven</div>
    <div class="item">Eight</div>
    <div class="item">Nine</div>
    <div class="item">Ten</div>
    <div class="item">Eleven</div>
    <div class="item">Twelve</div>
  </div>
</div>
© www.soinside.com 2019 - 2024. All rights reserved.