【问题标题】:How to make shadow on border-bottom?如何在边框底部制作阴影?
【发布时间】:2010-10-19 19:18:09
【问题描述】:

我需要通过 CSS3 在border-bottom 上应用边框阴影。我只想在底部应用 CSS3 阴影。这可能吗?

【问题讨论】:

标签: css


【解决方案1】:

使用没有水平偏移的box-shadow

http://www.css3.info/preview/box-shadow/

例如。

div {
  -webkit-box-shadow: 0 10px 5px #888888;
  -moz-box-shadow: 0 10px 5px #888888;
  box-shadow: 0 10px 5px #888888;
}
<div>wefwefwef</div>

模糊半径较大(上例中为 5px)的侧面会有轻微阴影

【讨论】:

    【解决方案2】:

    问题是阴影从包含 div 的一侧出来。为了避免这种情况,模糊值必须等于散布值的绝对值。

    div {
      -webkit-box-shadow: 0 4px 6px -6px #222;
      -moz-box-shadow: 0 4px 6px -6px #222;
      box-shadow: 0 4px 6px -6px #222;
    }
    <div>wefwefwef</div>

    深度报道here

    【讨论】:

      【解决方案3】:

      试试:

      div{
      -webkit-box-shadow:0px 1px 1px #de1dde;
       -moz-box-shadow:0px 1px 1px #de1dde;
       box-shadow:0px 1px 1px #de1dde;
        }
      <div>wefwefwef</div>

      一般会在距离框底1px的地方添加一个1px的模糊阴影

      box-shadow: [horizontal offset] [vertical offset] [blur radius] [color];
      

      【讨论】:

      • 很好。但我只有底部边框,我想遮蔽它。当我使用上面的代码时,左右阴影也会出现。
      • 所有这些 asnwers 都不相关 - 因为它总是会产生其他不需要的阴影 :)
      • 你看不出没有底影吗?除了顶部之外,元素周围到处都有阴影
      • 被否决,因为它会在整个元素周围产生阴影。考虑Bill Bruilding的答案。
      【解决方案4】:

      我参加聚会有点晚了,但实际上可以使用 box-shadow 模拟边界

      .border {
        background-color: #ededed;
        padding: 10px;
        margin-bottom: 5px;
      }
      
      .border-top {
        box-shadow: inset 0 3px 0 0 cornflowerblue;
      }
      
      .border-right {
        box-shadow: inset -3px 0 0 cornflowerblue;
      }
      
      .border-bottom {
        box-shadow: inset 0 -3px 0 0 cornflowerblue;
      }
      
      .border-left {
        box-shadow: inset 3px 0 0 cornflowerblue;
      }
      <div class="border border-top">border-top</div>
      <div class="border border-right">border-right</div>
      <div class="border border-bottom">border-bottom</div>
      <div class="border border-left">border-left</div>

      编辑:我对这个问题的理解是错误的,但我会留下答案,因为更多的人可能会误解这个问题并为我提供的答案而来。

      【讨论】:

      • 这正是我一直在寻找的,非常感谢。
      【解决方案5】:

      老问题的新方法

      似乎在答案中提供的问题始终是框边框如何在对象的左侧和右侧可见,或者您必须将其插入到它不会遮挡整个长度容器正确。

      此示例使用 :after 伪元素以及具有透明度的线性渐变,以便在容器上放置阴影,该容器恰好延伸到您希望阴影的元素的两侧。

      值得注意这个解决方案是,如果您在想要投影的元素上使用填充,它将无法正确显示。这是因为after 伪元素将其内容直接附加在元素内部内容之后。因此,如果您有填充,阴影将出现在框内。这可以通过消除外部容器(应用阴影的地方)上的填充并使用内部容器来应用所需的填充来克服。

      阴影 div 上的填充和背景颜色示例:

      如果要改变阴影的深度,只需在after 伪元素中增加height 样式即可。您还可以在线性渐变样式中明显变暗、变亮或更改颜色。

      body {
        background: #eee;
      }
      
      .bottom-shadow {
        width: 80%;
        margin: 0 auto;
      }
      
      .bottom-shadow:after {
        content: "";
        display: block;
        height: 8px;
        background: transparent;
        background: -moz-linear-gradient(top, rgba(0,0,0,0.4) 0%, rgba(0,0,0,0) 100%); /* FF3.6-15 */
        background: -webkit-linear-gradient(top, rgba(0,0,0,0.4) 0%,rgba(0,0,0,0) 100%); /* Chrome10-25,Safari5.1-6 */
        background: linear-gradient(to bottom, rgba(0,0,0,0.4) 0%,rgba(0,0,0,0) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
        filter: progid:DXImageTransform.Microsoft.gradient(   startColorstr='#a6000000', endColorstr='#00000000',GradientType=0 ); /* IE6-9 */
      }
      
      .bottom-shadow div {
        padding: 18px;
        background: #fff;
      }
      <div class="bottom-shadow">
        <div>
          Shadows, FTW!
        </div>
      </div>

      【讨论】:

        【解决方案6】:

        有趣的是,在大多数答案中,您创建一个带有文本(或对象)的框,而不是创建文本(或对象)div,并在其下创建一个 100% 宽度的框(或至少应有的宽度)并且高度与您的“边框”像素相等......所以,我认为这是最简单和完美的答案:

        &lt;h3&gt;Your Text&lt;/h3&gt;&lt;div class="border-shadow"&gt;&lt;/div&gt;

        和css:

            .shadow {
                width:100%;
                height:1px; // = "border height (without the shadow)!"
                background:#000; // = "border color!"
                -webkit-box-shadow: 0px 1px 8px 1px rgba(0,0,0,1); // rbg = "border shadow color!"
                -moz-box-shadow: 0px 1px 8px 1px rgba(0,0,0,1); // rbg = "border shadow color!"
                box-shadow: 0px 1px 8px 1px rgba(0,0,0,1); // rbg = "border shadow color!"
        

        }

        在这里您可以轻松地试验半径等:https://www.cssmatic.com/box-shadow

        【讨论】:

          【解决方案7】:

          在css下:

          box-shadow: 5px 5px 10px rgba(0,0,0, 0.3); 
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-10-23
            • 2020-03-22
            • 1970-01-01
            • 1970-01-01
            • 2014-02-18
            • 2011-06-01
            • 2015-01-20
            • 2015-10-17
            相关资源
            最近更新 更多