如何使用CSS制作半透明边框?

时间:2016-07-29 17:21:43

标签: html css border transparency padding

我有一个弹出窗口,我想给它一个透明的边框。我设置了这些属性:

li.sub-nav ul.megamenu {
    position: absolute;
    left: 0;
    margin-top: 10px;
    z-index: 100;
    padding-top: 3px;
    -moz-background-clip: border; /* Firefox 3.6 */
    -webkit-background-clip: border; /* Safari 4? Chrome 6? */
    background-clip: border-box;
}

.nav-top-container .megamenu {
    background: #005525;
    background: rgba(0, 85, 37, .98);
    border-top: 1px solid #227b33;
    border-bottom: #005525;
    border-bottom:8px solid rgba(0, 85, 37, .98);
}

我根据this article添加了background-clip属性,我也尝试将其设置为contentpadding,但它无效。

2 个答案:

答案 0 :(得分:2)

padding上使用background-clip,因为它是距边框最近的盒子模型。默认值为border,这会导致背景位于透明边框后面。



body {
  background: yellow;
}
div {
  padding: 30px;
  background-color: white;
  border: 15px solid rgba(255,0,0,0.5);

  -moz-background-clip: padding;
  -webkit-background-clip: padding;
  background-clip: padding-box;
  
}

<div></div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

正如我在对@LGSon的评论中指出的那样,你感到沮丧的问题是元素的background延伸到边界区域。一个简单的解决方法是将该背景应用于嵌套元素,如下例所示:

https://jsfiddle.net/yqx7abd8/

body {
  background: url(http://lorempixel.com/800/800/city/1) center / cover;
}

.border {
  margin: 30px;
  border: 15px solid rgba(255,0,0,0.3);
}

.content {
  background: #fff;
  padding: 30px;
}
<div class="border">
  <div class="content">
    <p>
    My Content
    </p>
  </div>
</div>