【发布时间】:2012-06-26 09:36:45
【问题描述】:
我想通过不透明度使列表菜单的背景消失,而不影响字体。 CSS3可以吗?
【问题讨论】:
-
是的,当然!你可以通过这个技巧做到这一点:stackoverflow.com/a/15351192/366884Good lucky
我想通过不透明度使列表菜单的背景消失,而不影响字体。 CSS3可以吗?
【问题讨论】:
现在您可以像这样在 CSS 属性中使用 rgba:
.class {
background: rgba(0,0,0,0.5);
}
0.5 是透明度,根据您的设计更改值。
【讨论】:
rgba('black', 0.5)?
记住这三个选项(你想要#3):
1) 整个元素是透明的:
visibility: hidden;
2) 整个元素有点透明:
opacity: 0.0 - 1.0;
3) 只是元素的背景是透明的:
background-color: transparent;
【讨论】:
是的,这是可能的。只需使用 rgba-syntax 作为背景颜色。
.menue {
background-color: rgba(255, 0, 0, 0.5); //semi-transparent red
}
【讨论】:
要实现它,你必须修改元素的background-color。
创建(半)透明颜色的方法:
CSS 颜色名称 transparent 创建一个完全透明的颜色。
用法:
.transparent{
background-color: transparent;
}
使用 rgba 或 hsla 颜色函数,允许您将 Alpha 通道(不透明度)添加到 rgb 和 hsl 函数。它们的 alpha 值范围为 0 - 1。
用法:
.semi-transparent-yellow{
background-color: rgba(255, 255, 0, 0.5);
}
.transparent{
background-color: hsla(0, 0%, 0%, 0);
}
As of the CSS Color Module Level 4, rgb and hsl works the same way as rgba and hsla does,接受可选的 alpha 值。所以现在你可以这样做了:
.semi-transparent-yellow{
background-color: rgb(255, 255, 0, 0.5);
}
.transparent{
background-color: hsl(0, 0%, 0%, 0);
}
对标准(颜色模块级别 4)的相同更新也带来了对空格分隔值的支持:
.semi-transparent-yellow{
background-color: rgba(255 255 0 / 0.5);
}
.transparent{
background-color: hsla(0 0% 0% / 0);
}
我不确定为什么这两个会比旧语法更好,所以考虑使用a-suffixed、逗号分隔的变体以获得更大的支持。
除了已经提到的解决方案之外,您还可以使用带有 alpha 值的 HEX 格式 (#RRGGBBAA or #RGBA notation)。
它包含在同一个 CSS Color Module Level 4 中,因此它的支持比前两个解决方案更差,但它已经是 implemented in larger browsers(抱歉,没有 IE)。
这与其他解决方案不同,因为它也将 Alpha 通道(不透明度)视为十六进制值,使其范围为 0 - 255 (FF)。
用法:
.semi-transparent-yellow{
background-color: #FFFF0080;
}
.transparent{
background-color: #0000;
}
你也可以试试:
transparent:
div {
position: absolute;
top: 50px;
left: 100px;
height: 100px;
width: 200px;
text-align: center;
line-height: 100px;
border: 1px dashed grey;
background-color: transparent;
}
<img src="https://via.placeholder.com/200x100">
<div>
Using `transparent`
</div>
hsla():
div {
position: absolute;
top: 50px;
left: 100px;
height: 100px;
width: 200px;
text-align: center;
line-height: 100px;
border: 1px dashed grey;
background-color: hsla(250, 100%, 50%, 0.3);
}
<img src="https://via.placeholder.com/200x100">
<div>
Using `hsla()`
</div>
rgb():
div {
position: absolute;
top: 50px;
left: 100px;
height: 100px;
width: 200px;
text-align: center;
line-height: 100px;
border: 1px dashed grey;
background-color: rgb(0, 255, 0, 0.3);
}
<img src="https://via.placeholder.com/200x100">
<div>
Using `rgb()`
</div>
hsla() 使用空格分隔值:
div {
position: absolute;
top: 50px;
left: 100px;
height: 100px;
width: 200px;
text-align: center;
line-height: 100px;
border: 1px dashed grey;
background-color: hsla(70 100% 50% / 0.3);
}
<img src="https://via.placeholder.com/200x100">
<div>
Using `hsla()` with spaces
</div>
#RRGGBBAA:
div {
position: absolute;
top: 50px;
left: 100px;
height: 100px;
width: 200px;
text-align: center;
line-height: 100px;
border: 1px dashed grey;
background-color: #FF000060
}
<img src="https://via.placeholder.com/200x100">
<div>
Using `#RRGGBBAA`
</div>
【讨论】:
这是一个使用 CSS 命名颜色的示例类:
.semi-transparent {
background: yellow;
opacity: 0.25;
}
这会添加 25% 不透明(彩色)和 75% 透明的背景。
警告
不幸的是,不透明度会影响它所附加的整个元素。
因此,如果您在该元素中有文本,它也会将文本设置为 25% 的不透明度。 :-(
解决此问题的方法是使用rgba 或hsla 方法将透明度* 指示为所需背景“颜色”的一部分。这允许您指定背景透明度*,独立于元素中其他项目的透明度。
这里有 3 种方法可以在不影响其他元素的情况下将蓝色背景设置为 75% 的不透明度(25% 透明):
background: rgba(0%, 0%, 100%, 0.75)background: rgba(0, 0, 255, 0.75)background: hsla(240, 100%, 50%, 0.75)【讨论】:
在这种情况下background-color:rgba(0,0,0,0.5); 是最好的方法。
例如:background-color:rgba(0,0,0,opacity option);
【讨论】:
【讨论】:
innerHTML =(嘿,至少它比他们在 2012 年使用的警报和 document.write 更好,但仍然没有 DOM 操作,除了 jQuery 教程之外,除了一些教程,他们每章列出一个相关方法,即便如此,这只是选择——是的,他们确实列出了document.write)。他们的 XHR 教程使用 readyStateChange 而不是 onLoad(从 IE7 开始支持)。哦,他们在 JSON 中的函数的解决方法?将它们字符串化以便稍后进行评估
是的,你可以只是纯文本
.someDive{
background:transparent
}
【讨论】:
对于您的情况,我们可以使用rgba():
首先,我们操作背景颜色,并使用 rgba。
.selector {
background-color: rgba(0, 0, 0, 0.3);
}
现在它的作用是,它基本上为您的元素添加了不透明度,以及黑色背景颜色。这就是你运行它时的样子。
body {background-color: #0008f3;}
.container {
height: 100px;
width: 100px;
background-color: rgba(255,255,255,0.5);
}
<body>
<div class="container"></div>
</body>
【讨论】: