css如何实现背景透明,文字不透明?

之前做了个半透明弹层,但设置背景半透明时,子元素包含的字体及其它元素也都变成了半透明。对opacity这个属性认识的不透彻,在这里做一些总结,方便以后使用。

背景透明,文字不透明的解决方法:

  1. 为元素添加一个绝对定位的子元素,设置大小和该元素一样,把半透明加在绝对定位元素上作为遮罩,z-index设置到最底部,达到背景半透明效果。
  2. 使用CSS3新属性rgba。

实现透明的方法:

  • css3的opacity,取值从 0 到 1,如opacity : 0.5,IE9及以上版本和标准浏览器都支持。IE8 以及更早的版本支持替代的 filter 属性,例如:filter : Alpha(opacity=50)。
  • css3的rgba(red, green, blue, alpha),alpha的取值从 0 到 1,如background-color : rgba(255,255,255,0.5)。

谷歌浏览器下测试各种属性,如下图。

<div style="width:150px;height:100px;float:left;background-color:#ff0000;"><div>没有设置透明度</div></div>
<div style="width:150px;height:100px;float:left;margin-left:10px;background-color:#ff0000;opacity:0.5;"><div>用opacity设置透明度</div></div>
<div style="width:150px;height:100px;float:left;margin-left:10px;background-color:rgba(255,0,0,0.5);"><div>用rgba设置透明度</div></div>
<div style="width:150px;height:100px;float:left;margin-left:10px;background-color:#ff0000;filter:Alpha(opacity=50);"><div>IE专属filter设置透明度</div></div>

                                                                             图1

css3的opacity:

 

由图1可以看出,使用opacity属性的第二个方块其子元素包含的文字也变成了半透明。

注释:设置opacity元素的所有后代元素会随着一起具有透明性,一般用于调整图片或者模块的整体不透明度,兼容IE9及以上版本和标准浏览器。

css3的rgba:

 

由图1可看出,设置rgba的方块可实现背景色透明,并且子元素包含的文字不透明。

注释:IE9+、Firefox 3+、Chrome、Safari 以及 Opera 10+都支持。

IE的filter : Alpha(opacity=x):

  • 仅支持IE6、7、8、9,在IE10版本被废除。

  • 在IE6、7中,需要激活IE的haslayout属性(如:*zoom:1或者*overflow:hidden),让它读懂filter:Alpha。
  • 在IE6、7、8中,设置了filter:Alpha的元素,父元素设置position : static(默认属性),其子元素为相对定位position : relative,可让子元素不透明。

     

全兼容:

 

  IE6 IE7 IE8 IE9 标准浏览器
rgba ? ? ? ? ?
filter : Alpha ? ? ? ? ?

只支持IE6、7、8浏览器的css hack:

/* 只支持IE6、7、8 */

@media \0screen\,screen\9 {...}

DEMO:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>背景透明,文字不透明</title>
<style>
*{
    padding: 0;
    margin: 0;
}
body{
    background-color: #ff7a74;
    padding: 100px;
}
.test-opacity{
    padding: 25px;
    background-color: rgba(255,255,255,0.5);/* IE9、标准浏览器、IE6和部分IE7内核的浏览器(如QQ浏览器)会读懂 */
}

/* 只支持IE6、7、8 */
@media \0screen\,screen\9 {
    .test-opacity{
        background-color: #fff;
        filter: Alpha(opacity=50);
        *zoom:1;/* 激活IE6、7的haslayout属性,让它读懂Alpha */
    }
    .test-opacity p{
        position: relative;/* 设置子元素为相对定位,可让子元素不继承Alpha值 */
    }
}
</style>
<body>

    <div class="test-opacity">
        <p>背景透明,文字不透明</div>
    </div>

</body>
</html>
时间: 2024-10-28 11:03:53

css如何实现背景透明,文字不透明?的相关文章

css背景透明文字不透明

测试背景透明度为0.3.文字不透明: background-color: #000; /* 一.CSS3的opacity */ opacity: 0.3; /* 兼容浏览器为:firefox,chrome,IE9+ 文字也跟着透明*/ /* 二.CSS3的rgba */ background: rgba(0, 0, 0, 0.3); /* 兼容浏览器为:firefox,chrome,IE9+ 其中IE8,IE7,IE6解析为背景全透明 文字不透明 */ /* 三.IE专属滤镜 */ filter

关于实现背景透明文字不透明的解决方案

最近在做项目的时候遇到实现背景透明文字不透明的解决方法要求的兼容性是ie8+ 1.大家豆知道background:rgba(),可以实现背景透明文字不透明但是ie8 不支持background:rgba(); 如果不考虑ie 8 我们可以直接rgba就解决了 2.如果考虑ie8 我的做法是,先说我的做法,再说别人的做法. 3.我的做法是按照设计稿切切一张1px*1px的png透明图片然后background:url(toumingdu.png);这样就会平铺过去,可以很快实现背景透明文字不透明,

css 透明 文字不透明

用两个DIV 作为容器实现 Firefox chrome IE6+ 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head>

div半透明背景,文字不透明

1 background: rgba(255, 255, 255, 0.8) !important; /* IE无效,FF有效 */ 2 3 background: #fff; 4 5 filter: alpha(opacity=60); 在需要不透明文字的元素样式上添加样式:position:relative; div半透明背景,文字不透明

css实现背景透明文字不透明

设置元素的透明度: -moz-opacity:0.8; /*在Firefox中设置元素透明度 filter: alpha(opacity=80); /*ie使用滤镜设置透明 但是当我们对一个标签设置背景的透明度时,往往我们并不希望该标签上的文字图片也变成半透明了. 例如: <div><p>不透明</p></div> div{-moz-opacity:0.3;filter:alpha(opacity=30);background:#000;width:500p

css3背景透明文字不透明

在 FF/Chrome 等较新的浏览器中可以使用css属性background-color的rgba轻松实现背景透明,而文字保持不透明.而IE6/7/8浏览器不支持rgba,只有使用IE的专属滤镜filter:Alpha来实现,但是这样写法会把文字也变为透明,因此只有在透明容器的子节点(文本节点除外)内设置position:relative才能不继承其父元素的透明滤镜,代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transition

背景透明文字不透明的最佳方法兼容IE(以背景黑色透明度0.5为例)

以背景黑色,透明度0.5举例为大家详细介绍下关于背景透明,文字不透明的最佳方法同时兼容IE,具体实现如下,感兴趣的朋友可以参考下哈希望对大家有所帮助 以背景黑色,透明度0.5举例 非IE:background:rgba(0,0,0,0.5); IE: filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#7f000000,endColorstr=#7f000000); PS:#7f000000 其中7f是透明度0.5转换

CSS3实现背景透明文字不透明

最近遇到一个需求,如下图,input框要有透明效果 首先想到的方法是CSS3的 opacity属性,但事实证明我想的太简单了 这个属性虽然让input框有透明效果,同时文字也会有透明效果,导致文字不清晰,如下图 于是我开始思考其它方式,最后想到了通过透明背景图来实现 背景图虽然能够解决问题,但会造成空div,并且还需要设置定位 感觉把简单的事情变得复杂了,我始终认为有更简单的方法 最后终于被我找到了完美解决的方法--用CSS3的 rgba 来设置 background-color: rgb(25

css 实现背景透明文字不透明

实现思路: 给button 元素设置了透明,将button里面的文字放到span标签,设置一个颜色,文字就不会透明 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>css3的rgba</title> <style> *{ padding: 0; margin: 0; } .btn{ width :120px; height: 40p

CSS实现Div透明,而显示在上面的文字不透明,但也可看到显示在下面的图片内容

CSS实现Div透明,而显示在上面的文字不透明,但也可看到显示在下面的图片内容,DiV透明其实挺简单,主要是为background定义opacity属性,一般这个是最大值是1,数值越接近1,则越不透明,也就是越小越透明,颜色可以自定义.这样可以让图片上的文字更清淅,在一些图片特效中我们会见到这种效果. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/