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

Jer*_* H. 4 css layout html5 css3 css-float

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

你可以在这里看到我想要完成的一个例子:http://mpgnet.com/example.jpg

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

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

任何建议/想法/灵感如何实现这一点是值得赞赏的.CSS3用法还可以.

Mag*_*son 9

这使用CSS3所以它不能在IE8或更老版本中工作,但我想我已经写了一些你可以使用的东西.你可以在这里看到一个有效的演示.(只需展开和收缩浏览器窗口即可查看它是否正常工作).

我看到有人提到使用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;
}
Run Code Online (Sandbox Code Playgroud)