opacity兼容性以及存在问题处理
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兼容性以及存在问题处理的更多相关文章
- javascript opacity兼容性随笔
一.CSS兼容代码 .transparent { filter:alpha(opacity=50); /* IE */ -moz-opacity:0.5; /* FireFox old version ...
- opacity兼容性问题
用来设定元素透明度的 Opacity 是CSS 3里的一个属性.当然现在还只有少部分浏览器支持. 不过各个浏览器都有自己的私有属性来支持,其中包括老版本的Mozilla和Safari: IE: fil ...
- 【原】CSS实现背景透明,文字不透明,兼容所有浏览器
11.11是公司成立的日子,16岁啦,我呢3岁半,感谢公司给了这样一个平台,让我得以学习和成长,这里祝愿公司发展越来越好~ 进入主题,每年11月11号是光棍节,产生于校园,本来只是一流传于年轻人的娱乐 ...
- CSS实现背景透明,文字不透明,兼容所有浏览器
11.11是公司成立的日子,16岁啦,我呢3岁半,感谢公司给了这样一个平台,让我得以学习和成长,这里祝愿公司发展越来越好~ 进入主题,每年11月11号是光棍节,产生于校园,本来只是一流传于年轻人的娱乐 ...
- CSS实现背景透明,文字不透明(兼容所有浏览器)
我们平时所说的调整透明度,其实在样式中是调整不透明度,如下图所示例: 打开ps,在图层面板上,可以看到设置图层整理不透明度的菜单,从 0% (完全透明)到 100%(完全不透明). 实现透明的css方 ...
- javascript中一些常见的兼容性问题
下面是一些Javascript的IE和Firefox(火狐)兼容性的常用例子 1. document.formName.item("itemName") 问题 说明:IE下,可以使 ...
- 兼容性背景颜色半透明CSS代码(不影响内部子元素)
如何简单兼容性的实现父元素是半透明背景色,而子元素不受影响. 兼容所有浏览器的背景颜色半透明CSS代码: background-color: rgba(, , , .); filter: progid ...
- CSS 多浏览器兼容性问题及解决方案
兼容性处理要点1.DOCTYPE 影响 CSS 处理 2.FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 ...
- CSS实现兼容性的渐变背景(gradient)效果
利用css 3实现渐变可以很方便的更改它的颜色,并且能够减少图片的制作,但是它的兼容性并不好,下面的代码就是实现利用css 渐变兼容的代码: .gradient{ width:300px; heigh ...
随机推荐
- mongodb的一些简单操作
mongo 使用 mongod 开机mongod --dbpath c:\mongo mongod --storageEngine mmapv1 --dbpath c:\mongo mongoimpo ...
- Implement strStr() 字符串匹配
Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle ...
- 记忆化搜索(DFS)--How many ways
How many ways 这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m).游戏的规则描述如下:1.机器人一开始在棋盘的起始点并有起始点所标有的能量.2. ...
- laravel 自定义常量方法
laravel 自定义常量方法 版本5以上验证OK 常量定义方案A: step1 按路径生成constants文件app/config/constants.php step2 constants文件里 ...
- HDU 5572 An Easy Physics Problem【计算几何】
计算几何的题做的真是少之又少. 之前wa以为是精度问题,后来发现是情况没有考虑全... 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5572 题意: ...
- CF1238E.Keyboard Purchase 题解 状压/子集划分DP
作者:zifeiy 标签:状压DP,子集划分DP 题目链接:https://codeforces.com/contest/1238/problem/E 题目大意: 给你一个长度为 \(n(n \le ...
- HZOJ 走格子
作者的正解: 对于100%的数据:行动可以分为两种: 1. 步行,花费一个单位的时间移动到4联通的相邻格子中去. 2. 使用传送门,指定一个方向的墙的前面的一个格子,步行至最近的一个墙的面前,使用传送 ...
- laravel 5.5 登录验证码 captcha 引入
https://blog.csdn.net/u013372487/article/details/79461730 前提: 开启Laravel 的用户认证功能 1.安装 Captcha 安装 Capt ...
- 洛谷P2709 小B的询问 莫队
小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重复次数.小 ...
- kuangbin专题-连通图A - Network of Schools
这道题的意思是就是 问题 1:初始至少需要向多少个学校发放软件,使得网络内所有的学校最终都能得到软件. 2:至少需要添加几条传输线路(边),使任意向一个学校发放软件后,经过若干次传送,网络内所有的学校 ...