用于重叠式div的CSS3 box-shadow

时间:2010-08-04 23:45:05

标签: css css3

我正在尝试用css3实现这种效果:

header/main

HTML代码完全像

...
<header>
    ...
</header>

<div id="wrapper">
    ...
</div>
...

目前,css就像是

header {
    display: block;
    width: 900px;
    height: 230px;
    margin: 0 auto;
    border: 1px solid #211C18;
    ...
    box-shadow: 2px 4px 20px #005377;
    -moz-box-shadow: 2px 4px 20px #005377;
    -webkit-box-shadow: 2px 4px 20px #005377;
}

#wrapper {
    width: 820px;    
    margin: 0 auto;
    ...
    border-right: 1px solid #211C18;
    border-bottom: 1px solid #211C18;
    border-left: 1px solid #211C18;
    ...
    box-shadow: 2px 4px 20px #005377;
    -moz-box-shadow: 2px 4px 20px #005377;
    -webkit-box-shadow: 2px 4px 20px #005377;
}

为了获得理想的结果,我需要:

  1. 隐藏主div 的顶部阴影(没问题)
  2. 将标题的底部阴影放在主div的前面,而不是现在的背后。
  3. 我一直在阅读很多关于盒子阴影的内容,而且我还没有找到一个让我高兴的解决方案...... 有什么想法吗?

3 个答案:

答案 0 :(得分:15)

jsfiddle可以满足您的需求。

它的工作方式是使用一个主#wrap元素,该元素使内容居中,并为绝对定位的#main元素创建坐标图。这是因为它的位置:相对CSS规则。您最终得到以下标记:

<div id="wrap">
    <header></header>
    <div id="main"></div>
</div>

然后将header置于此位置和给定位置:relative和z-index以将其设置在#main容器上方。

最后#main绝对位于header下方。 CSS看起来像这样:

/* centre content and create coordinate map for absolutely positioned #main */
#wrap {
    width: 300px;
    margin: 20px auto;
    position: relative;
}

header, #main {
    background: #fff;

    /* rounded corners */
    border: 1px solid #211C18;
    border-radius: 5px;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;    

    /* dropshadows */
    box-shadow: 2px 4px 20px #005377;
    -moz-box-shadow: 2px 4px 20px #005377;
    -webkit-box-shadow: 2px 4px 20px #005377;
}

header {
    display: block;
    width: 300px;
    height: 50px;

    /* stack above the #main container */
    position: relative;
    z-index: 2;
}

#main {
    width: 200px;
    height: 70px;

    /* stack below the header and underlap it...if that's even a word */
    position: absolute;
    z-index: 1;
    top: 40px;
    left: 50px;
}

答案 1 :(得分:3)

我只是运气相对定位。

例如。

第一个div有一个盒子阴影和一个底部边距。第二个div在阴影下滑动。

#firstdiv {width: 960px; box-shadow: 5px 5px 5px #ccc; margin-bottom: 10px;}
#seconddiv {width: 960px; position: relative; top: -10px;}

这不是最好的解决方案,但它对我有用。

答案 2 :(得分:2)

将位置设置为“相对”已经解决了问题!