首页 技术 正文
技术 2022年11月16日
0 收藏 409 点赞 4,669 浏览 4230 个字

之前项目中遇到纯色的半透明背景,都是这么干:

<style>
.box {width:300px;height:300px;position:relative;}
.mask {width:300px;height:300px;position:absolute;z-index:;background-color:#;opacity:0.4;filter:alpha(opacity:);}
.content {width:300px;height:300px;position:absolute;z-index:;}
</style><div class="box">
<div class="content">这里是内容</div>
<div class="mask"></div>
</div>

但是,最近项目中,遇到高度不是固定的,这种方法就不行了。我也想过用Png24图片实现半透明效果,但是要用到图片,而且还有狗日的ie6兼容问题,虽然也可以解决,但是麻烦。

那有木有更好的方法呢??答案是肯定的,不然我写这篇文章干嘛。

<style>
.box {width:300px;height:300px;background:rgba(,,,0.4);filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=,StartColorStr='#66000000',EndColorStr='#66000000');}
</style><div class="box">
就不告诉你这里是内容。
<div>

我们得到的效果是这样的,IE9 的透明度竟然有 60%!! 这显然不是我们想法的。原因是:IE9 也支持 filter,使得 filter 的结果和 background-color 叠加,所以是 60%。

解决方法必须有的:

.box{filter:progid:DXImageTransform.Microsoft.gradient(enabled='true',startColorstr='#66000000', endColorstr='#66000000');background:rgba(,,,0.4);}
:root .box{filter:progid:DXImageTransform.Microsoft.gradient(enabled='true',startColorstr='#00000000', endColorstr='#00000000');}/*for IE9*/
或者ie9的hack使用:
:root .box{filter:none;}/*for IE9*/

简单解释一下:

background:rgba(0,0,0,0.4);  
css3的RGBA,依次是red,green,blue,alpha,最后一个alpha透明度。

filter 渐变滤镜详细用法,[参见这里]
StartColorStr 和 EndColorStr:
#4c000000 是 30% 透明度的 #000000 的意思
组成: # + 透明度 + 颜色
算法: Math.floor(0.6 * 255).toString(16);

filter 渐变滤镜的用法看不懂???没关系,我也不太懂,网上有工具,转换一下就可以了:

[请使劲点击这里]


背景透明,内容不透明CSS代码生成器

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>背景透明,内容不透明CSS代码生成器</title>
<script>
if(window.top!=window){
window.top.location.href = window.location.href;
}
</script>
</head>
<body>
<style type="text/css">
#hananBackgroundColorOpacity{margin:10px;}
#hananBackgroundColorOpacity span{margin-left:10px; color:#8a8c8e;}
#hananBackgroundColorOpacity textarea{width:650px; height:120px; padding:5px; color:#fff; background:#;}
#hananBackgroundColorOpacity strong{color:#;}
#hananBackgroundColorOpacity h3{color:#; border-bottom:1px solid #ccc; line-height:57px;}
#hananBackgroundColorOpacity h3 img{ float:right;}
#hananBackgroundColorOpacity h3 .c{ clear:both; height:0px;margin:;padding:;}
#hananBackgroundColorOpacity .hanan_introduction,#hananBackgroundColorOpacity .hanan_introduction a{ font-size:12px; color:#6E6E6E; }
#hananBackgroundColorOpacity img{border:none;}
</style>
<div id="hananBackgroundColorOpacity">
<p class="hanan_introduction ">
说明:为页面元素添加背景透明,内容不透明的效果,兼容IE6////、Chrome、Firefox、Safari、Opera。
</p>
<p>选择器:<input id="hananDomChooser" type="text" value="" /><span>id或者class等CSS选择器,比如:<strong>#abc</strong></span></p>
<p>颜色值:<input id="hananColorValue" type="text" value="" /><span>16进制颜色值,不带#号,比如:<strong>#c77eb5</strong>,请填:<strong>c77eb5</strong></span></p>
<p>透明度:<input id="hananOpacity" type="text" value="" /><span><strong></strong>到<strong></strong>之间,比如:<strong>0.5</strong></span></p>
<p><input id="hananGetCssCodeButon" type="button" value="生成CSS代码" /></p>
<p>
CSS代码:<br/>
<textarea id="hananCssCode" type="text"/></textarea>
</p>
<p class="hanan_introduction ">
实现原理参考:<a href="http://www.cssha.com/through-the-ie-private-filter-let-ie6-ie7-ie8-support-transparent-background" rel="external nofollow" target="_blank">http://www.cssha.com/through-the-ie-private-filter-let-ie6-ie7-ie8-support-transparent-background</a>
</p>
</div>
<script type="text/javascript">
// <![CDATA[
function hananColorToRGB(col,opa){
var c = col
var R = parseInt(c.substring(,),), G = parseInt(c.substring(,),), B = parseInt(c.substring(),);
return 'rgba(' + R + ',' + G + ',' + B + ','+ opa +')' ;
}
function smallToBig(col){
var str = '';
if(col.length==){
str = col;
}else{
var _r = col.substring(,), _g = col.substring(,), _b = col.substring();
_r += _r;
_g += _g;
_b += _b;
str = _r + _g + _b;
}
return str;
}
function hananGetCssCode(){
var chooser = document.getElementById('hananDomChooser').value;
var col = smallToBig(document.getElementById('hananColorValue').value);
var opa = document.getElementById('hananOpacity').value;
var rgb = hananColorToRGB(col,opa);
var iecol = parseInt((opa*)).toString() + col;
if(chooser=='' || col=='' || opa==''){
alert('选择器、颜色值、透明度都要填完哦亲!');
}else{
document.getElementById('hananCssCode').value = chooser +'{background:' + rgb + ';filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#' + iecol + ',endColorstr=#' + iecol + ');zoom:1;}'+
'\r\n:root ' + chooser +'{filter:none\\9;}/*for IE9*/';
}
}
window.onload = function (){
document.getElementById('hananGetCssCodeButon').onclick = function(){
hananGetCssCode();
}
}
// ]]>
</script>
</body>
</html>
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,949
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,475
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,288
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,103
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,735
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,770