兼容IE、Firefox的背景半透明内容不透明设置

  首先要说明的是背景是内容的祖先元素。如果是兄弟节点那就没有必要记录这篇文章了。

  记录一下,知其然也知其所以然。

IE8-特点:

  1.不支持"opcity:0.5;"这种写法,只支持"filter:alpha(opacity=50)"。

  2.如果背景元素拥有css属性设置了z-index的值(除默认值auto外),则内容会随着背景元素一起半透明

  3.如果背景元素的内容元素本身或其祖先节点(这些祖先节点是背景元素的后代节点)没有设置css定位属性position:relative/absolute/fixed。则内容也会随着背景元素一起半透明。

  4.支持"background:rgb(0,0,0)"设置背景颜色,但是不支持“background:rgba(0,0,0,0.5)”这种设置背景颜色的同事设置半透明的方式。

  

IE9+、chrome、Firefox特点:

  1.支持"opacity:0.5",但是内容会随背景一起半透明

  1.支持“background:rgba(0,0,0,0.5)”这种设置背景颜色的同事设置背景半透明但内容不透明的方式。

  2.如果同事使用opacity=0.5和rgba不透明度为0.5,那么效果是在元素为opacity所设置的不透明度的情况下背景再次按rgba的方式半透明。最终背景的半透明度为opacity*rgba=0.5*0.5=0.25。

  IE9+还有一个特点就是同时支持opcity:0.5和"filter:alpha(opacity=50)"这种方式。所以rgba和filter一起用会出现第三项的情况。

  所以综合上述的浏览器特点,兼容所有浏览器的方案是背景元素设置样式为

    /*不能设置z-index,根据情况设置需要的background的颜色,chrome/firefox中第一句起作用;IE中后两句起作用*/
    .background{
        background: rgba(0,0,0,0.5);/*firefox、chrome*/
        background: #000\9;/*IE*/
        filter: alpha(opacity=50);/*IE*/
    }

  代码解读为在Firefox、chrome下后两句不会被识别,所以使用rgba做背景半透明内容不透明;IE下第二句的background会覆盖第一句话,所以最终结果是后两句起到作用。

  

  内容元素的样式为

/*可以设置元素或其祖先节点为定位样式relative/absolute/fixed*/
.content{
    position:relative;
}

  完整实例

<!DOCTYPE html>
<html lang="ch-cn">
  <head>
  <meta charset="utf-8">
    <style type="text/css">
    html,body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, button, textarea, p, blockquote, th, td{
      margin: 0;
      padding:0;
    }
    *{
      -webkit-box-sizing: border-box;
      -moz-box-sizing: border-box;
      box-sizing: border-box;
    }
    /*不能设置z-index,根据情况设置需要的background的颜色,chrome/firefox中第一句起作用;IE中后两句起作用*/
    .background{
        background: rgba(0,0,0,0.5);/*firefox、chrome*/
        background: #000\9;/*IE*/
        filter: alpha(opacity=50);/*IE*/
    }
    /*可以设置元素或其祖先节点为定位样式relative/absolute/fixed*/
    .content{
        position:relative;
    }
    </style>
  </head>
  <body>
    <div style="width:50px;height:50px;border:1px solid;background: red;"></div>
    <div class="background" style="width: 200px;height: 200px;">
        <div class="content" style="width: 50px;height:50px;background: red;"></div>
    </div>
</html>

  效果图如下

  

时间: 2024-12-23 00:38:34

兼容IE、Firefox的背景半透明内容不透明设置的相关文章

div css背景颜色半透明 文字不透明兼容ie、火狐等浏览器

针对透明背景,包括背景图片和背景色(兼容IE,FF,OP等浏览器) 一.背景完全透明 .bg{background:transparent } 二.背景半透明 这里要分两个div,一个单独设置背景透明度,另外一个放内容 margin-top:-33px;使用这个方法让文字叠加在透明背景图上. css: .bg{ width: 1000px; height:33px; background-color:#fffff; background-image:url(img.jpg);filter:alp

div背景透明内容不透明与0.5PX边框兼容设置

1.问题:设置 border-width:0.5px;  并兼容安卓和苹果移动端.  兼容:苹果IOS的 safari 支持浮点数边框,安卓浏览器不支持,会四舍五入到1px.不同浏览器效果额不同  解决方案:设置2层嵌套的div,最外层的用来定位,保障我们设置的内容不会脱离原先的文档流.   里层设置两个div,一个用来书写内容,一个用来专门设置边框 HTML代码 : <!-- position_box用来定位,控制该区域在原文档流中的位置 --> <div class="po

IE下的背景半透明处理(滤镜)

现在做的网站首页,导航条等使用了半透明效果,调试的时候鄙人使用了Chrome浏览器,之前有考虑过IE的兼容性问题,但打算,网页完全布局完成后一次性解决.因为只要求兼容到IE8,所以感觉并没有什么太大的问题. 但是当进入调试阶段的时候,我彻底“崩溃了”IE简直就是反人类的代名词,但问题仍然需要解决. 首先,正常情况下,在高版本的浏览器下,对一个盒子的背景使用半透明效果,我们只这样做的: body { background: url(../images/background.jpg) no-repe

css27】背景半透明rgba LESS实践

今天有看到司徒正美<背景半透明rgba最佳实践>的文章和里面推荐的一个在线工具CSS背景颜色属性值转换  . 于是联系到自己的less库,新技能Get. 内容如下: 1 /*在你的less库中加入以下代码*/ 2 //rgba创建兼容IE的rgba 3 #rgba(@r,@g,@b,@a){ 4 @c: rgba(@r,@g,@b,@a); 5 @c2 :argb(@c); 6 /* for IE9 IE8 IE7 not sure about IE6*/ 7 filter:~"pr

css设置背景半透明,文字不半透明

现在很多网站都喜欢用半透明的效果显示内容,让人看起来很舒服,不像实色背景看起来那么厚重,但是我们写效果的时候都是希望半透明只作用在背景上,所以经过试验,总结了几种让背景半透明,而文字不半透明的效果,欢迎指点和补充~~ 方法一: 以前经常用的,半透明层和文字层分离,用一个单独的标签来显示半透明层,这样文字层和半透明层互不影响,但是不好的就是增加了标签 <style type="text/css"> .opacity01 div, .opacity01 span{ width:

4.CSS实现背景半透明效果

写在前面的话: ~ 原文链接:CSS实现背景半透明效果 HTML <div class="alpha1"> <div class="ap2"> <p>背景为红色(#FF0000),透明度20%.</p> </div> </div> CSS .alpha1{ width:300px; height:200px; background-color:#FF0000; filter: Alpha(Opa

轻松实现部分背景半透明的呈现效果

实现一个简单的呈现/解散动画效果,当呈现时,呈现的主要内容和背景要明显区分,背景呈现一个半透明遮罩效果,透过背景可以看到下层 View Controller 的内容: 呈现控制器(Presenting View Controller) 呈现控制器即要弹出另外一个控制器的 View Controller.本例中即 ViewController 类.当呈现时,使用如下代码: // 1 UIStoryboard* sb=[UIStoryboard storyboardWithName:@"Main&q

背景半透明rgba最佳实践

by 一丝 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>背景半透明rgba最佳实践</title> <style> </style> </head> <body> <div class="main"> <div class="demo demo1

DIV背景半透明文字不半透明的样式

IV背景半透明,DIV中的字不半透明 代码如下: <body bgcolor="#336699"> <div style="filter:alpha(opacity=50);background:#ffffff;width:600;"><span style="color:yellow"> 图层背景半透明,字体颜色也半透明 代码如下: </span></div> <div styl