当前位置: 首页 > 面试题库 >

如何仅在元素的一侧创建阴影?

巫健柏
2023-03-14
问题内容

有没有办法只在底部放阴影?我有一个菜单,彼此相邻有2张图像。我不想要正确的阴影,因为它会重叠正确的图像。我不喜欢为此使用图像,因此有一种方法可以将其仅放置在底部,例如:

box-shadow-bottom: 10px #FFF; 或类似的?

-moz-box-shadow: 0px 3px 3px #000;
-webkit-box-shadow: 0px 3px 3px #000;
box-shadow-bottom: 5px #000;
/* For IE 8 */
-ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=180, Color='#000000')";
/* For IE 5.5 - 7 */
filter: progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=180, Color='#000000');

问题答案:

更新4

与更新3相同,但具有现代的CSS(=较少的规则),因此不需要在伪元素上进行特殊定位。

#box {

    background-color: #3D6AA2;

    width: 160px;

    height: 90px;

    position: absolute;

    top: calc(10% - 10px);

    left: calc(50% - 80px);

}



.box-shadow:after {

    content:"";

    position:absolute;

    width:100%;

    bottom:1px;

    z-index:-1;

    transform:scale(.9);

    box-shadow: 0px 0px 8px 2px #000000;

}


<div id="box" class="box-shadow"></div>

更新3

我以前所有的答案都一直在使用额外的标记来创建此效果,而这并不是必需的。我认为这是一种
清洁的解决方案…唯一的窍门是使用值来获得阴影的正确位置以及阴影的正确强度/不透明度。

HTML

<div id="box" class="box-shadow"></div>

CSS

#box {
    background-color: #3D6AA2;
    width: 160px;
    height: 90px;
    margin-top: -45px;
    margin-left: -80px;
    position: absolute;
    top: 50%;
    left: 50%;
}

.box-shadow:after {
    content: "";
    width: 150px;
    height: 1px;
    margin-top: 88px;
    margin-left: -75px;
    display: block;
    position: absolute;
    left: 50%;
    z-index: -1;
    -webkit-box-shadow: 0px 0px 8px 2px #000000;
       -moz-box-shadow: 0px 0px 8px 2px #000000;
            box-shadow: 0px 0px 8px 2px #000000;
}

更新2

显然,您可以使用框阴影CSS的一个额外参数来完成此操作,正如其他所有人所指出的那样。这是演示:

CSS

-webkit-box-shadow: 0 4px 4px -2px #000000;
   -moz-box-shadow: 0 4px 4px -2px #000000;
        box-shadow: 0 4px 4px -2px #000000;

这将是一个更好的解决方案。添加的额外参数描述为:

第四长度是展开距离。正值会使阴影形状沿所有方向扩展指定的半径。负值会使阴影形状收缩。

更新

我所做的是创建一个“阴影元素”,该阴影元素将隐藏在您想要具有阴影的实际元素后面。我使“阴影元素”的宽度比实际元素的宽度小2倍于您指定的阴影。然后我将其正确对齐。

HTML

<div id="wrapper">
    <div id="element"></div>
    <div id="shadow"></div>
</div>

CSS

#wrapper {
    width: 84px;
    position: relative;
}
#element {
    background-color: #3D668F;
    height: 54px;
    width: 100%;
    position: relative;
    z-index: 10;
}
#shadow {
    background-color: #3D668F;
    height: 8px;
    width: 80px;
    margin-left: -40px;
    position: absolute;
    bottom: 0px;
    left: 50%;
    z-index: 5;
    -webkit-box-shadow: 0px 2px 4px #000000;
       -moz-box-shadow: 0px 2px 4px #000000;
            box-shadow: 0px 2px 4px #000000;
}

原始答案

是的,您可以使用提供的相同语法来执行此操作。第一个值控制水平位置,第二个值控制垂直位置。因此,只需将第一个值设置为第二个值,0px然后将第二个设置为您想要的任何偏移量,如下所示:

-webkit-box-shadow: 0px 5px #000000;
   -moz-box-shadow: 0px 5px #000000;
        box-shadow: 0px 5px #000000;

我希望这有帮助。



 类似资料:
  • 问题内容: 我需要在某个元素上创建一个盒子阴影,但仅在其右侧(例如)。我做的方式是包装内部元件到外层一个和这样的阴影其他三面是不可见的。 有没有更好的方法来实现这一目标?喜欢吗? 编辑 :我的意图是 仅 创建阴影的垂直部分。与规则的作用完全相同。 问题答案: 是的,您可以使用box-shadow规则的shadow spread属性: 第四个属性是阴影散布,您可以使用它来改变阴影的散布,使阴影看起来

  • 问题内容: 任何方法都可以在左右两侧(水平?)获得箱形阴影,而没有任何骇客或图像。我在用: 但它给周围的阴影。 我周围没有边界。 问题答案: 注意: 我建议您在下面查看@Hamish的答案;它不涉及此处描述的解决方案中不完善的“掩盖”。 您可以使用多个框阴影来接近;每一面一个 编辑 在顶部和底部的顶部再添加2个阴影,以遮盖流血的阴影。

  • 问题内容: 在下面的示例中,我希望所有元素都是元组,为什么当元组仅包含单个字符串时,它会转换为字符串? 问题答案: 因为前两个元素不是元组;他们只是字符串。括号不会自动使它们成为元组。你必须在字符串后添加一个逗号,以指示python它应该是一个元组。 要修复示例代码,请在此处添加逗号: 从Python文档: 一个特殊的问题是包含0或1项的元组的构造:语法具有一些额外的怪癖来容纳这些项。空元组由一对

  • 问题内容: 以任何方式在左侧和右侧(水平?)上获得盒子阴影,而没有骇客或图像。我在用: 但它给周围的阴影。 我周围没有边界。 问题答案: 注意: 我建议在下面查看@Hamish的答案;它不涉及此处所述解决方案中不完善的“掩盖”。 您可以使用多个框阴影来接近;每一侧一个 编辑 在顶部和底部的顶部再添加2个阴影,以掩盖流血的阴影。

  • 问题内容: 如果我有一个字符串,并且想要创建一个最初 仅 包含该字符串的集合,那么是否有比以下方法更Python化的方法? 以下是给我的一组字母: 问题答案: 在2.7和3.x中,可以使用:

  • 问题内容: 我有一个带标签的导航栏,我希望在打开的标签上有一个阴影,以使其与其他标签区分开。我还希望整个选项卡部分上有一个阴影(请参阅底部的水平线),以阴影除打开的所有选项卡的底部。 我将使用CSS3的属性来执行此操作,但是我无法找出仅对所需部分进行着色的方法。 通常,我会用内容区域(较高)遮盖打开的选项卡的底部阴影,但是在这种情况下,内容区域本身会带有阴影,以便最终覆盖该选项卡。 标签布局 阴影