如何通过CSS在可变高度内容区域上获得复杂的阴影背景?

时间:2012-06-06 15:32:56

标签: css html5 layout css3 css-float

我正在尝试在网站的可变长度内容部分构建复杂的阴影背景。我已经尝试过我所知道的每一个技巧来完成这项工作,而且无法弄清楚如何让它正常工作。我希望这里的CSS忍者可以提供帮助。

您可以在此处查看我要完成的示例:http://mpgnet.com/example.jpg

如您所见,顶部和底部阴影很容易。右侧和左侧的阴影是麻烦制造者。顶部和底部150px与中心部分不同,中心部分需要随着中心内容的垂直增长而扩展。

这里它变得非常棘手:这些阴影必须具有透明背景,因为背景不是实心的(因为在这个示例图像中突出显示阴影),并且因为长度是可变的,所以你永远不知道端盖将落在背景图案上。因此,我不能用重复的阴影制作整个东西,然后用顶部和底部覆盖它的顶部。

任何有关如何实现这一目标的建议/想法/灵感都表示赞赏。 CSS3用法还可以。

1 个答案:

答案 0 :(得分:9)

这使用CSS3所以它在IE8或更老版本中不起作用,但我想我写过你可以使用的东西。您可以看到有效的演示here。 (只需展开和收缩浏览器窗口,看它是否有效)。

我看到有人提到使用border-image但这种方式不需要图像并且具有更好的浏览器支持(特别是IE9)。

我没有做顶部和底部阴影,因为那些不需要在你的设计中展开和收缩。

.shadowbox {
    position: relative;
    margin: 100px auto;
    width: 80%;
}

.shadowbox:after {
    position: absolute;
    content: '';
    top: 10px;
    bottom: 10px;
    left: 0;
    width: 20px;
    box-shadow: 0px 0px 15px rgba(0,0,0,0.7);
    border-radius: 50%;
}

.shadowbox:before {
    position: absolute;
    content: '';
    top: 10px;
    bottom: 10px;
    right: 0;
    width: 15px;
    box-shadow: 0px 0px 15px rgba(0,0,0,0.7);
    border-radius: 50%;
}

.shadowbox.content {
    position: relative;
    z-index: 1;
    background: #fff;
    padding: 30px;
    z-index: 10;
}