如何实现背景透明,文字不透明,兼容所有浏览器?

IE专属滤镜 filter:Alpha(opacity=x)

使用说明:IE浏览器专属,问题多多,本文以设置背景透明为例子,如下:

  1. 仅支持IE6、7、8、9,在IE10版本被废除
  2. 在IE6、7中,需要激活IE的haslayout属性(如:*zoom:1或者*overflow:hidden),让它读懂filter:Alpha
  3. 在IE6、7、8中,设置了filter:Alpha的元素,父元素设置position:static(默认属性),其子元素为相对定位,可让子元素不透明

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>opacity</title>
<style>
*{
    padding: 0;
    margin: 0;
}
body{
    padding: 50px;
    background: url(img/bg.png) 0 0 repeat;
}
.demo{
  padding: 25px;
  background: #000000;
  filter:Alpha(opacity=50);/* 只支持IE6、7、8、9 */
  position:static; /* IE6、7、8只能设置position:static(默认属性) ,否则会导致子元素继承Alpha值 */
  *zoom:1; /* 激活IE6、7的haslayout属性,让它读懂Alpha */
}
.demo p{
    color: #FFFFFF;
    position: relative;/* 设置子元素为相对定位,可让子元素不继承Alpha值,保证字体颜色不透明 */
}      

</style>
</head>
<body>    

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

全兼容的方案

上以上3点分析可知,设置透明背景文字不透明,可采用的属性有rgba和IE的专属滤镜filter:Alpha,其兼容性如下图所示:

针对IE6、7、8浏览器,我们可以采用fiter:Alpha,针对标准浏览器我们采用rgba,那么问题来了,IE9浏览器2个属性都支持,一起使用会重复降低不透明度...

那么,如何只对IE6、7、8使用fiter:Alpha如何实现呢?2年前写过《CSS hack整理》一文,最新我也做了点更新,里面有IE的相关hack,找到只支持IE 6、7、8的方案,如下:

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

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

ok,所有问题都解决了,全部代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>背景透明,文字不透明</title>
<style>
*{
    padding: 0;
    margin: 0;
}

body{
  padding: 50px;
  background: url(img/bg.png) 0 0 repeat;
}

.demo{
  padding: 25px;
  background-color: rgba(0,0,0,0.5);/* IE9、标准浏览器、IE6和部分IE7内核的浏览器(如QQ浏览器)会读懂 */
}
.demo p{
  color: #FFFFFF;
}
@media \0screen\,screen\9 {/* 只支持IE6、7、8 */
  .demo{
    background-color:#000000;
    filter:Alpha(opacity=50);
    position:static; /* IE6、7、8只能设置position:static(默认属性) ,否则会导致子元素继承Alpha值 */
    *zoom:1; /* 激活IE6、7的haslayout属性,让它读懂Alpha */
  }
  .demo p{
    position: relative;/* 设置子元素为相对定位,可让子元素不继承Alpha值 */
  }
}

</style>
</head>
<body>    

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

</html>

时间: 2024-10-25 18:38:30

如何实现背景透明,文字不透明,兼容所有浏览器?的相关文章

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);这样就会平铺过去,可以很快实现背景透明文字不透明,

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 透明 文字不透明

用两个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>

背景透明文字不透明的最佳方法兼容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转换

背景透明但文字不透明的实现方法(兼容所有浏览器)

实现透明的css方法 通常有以下3种方式,以下是不透明度都为80%的写法 1.css3的 opacity:x,x 的取值从 0 到 1,如opacity: 0.8 设置opacity元素的所有后代元素会随着一起具有透明性,一般用于调整图片或者模块的整体不透明度. 2.css3的 rgba(red, green, blue, alpha),alpha的取值从 0 到 1,如rgba(255,255,255,0.8) 设置颜色的不透明度,一般用于调整background-color.color.bo

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

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

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

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