博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【css】浏览器的各种 bug
阅读量:6547 次
发布时间:2019-06-24

本文共 4254 字,大约阅读时间需要 14 分钟。

对于页面重构师来说,最令人头痛的浏览器是哪个?我相信有 99% 的人会选择 ie6。下面我就来介绍一些我遇到过的 ie6 bug 以及解决方法,当然也包括其他浏览器。

1、ie6 双边距 bug

当元素浮动并且同时有外边距时,在 ie6 下会产生双倍距离。(.content{float:left;margin-left:10px;} 其他浏览器下左边距是 10px,ie6 下左边距是 20px)

解决方法:display:inline;(.content{float:left;margin-left:10px;display:inline;})

2、奇数宽高 bug

在相对定位和绝对定位下,当外层相对定位的宽度或高度是奇数时,会产生这个 bug。我们看下例子:

1    2    3    4     
5 奇数宽高bug 6 11 12 13
14
15
16 17

可以看出,黄色背景的 div 并没有完全在右下角,下边和右边各留了 1 像素。

解决方法:将外层相对定位的 div 宽高改为偶数即可。

3、ie6 position:fixed; 无效

如今很多页面上都有分享的功能,我们可以发现随着浏览器的滚动,位置并没有变化,这是因为使用了 position:fixed; 效果,但是在 ie6 下并不支持这个属性。那怎么办呢?该如何实现这样的效果呢?很简单,在 css 中用表达式写 js 来实现这个效果。

/*定位在左上角*/.ie6fixedLT{
position:absolute;left:expression(eval(document.documentElement.scrollLeft));top:expression(eval(document.documentElement.scrollTop));}/*定位在右上角*/.ie6fixedRT{
position:absolute;right:expression(eval(document.documentElement.scrollLeft));top:expression(eval(document.documentElement.scrollTop));}/*定位在左下角*/.ie6fixedLB{
position:absolute;left:expression(eval(document.documentElement.scrollLeft+document.documentElement.clientWidth-this.offsetWidth)-(parseInt(this.currentStyle.marginLeft,10)||0)-(parseInt(this.currentStyle.marginRight,10)||0));top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0)));}/*定位在右下角*/.ie6fixedRB{
position:absolute;right:expression(eval(document.documentElement.scrollLeft+document.documentElement.clientWidth-this.offsetWidth)-(parseInt(this.currentStyle.marginLeft,10)||0)-(parseInt(this.currentStyle.marginRight,10)||0));top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0)));} /* 修正ie6振动bug */ *html,*html body{
background-image:url(about:blank);background-attachment:fixed;}

4、ie6 高度小于 10 像素 bug

在 ie6 下有默认行高,这就使得高度小于 10 像素的块级元素无法显示正确的高度。

解决方法:给高度小于 10 像素的元素添加 font-size:0;overflow:hidden;

5、ie6 最小高度

在 ie6 中,并不认识 min- 和 max- 前缀的宽度高度。但是有时我们做页面的时候会用到,该如何解决呢?

解决方法:

方法一:用 js 来解决(不值得推荐)

1 .maxWidth{
max-width:200px; width:expression(this.width > 200 ? '200px' : true);} 2 .minHeight{
min-height:200px; height:expression(this.height < 200 ? '200px' : true);}

解决 expression 性能问题

1 .minWidth{
min-width:200px; width:expression((function(o){o.style.width = (o.width < 200 ? '200px' : o.width);})(this));}

方法二:hack 写法(推荐)

1 .minHeight{
height:auto !important;height:100px;min-height:100px;}

注意写法的顺序

6、ie6 下 div 无法遮盖 select

1    2    3    4 
5 div无法遮盖select 6 10 11 12
13
18
19
20 21

产生的原因:在 ie6 下,浏览器将 select 元素视为窗口级元素,这时 div 或者其他元素无论 z-index 设置有多高,都无法遮住 select 元素。

解决方法:在需要遮盖的 div 中放入一个空的 iframe。

1    2    3    4 
5 无标题文档 6 11 12 13
14
15
20
21 22

7、文字溢出 bug(ie6 注释 bug)

形成原因:

1、一个容器包含2个具有 float 样式的子容器,且第一个子容器为内联元素

2、第二个容器的宽度大于父容器的宽度,或者父容器宽度减去第二个容器宽度的值小于 3

3、在第二个容器前存在注释(ie6 注释 bug)

1    2    3    4     
5 文字溢出bug(IE6注释bug) 6 7 8
9
10
11
重复文字测试
12
13 14

解决方法:

1、改变结构,不出现【一个容器包含 2 个具有 float 的子容器】的结构

2、减小第二个容器的宽度,使父容器宽度减去第二个容器宽度的值大于 3

3、去掉注释(推荐)

4、修正注释的写法。将<!--注释-->写成<!--[if !IE]>注释<![endif]-->

5、将文字放入新的容器内(推荐)

1    2    3    4     
5 文字溢出bug(IE6注释bug) 6 7 8
9
10
11
重复文字测试
12
13 14

8、firefox 内部 div 使用 margin-top,成为外部 div 的 margin-top

前面几个都是介绍 ie6 下的 bug,这次介绍 firefox 下的 bug。

解决方法:display:inline-block; 或者 overflow:hidden;

1    2    3    4     
5 firefox内部div使用margin-top,成为外部div的margin-top 6 13 14 15
16
firefox内部div使用margin-top,成为外部div的margin-top
17
18
19
这下子正常了
20 21

转载地址:http://cmedo.baihongyu.com/

你可能感兴趣的文章
FastAdmin 极速后台管理框架 1.0.0.20190301_beta
查看>>
Selenium2 WebDriver 启动Chrome, Firefox, IE 浏览器、设置profile&加载插件
查看>>
Python标准库01 正则表达式(re包)
查看>>
Hello,Java女神
查看>>
rpc远程调用开发
查看>>
复习-css控制文本字体属性
查看>>
学习设计模式——观察者模式
查看>>
什么是centos 的epel源
查看>>
删除LVM步骤
查看>>
Zookeeper客户端
查看>>
linux常用指令
查看>>
Oracle使用PLSQL连接时,导入导出问题
查看>>
Servlet Demo
查看>>
Struts2中的<s:action>标签
查看>>
Java中取某一个范围的随机数
查看>>
一条复杂SQL实现思路
查看>>
我的友情链接
查看>>
android app 退出时提示确认
查看>>
win10 配置
查看>>
java 编译100个范例
查看>>