opacity兼容性以及存在问题处理  

  opacity兼容性

    opacity属性是CSS3的属性,用于设置元素的不透明级别。语法: opacity: value | inherit; ①值value表示规定不透明度,从0.0(完全透明)到1.0(完全不透明)。 ②值inherit表示应该从父元素继承opacity属性的值。

    注意: IE以及更早的版本支持替代的filter属性:例如 filter: Alpha(opacity = 50)。

    在铺"酷狗音乐"官网时,每个歌单和榜单的区域,当鼠标浮在区域上时,需要有灰色的遮罩层效果。

    鼠标没有浮在区域时:       鼠标浮在区域时: 

    鼠标浮在区域时,产生这遮罩层效果,并且有一个播放的图标。我当时使用的遮罩层代码:

 .mask {
background-color: rgb(0, 0, 0);
opacity: 0.4;
filter: alpha(opacity = 30);
*zoom:;
}

    亲测是可以兼容IE7-9的。但毕竟没有真正在上线的网站中使用过。所有我特意留意了这个问题。在后面有遇到类似的效果,就查看别人的代码是如何写的。下面是我从不同网站获取的关于透明度问题的兼容性代码:

/* 凡客网中遮罩层效果 */
.mask {
background: #000;
filter: alpha(opacity = 40);
opacity: 0.4;
-moz-opacity: 0.4;
}
/* 熊猫TV中遮罩层效果 */
.mask {
-ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40);
filter: alpha(opacity = 40);
opacity: .4;
}

    以上代码亲测都只是兼容IE7-9的。目前我还没有遇到可以兼容IE6的,有大神可以做到的,给我指点一二。

  存在问题

    其实说起来,这个应该不算问题,是这个属性本身的特点吧。但是在项目中如果遇到问题不知道怎么回事的话,就会感觉莫名其妙的。所以就顺便提提这个问题。

    我举的例子W3CSchool的CSS图像透明度中的实例3-透明框中的文本。

    我直接将实例3的代码复制黏贴,为了突出我要说明的内容,我将opacity = 60 改为 opacity = 20,将 filter: 60; 改为 filter: 20; 在网站打开是这样的:

           然后这三句注释掉:

/*background-color: #ffffff;*/
/* for IE */
/*filter:alpha(opacity=0.2);*/
/* CSS3 standard */
/*opacity:0.2*/

    添加这句: background-color: rgba(255, 255, 255, 0.2);  效果图:

    仔细看,我们发现后第二张图的文字是清晰的,而第一张图的文字也是模糊的,透明度很低。这个就是opacity属性的问题。因为CSS3中的opacity透明度属性具有继承性,opacity会把所有的元素都变透明,不仅仅是背景颜色,当某个对象设置了opacity透明度时,其子元素也会有透明度效果。 特别注意下:如果父元素定义了opacity,那么子元素在定义一个opacity,那么子元素的效果其实是两者的乘积…例如,父元素的opacity:0.5,子元素opacity:0.2,那么子元素实际的opacity=0.5x0.2=0.1这个大家可以自己尝试下就知道了。

    那么如何在项目中只需要背景是透明的,而不需要文字是透明的,那么要怎么做呢?

    方法一:  使用上面提到的rgba()方法,可以很直接的设置对象的透明度效果,不存在子元素也变透明的问题。但是IE7,8不支持此属性。

    方法二: 将透明层独立出来,父元素relative,子元素absolute,靠层叠样式分层。

 //  .background 只需加上 positon: relative;
// .transbox的改动如下
div.transbox {
width: 338px;
height: 204px;
background-color: #fff;
border: 1px solid black;
filter: alpha(opacity = 20);
opacity: 0.2;
position: absolute;
left: 50%;
top: 50%;
margin-left: -169px;
margin-top: -102px
}
// p元素变化如下
div.background > p {
position: absolute;
margin: 30px 40px;
}

    效果如图:

                  

    这种方式其实还是蛮重要的,后面我做的项目只要涉及到有遮罩层这类效果的,做法都是这么做的。我个人感觉这样做是挺好的,而且我看了各种网站关于遮罩层这效果的样式大概也都是这么写的。

opacity兼容性以及存在问题处理的更多相关文章

  1. javascript opacity兼容性随笔

    一.CSS兼容代码 .transparent { filter:alpha(opacity=50); /* IE */ -moz-opacity:0.5; /* FireFox old version ...

  2. opacity兼容性问题

    用来设定元素透明度的 Opacity 是CSS 3里的一个属性.当然现在还只有少部分浏览器支持. 不过各个浏览器都有自己的私有属性来支持,其中包括老版本的Mozilla和Safari: IE: fil ...

  3. 【原】CSS实现背景透明,文字不透明,兼容所有浏览器

    11.11是公司成立的日子,16岁啦,我呢3岁半,感谢公司给了这样一个平台,让我得以学习和成长,这里祝愿公司发展越来越好~ 进入主题,每年11月11号是光棍节,产生于校园,本来只是一流传于年轻人的娱乐 ...

  4. CSS实现背景透明,文字不透明,兼容所有浏览器

    11.11是公司成立的日子,16岁啦,我呢3岁半,感谢公司给了这样一个平台,让我得以学习和成长,这里祝愿公司发展越来越好~ 进入主题,每年11月11号是光棍节,产生于校园,本来只是一流传于年轻人的娱乐 ...

  5. CSS实现背景透明,文字不透明(兼容所有浏览器)

    我们平时所说的调整透明度,其实在样式中是调整不透明度,如下图所示例: 打开ps,在图层面板上,可以看到设置图层整理不透明度的菜单,从 0% (完全透明)到 100%(完全不透明). 实现透明的css方 ...

  6. javascript中一些常见的兼容性问题

    下面是一些Javascript的IE和Firefox(火狐)兼容性的常用例子 1. document.formName.item("itemName") 问题 说明:IE下,可以使 ...

  7. 兼容性背景颜色半透明CSS代码(不影响内部子元素)

    如何简单兼容性的实现父元素是半透明背景色,而子元素不受影响. 兼容所有浏览器的背景颜色半透明CSS代码: background-color: rgba(, , , .); filter: progid ...

  8. CSS 多浏览器兼容性问题及解决方案

    兼容性处理要点1.DOCTYPE 影响 CSS 处理 2.FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 ...

  9. CSS实现兼容性的渐变背景(gradient)效果

    利用css 3实现渐变可以很方便的更改它的颜色,并且能够减少图片的制作,但是它的兼容性并不好,下面的代码就是实现利用css 渐变兼容的代码: .gradient{ width:300px; heigh ...

随机推荐

  1. Leetcode728.Self Dividing Numbers自除数

    自除数 是指可以被它包含的每一位数除尽的数. 例如,128 是一个自除数,因为 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0. 还有,自除数不允许包含 0 . 给定上边 ...

  2. oracle一些常见的问题

    对于权限审计和大部分语句,by session无效,无论指定by session/by access还是不指定,审计都自动为by access. 审计的语句级可以指定ALL,但是ALL只包括大部分语句 ...

  3. nginx设置301永久重定向

    https://blog.csdn.net/wzqzhq/article/details/53376501 比如说我的域名有多个,一个主域名www.zq110.com,多个次域名:www.aaa.co ...

  4. 【LeetCode】90.Subsets II

    Subsets II Given a collection of integers that might contain duplicates, nums, return all possible s ...

  5. oracle RANK() dense_rank()

    [语法]RANK ( ) OVER ( [query_partition_clause] order_by_clause ) dense_RANK ( ) OVER ( [query_partitio ...

  6. Android学习笔记之 SimpleAdapter 中添加按钮响应事件,getView的重写

    Andriod 里面的ListView是一个显示列表数据的控件,常用适配器SimpleAdapter进行绑定,绑定代码如下: ListView lstView = (ListView) this.fi ...

  7. 自定义View系列教程03--onLayout源码详尽分析

    深入探讨Android异步精髓Handler 站在源码的肩膀上全解Scroller工作机制 Android多分辨率适配框架(1)- 核心基础 Android多分辨率适配框架(2)- 原理剖析 Andr ...

  8. C++笔记:面向对象编程(Handle类)

    句柄类 句柄类的出现是为了解决用户使用指针时须要控制指针的载入和释放的问题. 用指针訪问对象非常easy出现悬垂指针或者内存泄漏的问题. 为了解决这些问题,有很多方法能够使用,句柄类就是当中之中的一个 ...

  9. sspanel 常用审计规则

    规则 禁用 BT 防止版权争议 BitTorrent protocol 数据包明文匹配 禁止 百度高精度定位 防止IP与客户端地理位置被记录 (api|ps|sv|offnavi|newvector| ...

  10. shell 并发执行任务

    #!/bin/bash # ref: https://blog.csdn.net/spch2008/article/details/51433353 token(){ pid=$ # 判断是否有传入p ...