【发布时间】:2016-11-15 07:53:13
【问题描述】:
所以我处于一个棘手的情况:我有一个外部 div 包装器,其中包含一个内部 div 和一个 ul,如下所示:
<div id="wrapper">
<div id="box"></div>
<ul id="list">...</ul>
</div>
#list 必须绝对定位在#box 的正下方,但不能在它出现和消失时移动它和页面周围的其他元素。
由于它是绝对定位的,如果我在#wrapper 周围添加边框,它只会在#box 周围。 box-shadow 当然也一样。问题是,我需要一个能够无缝环绕两个元素的阴影。
我在搜索 google/stackoverflow 时遇到的三个解决方案是:
给两个元素自己的阴影,然后使用
-webkit-clip-path去除#list上的顶部阴影,使其看起来像一个阴影围绕组。 虽然这工作时,阴影相遇的部分有一种奇怪的剪辑效果。所以这个方法行得通,但看起来不太好。 Link to answer describing solution.使用等于模糊负值的散布,然后使用 3 个阴影,
#list的每一侧各一个。 理论上不错,但实际上是两侧的阴影现在不要沿着全长走。 Link to answer describing solution。这是我尝试的jsfiddle。使用
:before或:after伪元素来掩盖重叠的阴影。 这对于类似颜色的框非常有效,但我的ul和div其中包含无法覆盖的内容! Link to answer describing solution
我有点困惑,因为我真的很想在#box 和#list 周围有一个阴影,但似乎找不到适合我的特殊情况的解决方案。任何建议都会非常有帮助!
注意:我实际上使用的是 Electron 框架,因此该解决方案必须在 Chrome 上运行,但它只有必须在 Chrome 上运行铬!
【问题讨论】:
-
@JamesBrown 问题是,我需要
#list绝对定位。如果不是,当它再次出现时,它会推动一切。我想在不改变流程的情况下显示为其他所有内容的弹出窗口。不幸的是,这阻止了#wrapper实际包装它,使这变得不平凡,但我希望那里有一些很棒的 CSS hack,一些大师会给予帮助:) -
这是一个图像实际上非常有用的情况。这听起来很可能 - 所以也许我错过了一些东西。这一切都取决于布局的项目 - 阴影颜色 - 下面的东西等 - 以及它如何转换。
标签: html css shadow box-shadow