有一个直接的CSS方法,使一个元素的边界半透明的东西像这样?

border-opacity: 0.7;

如果没有,有没有人知道我如何在不使用图像的情况下做到这一点?


当前回答

在某些情况下,另一种可行的解决方案是:将边框样式改为虚线样式。

在前景色和背景色之间有交替的像素组与连续的部分透明像素线是不同的。另一方面,这大大减少了对CSS的要求,而且在不需要任何特定于浏览器的指令的情况下,它在每个浏览器之间都更加兼容。

其他回答

正如其他人所提到的,CSS3支持rgba(…)语法来指定带有不透明度(alpha)值的边框颜色。

这里有一个快速的JSFiddle演示,如果你想检查它。

它适用于Safari和Chrome(可能适用于所有webkit浏览器)。 它可以在Firefox中运行 我怀疑它在IE中是否能正常工作,但我怀疑有一些过滤器或行为可以使它工作。

还有CSS RGBA边框/背景alpha double,这表明了一些其他问题——即,边框呈现在您指定的任何背景颜色(或背景图像)之上;因此在许多情况下限制了边界alpha的有用性。

你也可以考虑其他的边框样式(虚线,虚线)来让边框部分完全透明:

http://jsfiddle.net/c1rvp3ga

身体{ 背景:url (http://i.imgur.com/pr86mh.jpg); } # foo { 边框:5px虚线#b00; 背景:# ddd; background-clip: padding-box; 填充:8 px; 宽度:100 px; 保证金:30 px; } <p id=foo>一些内容</p>

在某些情况下,另一种可行的解决方案是:将边框样式改为虚线样式。

在前景色和背景色之间有交替的像素组与连续的部分透明像素线是不同的。另一方面,这大大减少了对CSS的要求,而且在不需要任何特定于浏览器的指令的情况下,它在每个浏览器之间都更加兼容。

*据我所知,没有什么我通常在这种情况下是创建一个块下面与更大的大小((bordersize*2)+originalsize),并使其透明使用

filter:alpha(opacity=50);
-moz-opacity:0.5;
-khtml-opacity: 0.5;
opacity: 0.5;

这里有一个例子

#main{
    width:400px;
    overflow:hidden;
    position:relative;
}
.border{
    width:100%;
    position:absolute;
    height:100%;
    background-color:#F00;
    filter:alpha(opacity=50);
    -moz-opacity:0.5;
    -khtml-opacity: 0.5;
    opacity: 0.5;
}
.content{
    margin:15px;/*size of border*/
    background-color:black;
}
<div id="main">
    <div class="border">
    </div>
    <div class="content">
        testing
    </div>
</div>

更新:

这个答案已经过时了,毕竟这个问题已经有8年的历史了。今天所有最新的浏览器都支持rgba,框影等等。但这是8年前的一个很好的例子。

如果你用W3C验证器检查你的CSS代码,你会看到你的CSS代码是否可以接受,即使它在主要的浏览器中工作。

通过CSS创建透明边框,如上所述,

border: 1px solid rgba(255, 0, 0, .5);

W3C标准不接受,甚至CSS3也不接受。我使用以下CSS代码的直接输入验证器,

.test { border: 1px solid rgba(255, 0, 0, .5); }

结果是,

值错误:border值太多或值不被识别: 1px固态rgba(255,0,0,0.5)

不幸的是,alpha值(rgb末尾的字母“a”)目前还不被W3C接受为边界颜色值的一部分。我想知道为什么它没有标准化,因为它可以在所有浏览器中工作。唯一的问题是您是要坚持W3C标准,还是要撇开它,在CSS中创建一些东西。

使用W3C在线CSS验证器/直接输入。

使用验证器检查你的工作总是一个好主意,当你在数小时的编码工作后斗鸡眼时,它真的有助于发现代码中小的甚至大的错误。