zoukankan      html  css  js  c++  java
  • IE8下实现兼容rgba

     前几天做一个项目的时候遇到一个问题,透明度的问题,今天空了给大家讲讲我的一些看法和怎样兼容透明度

    一:两种方式 (IE9+)

      1:rgba()   (只是背景透明)

      2:opcity  (里面的内容与背景都透明)

    二:解释区别

    在css3以前,我们的css中的颜色都是基于RGB的,都是纯色,但是CSS通过alpha颜色和opacity属性,为我们引入了不透明度和透明度这一全新的概念

      上面两个图的背景色和文字颜色都是一样的,不同的是我们设置透明的方式不一样,上面一个的背景色和文字都有透明度,下面的只有背景色是透明的。

       

     三:解释原因

      借由这个例子来解释opacity和alpha。两者控制透明度的都是一个小数,从0到1,0是完全透明,1是完全不透明

      不同之处在于,opacity属性的值,可以被其子元素继承。例如,我们将上面图中div里面的文字用p标签括起来,尽管,我们只给div设了不透明度,但是我们的p标签中的文字也是透明的。

      alpha其实是Alpha通道,这个通道的意义在于为之前的RGB颜色模型增加了一个新的值,成为了RGBA颜色模型。rgba颜色模型有四个值,最后一个是alpha通道的值,取值在0.0到1.0之间

     四:兼容IE8的透明

      background: rgba(0,0,0,.5);

      但是要兼容到IE8,就发现没有透明效果,因为IE8不支持rgba()函数。

      下面我们总结一下rgba()函数的含义。rgba的含义,r代表red,g代表green,b代表blue,a代表透明度。红绿蓝是三原色,所有颜色都可以由这三种颜色拼合而成。

      比如rgba(0,0,0,.5)就是透明度为0.5的黑色。现代浏览器是支持rgba的,但是在IE8等古董级浏览器中是不支持rgba的,IE8只能勉强支持rgb()函数(即去掉了透明度,只能表示颜色)。

    background: rgba(0,0,0,.5);  /*支持rgba的浏览器*/
    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#7f000000,endColorstr=#7f000000);    /*IE8支持*/

      第二句话的意思就是当上一行的透明度不起作用的时候执行。这句话的意思本来是用来做渐变的,但是这个地方不需要渐变。所以两个颜色都设置成了相同的颜色。

      六位。这个是六进制的颜色值。要跟rgb函数中的取值相同。比如rgb(0,0,0,)对应#000;都是黑色。

      到这里,rgba的用法就可以兼容IE8了。

      最近看到,不直接在样式里面添加filter,而是利用来为ie添加filter兼容。在过后又发现IE9同时支持RGBA和filter,导致两个重叠,透明效果变差,所以需要改为,

      具体做法如下:

    <!--[if lt IE 9]>
       <style type="text/css">
       .color-block {
           background:transparent;
           filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#7f000000,endColorstr=#7f000000);
           zoom: 1;
        }
        </style>
    <![endif]-->
  • 相关阅读:
    ACM实用C语言函数
    Java中的数组和方法
    eclipse常用快捷键
    【转载】第十章 五种对称加密算法总结
    【转载】ZooKeeper学习第二期--ZooKeeper安装配置
    【转载】Java垃圾回收机制
    【转载】JVM系列三:JVM参数设置、分析
    【转载】JVM系列二:GC策略&内存申请、对象衰老
    【转载】JVM系列一:JVM内存组成及分配
    java项目性能测试过程记录
  • 原文地址:https://www.cnblogs.com/andyhxl/p/6292975.html
Copyright © 2011-2022 走看看