浪费4个多小时修正因使用透明PNG而带来的问题
来源:互联网 发布:小米air 装linux 编辑:程序博客网 时间:2024/05/18 09:43
还是因为《show一下刚做的系统登录界面》,登录框有多个不同等级的alpha值,四周的外边框透明度为31%,登录框透明度为90%,文本框透明度为75%,生成HTML页面时,分别用了3个<span>并设置相应的alpha值,简化后如:
<style type="text/css">
.lgfrmbg { position:absolute; top:50%; left:50%; margin:-148px 0 0 -208px; width:417px; height:297px;}
.lgfrm { position:absolute; top:50%; left:50%; margin:-142px 0 0 -202px; width:404px; height:285px;}
.frm {position: relative; top:64px; left:40px; font:12px 宋体; color:#dee4d6;}
.frm input {margin:4px 0 0 4px; border: 1px solid #14277a;filter:alpha(opacity=75);-moz-opacity:0.75;opacity: 0.75;}
</style>
<span class="lgfrmbg"><!--外边框--></span>
<span class="lgfrm"><!--登录框--><span class="frm"><!--文本框--><input type="text" id="edtAccount" /></span></span>
很简单。为了让界面变得好看,使用了PNG使用<span>的底图,同时为了解决Ie6对透明PNG的bug和跨浏览器,使用CSS Hack,样式表变成了:
.lgfrmbg { position:absolute; top:50%; left:50%; margin:-148px 0 0 -208px; width:417px; height:297px;}
html>body .lgfrmbg {background-image: url(/images/lgfrmbg.png);}
*html .lgfrmbg {filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src="/images/lgfrmbg.png") progid:DXImageTransform.Microsoft.Alpha(opacity=31);}
............
通过浏览器查看效果,界面在IE6和IE7下显示得很好,三个<span>的位置合并得天衣无缝。唯一的问题无论鼠标怎么点就是点不中文本框。原本以为是因为“position:absolute; top:50%; left:50%; margin:-148px 0 0 -208px”这种方式导致浏览器不能正确计算文本框位置造成,于是花了4个小时来修改这种定位方法,试遍了能想到和找到方法,均没有满意的效果。
最后才想起了有人提过那个CSS Hack会导致元素内部链接无法点击。一测试果真是它造成的,解决方法很简单(不是网上推荐使用display:inline代替float),把文本框的<span>独立出来再稍为修改CSS代码即可,而且这样做更符合W3C标准。
修改后代码如下:
<style type="text/css">
.lgfrmbg { position:absolute; top:50%; left:50%; margin:-148px 0 0 -208px; width:417px; height:297px;}
html>body .lgfrmbg {background-image: url(/images/lgfrmbg.png);}
*html .lgfrmbg {filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src="/images/lgfrmbg.png") progid:DXImageTransform.Microsoft.Alpha(opacity=31);}
.lgfrm { position:absolute; top:50%; left:50%; margin:-142px 0 0 -202px; width:404px; height:285px;}
...............
.frm {position: absolute; top:50%; left:50%; margin:-78px 0 0 -162px; font:12px 宋体; color:#dee4d6;}
.frm input {margin:5px 0 0 5px; border: 1px solid #14277a;
filter:alpha(opacity=75);
-moz-opacity:0.75;
opacity: 0.75;
}
</style>
<span class="lgfrmbg"></span>
<span class="lgfrm"></span>
<span class="frm"><input type="text" id="edtAccount" /></span>
白白浪费了4小时,冤枉啊!!
- 浪费4个多小时修正因使用透明PNG而带来的问题
- png 透明的一些问题
- dedecms 解决水印使用png无法透明的问题
- 基于Qt的收银点餐系统之解决因网络请求延迟而带来的问题
- 因系统漏洞而中毒引起的问题
- 写不完的BUG,纪念因为手滑写错代码而浪费的几个小时时间。
- IE6下png透明的问题
- 彻底解决 PNG图片透明的问题!
- IE6 PNG图片透明的问题
- IE使用png透明图片的方法
- 使用CImage显示透明的PNG图片
- 使用CImage显示透明的PNG图片
- 使用CImage显示透明的PNG图片
- IE6.0下使用PNG的JS(让PNG透明)
- IE6 PNG 透明问题
- 对“使用MyEclipse,写的jsp代码因有汉字而无法保存”问题的解决
- 今天为了一个小问题浪费了2-3个小时
- 使用DD_belatedPNG让IE6支持PNG透明图片 及IE6下背景图闪烁问题的解决方法
- C++库大汇
- 应用程序日志管理!
- 编码字符集与乱码问题根源之所在
- 北京不仅仅10号线不通手机
- Home
- 浪费4个多小时修正因使用透明PNG而带来的问题
- Twisted的延时处理机制
- ANSI
- xhtml相对于html的好处
- Filesystems (ext3, reiser, xfs, jfs) comparison on Debian
- JS 复选框 全选 反选
- 节省时间
- 关于飞机加油问题
- 我要飞得更高系列一