如何仅删除盒子阴影的顶部?

时间:2011-08-11 10:46:24

标签: css border css3

我正在使用border-radiusbox-shadow围绕元素发光。

我是否只能删除box-shadow的顶部?

Live example

div {
    margin-top: 25px;
    color: #fff;
    height: 45px;
    margin-top: -5px;
    z-index: -10;
    padding: 26px 24px 46px;
    font-weight: normal;
    background: #000; /*#fff;*/
    border-top: 0px solid #e5e5e5;
    border-left: 1px solid #e5e5e5;
    border-right: 1px solid #e5e5e5;
    border-bottom: 1px solid #e5e5e5;
    -webkit-border-radius: 3px;
     -khtml-border-radius: 3px;
       -moz-border-radius: 3px;
            border-radius: 3px;
    -webkit-box-shadow: rgba(200,200,200,0.7) 0px 0px 10px 0px;
     -khtml-box-shadow: rgba(200,200,200,0.7) 0px 0px 10px 0px;
       -moz-box-shadow: rgba(200,200,200,0.7) 0px 0px 10px 0px;
            box-shadow: rgba(200,200,200,0.7) 0px 0px 10px 0px;
}

编辑:这个小问题就是问题! enter image description here

6 个答案:

答案 0 :(得分:12)

由于您使用了box-shadow,因此您可以使用伪元素创建它并放置在div下面,放置它以便只显示所需的部分:http://jsfiddle.net/kL8tR/60/

有一些重要的注意事项:

  • 伪元素必须有z-index: -1
  • div本身必须有position: relative而不是z-index

伪元素+ CSS3 =太棒了:))

答案 1 :(得分:10)

这有效,但我承认不知道是否有更好的方法(或者如果没有添加包装元素则可能)。使用多个box-shadow s会是一个好主意,但我似乎无法让它看起来一样。

请参阅: http://jsfiddle.net/thirtydot/8qEUc/3/

<强> HTML:

<div id="bla">
    <div> something </div>
</div>

<强> CSS:

#bla {
    overflow-y: hidden;
    padding: 0 10px 10px 10px;
    margin: 0 -10px
}
#bla > div {
    /* the CSS from your question here */
}

答案 2 :(得分:8)

@milo;不是您的顶部边框,而是您在代码中提供的shadow

要移除顶部光晕,您必须定义阴影的垂直间距。

在你的影子css中写下这个:

box-shadow:0 3px 6px 0 rgba(200, 200, 200, 0.7) ;
-moz-box-shadow:0 3px 6px 0 rgba(200, 200, 200, 0.7) ;
-webkit-box-shadow:0 3px 6px 0 rgba(200, 200, 200, 0.7) ;
-khtml-box-shadow:0 3px 6px 0 rgba(200, 200, 200, 0.7) ;

&安培;你可以从这里生成http://css3generator.com/

注意:阴影有四个属性horizontal, vertical, blur & spread 对于内部阴影,您可以为其定义inset

答案 3 :(得分:1)

您可以尝试以下操作。我的方法仅使用CSS

示例链接: http://jsfiddle.net/kL8tR/56/

div{
    margin-top: 25px;
    color: #fff;
    height: 45px;

    padding: 26px 24px 46px;

    border-left: 1px solid #e5e5e5;
    border-right: 1px solid #e5e5e5;
    border-bottom: 1px solid #e5e5e5;
    border-top: none;

    -moz-box-shadow: 0 0 10px 1px black,  0px -20px black, 0px 1px 10px rgba(255,255,255,0.7);
    -webkit-box-shadow: 0 0 10px 1px black,  0px -20px black, 0px 1px 10px rgba(255,255,255,0.7);
    box-shadow: 0 0 10px 1px black,  0px -20px black, 0px 1px 10px rgba(255,255,255,0.7);

}

基本上我在做什么,我正在创建多层阴影,所以第一个阴影覆盖第二层,掩盖了顶部。

我以前用过这个,这是我的参考:

查看部分 - 分层多个阴影[http://www.css3.info/preview/box-shadow/]

答案 4 :(得分:1)

你可以将阴影向下移动(垂直位移)并减少阴影半径,沿着某些线条(用星号替换星号, 覆盖顶部阴影所需的像素数量)盒子本身):

box-shadow: 0 *px 10px 0 rgba(200,200,200,0.7);

答案 5 :(得分:0)

如果您使用负传播半径并校准其他参数以适合您的期望,则应能达到预期效果。

CSS Box Shadow Negative Radius Spread

div {
  height: 100px;
  width: 100px;
  border: solid 1px black;
  -webkit-box-shadow: 5px 5px 10px -6px black;
  -moz-box-shadow: 5px 5px 10px -6px black;
  box-shadow: 5px 5px 10px -6px black;
}
<div></div>