8

我有两个相邻的 div,背景颜色为白色。http://jsfiddle.net/J5ZXt/是代码的链接。我希望两个 div 看起来像一个元素,所以我需要删除一部分阴影。有任何想法吗?

4

4 回答 4

13

是的,有可能。只需用以下内容掩盖它:before

/* Add relative positioning */
#two {
  position:relative;
}
/* Add :before element to cover up shadow */
#two:before {
  background:white;
  display:block;
  content:".";
  font-size:0;
  width:4px;
  height:100px;
  position:absolute;
  left:-4px;
  top:0;
}

/* Existing styles */
#one {
  width: 100px;
  height: 100px;
  background: #FFF;
  -moz-box-shadow: 0 0 3px 1px rgba(0,0,0,0.3);
  -webkit-box-shadow: 0 0 3px 1px rgba(0,0,0,0.3);
  box-shadow: 0 0 3px 1px rgba(0,0,0,0.3);
  float:left;
}
#two {
  width: 100px;
  height: 300px;
  background: #FFF;
  -moz-box-shadow: 0 0 3px 1px rgba(0,0,0,0.3);
  -webkit-box-shadow: 0 0 3px 1px rgba(0,0,0,0.3);
  box-shadow: 0 0 3px 1px rgba(0,0,0,0.3);
  float:left;
}
<div id="one"></div>
<div id="two"></div>

于 2012-05-16T19:14:41.567 回答
6

这是我能在几分钟内得到的最好的,我认为它可以完成工作。最好的事情是它的简单性(您的 css 只需 3 次编辑)

定位 D1 的阴影,使右边缘具有负值(-4px 足以隐藏它)

给两个 div 相对定位,这样我们就可以控制它们的堆叠顺序。

给 D1 一个比 D2 更高的 z-index,这样它就可以掩盖 D2 阴影的顶部。

#one {
    width: 100px;
    height: 100px;
    background: #FFF;
    -moz-box-shadow: -4px 0 3px 1px rgba(0,0,0,0.3);
    -webkit-box-shadow: -4px 0 3px 1px rgba(0,0,0,0.3);
    box-shadow: -4px 0px 3px 1px rgba(0,0,0,0.3);
    float:left;
    position: relative;
    z-index: 20;
}
#two {
    width: 100px;
    height: 300px;
    background: #FFF;
    -moz-box-shadow: 0 0 3px 1px rgba(0,0,0,0.3);
    -webkit-box-shadow: 0 0 3px 1px rgba(0,0,0,0.3);
    box-shadow: 0 0 3px 1px rgba(0,0,0,0.3);
    float:left;
    z-index: 5;
    position: relative;
}
于 2012-05-16T19:16:28.863 回答
2

纯 CSS - 没有

您总是可以尝试在其上方绝对放置一个 div,如本例所示

::before 解决方案不适用于所有浏览器

于 2012-05-16T19:11:15.723 回答
2

因为我讨厌被超越并且倾向于成为一个完美主义者,所以我想出了一个不依赖于特定高度的答案#one——它必须比(当前接受#two的答案也是如此)短. 它的一侧也没有缺口或较大阴影的缺点。#one

注意:这个答案还提供了通过 弯曲角的可能性border-radius。只需添加border-radius:4px;即可#one:after查看结果。

jsFiddle 示例

新的 CSS

<style type="text/css">
#one {
    width: 100px;
    height: 200px;
    background: #fff;
    float:left;
    position:relative;
    overflow:hidden;
}
#one:after {
    display:block;
    content:".";
    font-size:0;
    color:transparent;
    height:8px;
    width:100%;
    padding-left:4px;
    position:absolute;
    bottom:-4px;
    left:-4px;
    background:#fff;
    z-index:2;
    -moz-box-shadow: inset 0 0 3px 1px rgba(0,0,0,0.3);
    -webkit-box-shadow: inset 0 0 3px 1px rgba(0,0,0,0.3);
    box-shadow: inset 0 0 3px 1px rgba(0,0,0,0.3);
}
#two {
    width: 100px;
    height: 300px;
    background: #FFF;
    -moz-box-shadow: 0 0 3px 1px rgba(0,0,0,0.3);
    -webkit-box-shadow: 0 0 3px 1px rgba(0,0,0,0.3);
    box-shadow: 0 0 3px 1px rgba(0,0,0,0.3);
    float:left;
}
</style>
于 2012-05-16T19:42:30.740 回答