Css 当父div具有背景图像时,如何添加框阴影?

Css 当父div具有背景图像时,如何添加框阴影?,css,html,background,dropshadow,Css,Html,Background,Dropshadow,我正在尝试为包含两列文本的div设置一个阴影。我有基本结构: <div class="box> <div id="container" class="pseudo-box"> <p>This is a box</p> </div> </div> 解决这个问题的一种方法是提供一个背景图像,整个背景图像具有白色渐变,这可以通过以下方式实现: ba

我正在尝试为包含两列文本的div设置一个阴影。我有基本结构:

<div class="box>
    <div id="container" class="pseudo-box">
        <p>This is a box</p>
    </div>
</div>

解决这个问题的一种方法是提供一个背景图像,整个背景图像具有白色渐变,这可以通过以下方式实现:

background-image:-webkit-linear-gradient(top, white 0%, white 100%);

这里有一个小把戏:

解决这个问题的一种方法是提供一个背景图像,整个背景图像具有白色渐变,这可以通过以下方式实现:

background-image:-webkit-linear-gradient(top, white 0%, white 100%);

这里有一把小提琴:

如果你设置了
z-index:1父元素应该允许伪元素在它下面,而不在主体下面

溢出:隐藏
,将切断连接

位置:相对
可用于设置从哪个区域开始,
绝对值
子项应取坐标

解决方案是在盒子底部粘贴一个额外的元素,需要半透明。这个额外的元素可以在内部绘制阴影并溢出,从而只保留所需的部分。

如果设置
z-index:1父元素应该允许伪元素在它下面,而不在主体下面

溢出:隐藏
,将切断连接

位置:相对
可用于设置从哪个区域开始,
绝对值
子项应取坐标

解决方案是在盒子底部粘贴一个额外的元素,需要半透明。这个额外的元素可以在内部绘制阴影并溢出,从而只保留所需的部分。

为什么不在.box元素而不是.pseudo框上放置阴影,如下所示:

.box {
  position: absolute;
  top: 130px;
  left: 0;
  right: 0;
  min-width: 850px;
  bottom: 54px;
  overflow: hidden;
  background: white url(/u/me/workspace/test2/webdesign/ribbon-horiz.png) top left no-repeat;
  border-bottom: solid thin #aaaaaa;
  font-size: 16px;
  line-height: 150%;
  text-align: left;
  z-index: 10;
  background: white;
}
.pseudo-box{
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#cbcbcb), color-stop(100%,#bfbfbf)); 
    /*background: url(/u/me/workspace/test2/webdesign/ribbon-horiz.png) top left no-repeat;*/
    border-radius: 6px;
    padding: 10px; 
    position: absolute;
    left: 20px;
    right: 20px;
    top: 40px;
    bottom: 20px;
    min-width: 650px;
    padding: 0 10px 0 0;
    border-top: thin solid #aaa;
    border-bottom: thin solid #aaa;
    border-left: thin solid #aaa;
    border-right: thin solid #aaa;
    border-radius: 4px; 
}
.box:before,
.box:after {
   content:"";
   display: block;
   position:absolute;
   background:#444;
    z-index: 0;
   bottom: 30px;
   left:40px;
   width:50%;
   height:50%;
   max-width:300px;
   -webkit-box-shadow:0 10px 5px rgba(0, 0, 0, 0.7);
   -moz-box-shadow:0 10px 5px rgba(0, 0, 0, 0.7);
   box-shadow:0 10px 5px rgba(0, 0, 0, 0.7);
   -webkit-transform:rotate(-3deg);
   -moz-transform:rotate(-3deg);
   -o-transform:rotate(-3deg);
   transform:rotate(-3deg);
   background-image: none;

}
.box:after {
   right:40px;
   left:auto;
   -webkit-transform:rotate(3deg);
   -moz-transform:rotate(3deg);
   -o-transform:rotate(3deg);
   transform:rotate(3deg);
}

为什么不在.box元素而不是.pseudo框上放置阴影,如下所示:

.box {
  position: absolute;
  top: 130px;
  left: 0;
  right: 0;
  min-width: 850px;
  bottom: 54px;
  overflow: hidden;
  background: white url(/u/me/workspace/test2/webdesign/ribbon-horiz.png) top left no-repeat;
  border-bottom: solid thin #aaaaaa;
  font-size: 16px;
  line-height: 150%;
  text-align: left;
  z-index: 10;
  background: white;
}
.pseudo-box{
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#cbcbcb), color-stop(100%,#bfbfbf)); 
    /*background: url(/u/me/workspace/test2/webdesign/ribbon-horiz.png) top left no-repeat;*/
    border-radius: 6px;
    padding: 10px; 
    position: absolute;
    left: 20px;
    right: 20px;
    top: 40px;
    bottom: 20px;
    min-width: 650px;
    padding: 0 10px 0 0;
    border-top: thin solid #aaa;
    border-bottom: thin solid #aaa;
    border-left: thin solid #aaa;
    border-right: thin solid #aaa;
    border-radius: 4px; 
}
.box:before,
.box:after {
   content:"";
   display: block;
   position:absolute;
   background:#444;
    z-index: 0;
   bottom: 30px;
   left:40px;
   width:50%;
   height:50%;
   max-width:300px;
   -webkit-box-shadow:0 10px 5px rgba(0, 0, 0, 0.7);
   -moz-box-shadow:0 10px 5px rgba(0, 0, 0, 0.7);
   box-shadow:0 10px 5px rgba(0, 0, 0, 0.7);
   -webkit-transform:rotate(-3deg);
   -moz-transform:rotate(-3deg);
   -o-transform:rotate(-3deg);
   transform:rotate(-3deg);
   background-image: none;

}
.box:after {
   right:40px;
   left:auto;
   -webkit-transform:rotate(3deg);
   -moz-transform:rotate(3deg);
   -o-transform:rotate(3deg);
   transform:rotate(3deg);
}

但这似乎不允许我使用背景图像。我希望包含文本的div,即psedu框相对于父div基本上是透明的,这样父div的背景图像仍然可见。@Jefftopia背景图像是用于.box还是.pseudo box?您提供给我们的css有两个的背景图像。把它放在pseudo-box上是反复试验的结果。但这似乎不允许我使用背景图像。我希望包含文本的div,即psedu框相对于父div基本上是透明的,这样父div的背景图像仍然可见。@Jefftopia背景图像是用于.box还是.pseudo box?您提供给我们的css有两个的背景图像。把它放在伪盒子上是反复试验的结果。遗憾的是,我已经试过了,但它不起作用。设置z索引仍然将伪元素保留在父元素的顶部,即使父元素的分数较高。同样,只有当父母有背景图像时才是这样,这是我想要的。也更新了你的小提琴。你滥用立场:绝对的,不需要的。信任文档流和您的浏览器:)关于定位,足够公平。你试过你的代码笔和图像吗?这似乎仍然不起作用。我试着通过placekitten在我的小提琴上添加一个图像,但它不起作用。对于任何想知道,是的,这是我第一次尝试网页设计。背景色或背景图像,不是一样吗?这里是bg中的图像(见钢笔更新),所以现在让包含文本的框透明,这样背景就可以通过了。这样做,我的问题就会得到回答!可悲的是,我尝试过这个,但它不起作用。设置z索引仍然将伪元素保留在父元素的顶部,即使父元素的分数较高。同样,只有当父母有背景图像时才是这样,这是我想要的。也更新了你的小提琴。你滥用立场:绝对的,不需要的。信任文档流和您的浏览器:)关于定位,足够公平。你试过你的代码笔和图像吗?这似乎仍然不起作用。我试着通过placekitten在我的小提琴上添加一个图像,但它不起作用。对于任何想知道,是的,这是我第一次尝试网页设计。背景色或背景图像,不是一样吗?这里是bg中的图像(见钢笔更新),所以现在让包含文本的框透明,这样背景就可以通过了。这样做,我的问题就会得到回答!