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 ...
随机推荐
- Java练习 SDUT-2192_救基友记2
救基友记2 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 屌丝WP的好基友CZ又被妖鬼给抓走了(CZ啊,CZ-.怎么说 ...
- Python2.7下,调用subprocess启动子进程,读取子进程标准输出若干问题
1:如果调用的子进程也是一个python脚本,则subprocess.Popen中的bufsize=1无效果.也就是说,即使设置了bufsize=1表示进行行缓冲,子进程如果不显示调用sys.stdo ...
- 解决/home磁盘空间不足问题
最近在Linux下做仿真实验,但是渐渐的发现,/home原来分配的空间不足.通过先建硬盘分区,然后挂载到/home文件的方法,在网上查了好多资料 建立分区并挂载分区http://www.se126.c ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第八章:光照
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第八章:光照 代码工程地址: https://github.com/j ...
- eclipse Some projects cannot be imported because they already exist in the workspace
archive file 档案文件 删除对应的文件即可
- 2019-10-26-dotnet-core-发布只有一个-exe-的方法
title author date CreateTime categories dotnet core 发布只有一个 exe 的方法 lindexi 2019-10-26 8:42:7 +0800 2 ...
- jquery( 点击按钮出来文本框并限制文本框的个数)
// 首先呢 编辑这个文章 主要是用于和大家的交流 以便学习和交流!! <div class="form-group" id="spots"> ...
- DateFormat 日期格式化类(必须掌握)
package com.sxt.utils.date1; import java.util.Date; import java.text.DateFormat; import java.text.Si ...
- 2018-8-10-Roslyn-节点的-Span-和--FullSpan-有什么区别
title author date CreateTime categories Roslyn 节点的 Span 和 FullSpan 有什么区别 lindexi 2018-08-10 19:16:52 ...
- Android中后台线程如何与UI线程交互
我想关于这个话题已经有很多前辈讨论过了.今天算是一次学习总结吧. 在android的设计思想中,为了确保用户顺滑的操作体验.一些耗时的任务不能够在UI线程中运行,像访问网络就属于这类任务.因此我们必须 ...