IE CSS Bug集合
【珍藏版】IE6,IE7,IE8,Firefox等浏览器兼容的css hack

IE6,IE7,IE8,Firefox等浏览器兼容的css hack一、开发平台的选择我很幸运, 我接触网页前台的时候Firefox2 已经十分红火, 我的所有工作都是在Firefox 上展开, 同时兼容其他浏览器的. 这样做肯定会比在IE 做好再到别的浏览器兼容来得容易, 因为IE 对老标准支持还是很不错的, 而IE 的一些特有功能人家却不支持. 所以我推荐以Firefox 结合Firebug 扩展作为平台.在解决兼容方法上,想定出一个统一的规范,个人认为应该以下面3点为基本原则:权衡成本:在浏览器被淘汰后,如何快速清理掉无用代码可维护:在资源成本和完美间平衡的向后兼容可读:省力、易记二、Hack 的顺序使用Firefox 作为平台, 只要代码写得够标准, 其实要Hack 的地方不会很多的, IE 以外的浏览器几乎都不会有问题, 所以可以暂时忽略,顺序如下:Firefox -> IE8 -> IE7 -> IE6 -> 其他三、CSS 选择器Hack/* Opera */@media all and (-webkit-min-device-pixel-ratio:10000), not all and(-webkit-min-device-pixel-ratio:0){head~body .sofish{display:block;}}这种写法的优缺点是:优点:全面,各种HACK都有;清理无用代码里易认缺点:选择器名称不易记;代码量多(要重复写选择器)四、CSS 属性Hack.sofish{padding:10px;padding:9px\9; /* all ie */padding:8px\0; /* ie8-9 */*padding:5px; /* ie6-7 */+padding:7px; /* ie7 */_padding:6px; /* ie6 */}这种写法的优缺点是:优点:易记;代码少缺点:不全面五、IE 注释<!--[if IE]>IE only<![endif]--><!--[if !IE]>NOT IE<![endif]-->这种写法的优缺点是:优点:安全;向后兼容好;易维护缺点:用不好会增加HTTP请求;用得好代码又多六、浏览器探测:JS/后端程序判断// 以jQuery为例,检测是否是IE6,是则加上class="ie6" if ($.browser.msie && $.browser.version = 6 ){ $('div').addClass('ie6');}这种写法的优缺点是:优点:全面;易维护;可读性高缺点:占资源;代码量大(要重写选择器)总结:-----------------1、尽量使用单独HACK这样维护起来成本比较低,改动不会影响其他的浏览器,而一旦有浏览器淘汰,只要搜索关键字,就可以批量去掉这些代码。
兼容ie6的十条修复

我们知道ie会在一段时间内仍然流行,但是我们仍然可以支持浏览器并且避免hacks和条件css吗?这里有十条使用有效的html和css代码修复可以兼容ie6常见的问题。
1、使用一个声明你必须经常在html网页头部放置一个声明,推荐使用严格的标准。
例如或者xhtml使用最后你需要是ie6进入兼容模式,这已经足够兼容的了。
2、使用position: relative设置一个标签position: relative可以解决很多问题,特别是曾经有过看不见的经历或者奇怪布局的框架。
明显的,你需要小心,绝对位置放置的子元素是否都参照找到新位置。
3、为浮动元素使用display:inline浮动元素会有一个著名的ie6双边距margin bug。
假如你设置了左边距5px但实际上得到了10px左边距。
display:inline可以解决这个问题,尽管它不是必需的,但是css仍然有效。
4、设置元素启动hasLayout大部分ie6(ie7)的渲染问题都可以通过起来元素的hasLayout属性来兼容。
这是ie内置的设定,确定一个内容块相对其它内容块是有界限和位置的。
当你需要设置一个行内元素例如一个连接变成块状元素或者是透明效果,设置hasLayout也是必须的。
5、修复重复字符的bug复杂的布局会触发一个bug:浮动对象的最后字符会出现在已经清除浮动的元素后面。
这里有几种解决的办法,部分是理想的,并且一些测试和出错是必须的。
a、确保浮动元素都使用:display:inline;b、最后一个浮动元素使用margin-right:-3px;c、在浮动对象最后一个元素后使用一个条件注释。
例如这里输入注释…<![endif]d、在容器内的最后使用一个div空标签(它也必须设置90%宽度甚至更小)6、使用a标签完成可点击和hover原理Ie6只支持a标签的css定义hover效果你可以使用它去控制javascript启动的widgets,使得他们仍然保持键盘操作。
浏览器兼容性问题大汇总

浏览器兼容性问题⼤汇总JavaScript1.HTML对象获取问题FireFox:document.getElementById(“idName”);ie:document.idname或者document.getElementById(“idName”).解决办法:统⼀使⽤document.getElementById(“idName”);2.const问题说明:Firefox下,可以使⽤const关键字或var关键字来定义常量;IE下,只能使⽤var关键字来定义常量.解决⽅法:统⼀使⽤var关键字来定义常量.3.event.x与event.y问题说明:IE下,event对象有x,y属性,但是没有pageX,pageY属性;Firefox下,event对象有pageX,pageY属性,但是没有x,y属性.解决⽅法:使⽤mX(mX = event.x ? event.x : event.pageX;)来代替IE下的event.x或者Firefox下的event.pageX.4.window.location.href问题说明:IE或者Firefox2.0.x下,可以使⽤window.location或window.location.href;Firefox1.5.x下,只能使⽤window.location.解决⽅法:使⽤window.location来代替window.location.href.5.frame问题以下⾯的frame为例:<frame src=”xxx.html” id=”frameId” name=”frameName” />(1)访问frame对象:IE:使⽤window.frameId或者window.frameName来访问这个frame对象.frameId和frameName可以同名。
Firefox:只能使⽤window.frameName来访问这个frame对象.另外,在IE和Firefox中都可以使⽤window.document.getElementById(“frameId”)来访问这个frame对象.(2)切换frame内容:在 IE和Firefox中都可以使⽤window.document.getElementById(“testFrame”).src = “xxx.html”或window.frameName.location = “xxx.html”来切换frame的内容.如果需要将frame中的参数传回⽗窗⼝(注意不是opener,⽽是parent frame),可以在frame中使⽤parent来访问⽗窗⼝。
网页设计中常见的浏览器下的bug汇总

网页设计中常见的浏览器下的bug汇总IE6中双边距Bug:发生场合:当给父元素内第一个浮动元素设置margin-left(元素float:left)或margin-right(元素float:right)时margin加倍。
解决方法:是给浮动元素加上display:inline;CSS属性;或者用padding-left代替margin-left。
原理分析:块级对象默认的display属性值是block,当设置了浮动的同时,还设置了它的外边距就会出现这种情况。
也许你会问:“为什么之后的对象和第一个对象之间就不存在双倍边距的Bug”?因为浮动都有其相对应的对象,只有相对于其父对象的浮动对象才会出现这样的问题。
第一个对象是相对父对象的,而之后对象是相对第一个对象的,所以之后对象在设置后不会出现问题。
为什么display:inline可以解决这个双边距bug,首先是inline元素或inline-block 元素是不存在双边距问题的。
然后,float:left等浮动属性可以让inline元素haslayout,会让inline元素表现得跟inline-block元素的特性一样,支持高宽,垂直margin和padding等,所以div class的所有样式可以用在这个display inline的元素上。
IE6中浮动元素3px间隔Bug:发生场合:发生在一个元素浮动,然后一个不浮动的元素自然上浮与之靠近会出现的3px的bug。
解决方法:右边元素也一起浮动;或者为右边元素添加IE6 Hack _margin-left:-3px;从而消除3px间距。
原理分析:IE6浏览器缺陷Bug。
IE6/7负margin隐藏Bug:发生场合:当给一个有hasLayout的父元素内的非hasLayout元素设置负margin时,超出父元素部分不可见。
解决方法:去掉父元素的hasLayout;或者赋hasLayout给子元素,并添加position:relative;原理分析:IE6/7独有的hasLayout产生问题。
IE6,IE7,IE8,Firefox,Chrome,Safari的CSS hack兼容表

小知识:什么是CSS hack?由于不同的浏览器,比如IE6、IE7、IE8、Firefox等,对CSS的解析认识不一样,因此会导致生成的页面效果不一样,得不到我们所需要的页面效果。
这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,能在不同的浏览器中也能得到我们想要的页面效果。
这个针对不同的浏览器写不同的CSS code的过程,就叫CSS hack,也叫写CSS hack。
各浏览器CSS hack兼容表:代码示例:#test{color:red; /* 所有浏览器都支持*/color:red !important;/* Firefox、IE7支持*/_color:red; /* IE6支持*/*color:red; /* IE6、IE7支持*/*+color:red; /* IE7支持*/color:red\9; /* IE6、IE7、IE8支持*/color:red\0; /* IE8支持*/}body:nth-of-type(1) p{color:red;} /* Chrome、Safari支持*/整体测试代码示例:.test{color:#000000;color:#0000FF\0;[color:#00FF00;*color:#FFFF00;_color:#FF0000;}其他说明:1、如果你的页面对IE7兼容没有问题,又不想大量修改现有代码,同时又能在IE8中正常使用,微软声称,开发商仅需要在目前兼容IE7的网站上添加一行代码即可解决问题,此代码如下:<meta http-equiv=”x-ua-compatible” content=”ie=7″ />2、body:nth-of-type(1) 如果这样写,表示全局查找body,将会对应第一个<body>。
3、还有其他写法,比如:*html #test{}或者*+html #test{}4、*+html 对IE7的hack 必须保证HTML顶部有如下声明:/TR/html4/loose.dtd5、顺序:Firefox、IE8、IE7、IE6依次排列。
不同浏览器兼容报告

Shuo de——中国金融数据及工具首席服务商IE、FF、Safari、OP不同浏览器兼容报告柯伯勋2011-03-08上海万得资讯科技有限公司Shanghai Wind Information Co., Ltd.地址: 上海浦东新区福山路33号建工大厦9楼邮编Zip : 200120电话T el : (8621)6886 2280传真Fax : (8621)6886 2281Email : sales@主页:1浏览器内核简介浏览器最重要或者说核心的部分是“Rendering Engine”,可大概译为“解释引擎”,不过我们一般习惯将之称为“浏览器内核”。
负责对网页语法的解释(如HTML、JavaScript)并渲染(显示)网页。
所以,通常所谓的浏览器内核也就是浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。
不同的浏览器内核对网页编写语法的解释也有不同,因此同一网页在不同的内核的浏览器里的渲染(显示)效果也可能不同,这也是网页编写者需要在不同内核的浏览器中测试网页显示效果的原因。
浏览器内核很多,如果加上所有的几乎没有什么人在用的非商业的免费内核,那么可能大约有10款以上甚至更多,不过通常我们比较常见的大约只有以下四种,下面先简单介绍一下。
1.1Trident:IE浏览器使用的内核,该内核程序在1997年的IE4中首次被采用,是微软在Mosaic代码的基础之上修改而来的,并沿用到目前的IE8。
Trident实际上是一款开放的内核,其接口内核设计的相当成熟,因此才有许多采用IE内核而非IE的浏览器涌现(如Maxthon、The World 、TT、GreenBrowser、AvantBrowser等)。
此外,为了方便也有很多人直接简称其为IE内核(当然也不排除有部分人是因为不知道内核名称而只好如此说)。
由于IE本身的“垄断性”(虽然名义上IE并非垄断,但实际上,特别是从Windows 95年代一直到XP初期,就市场占有率来说IE的确借助Windows的东风处于“垄断”的地位)而使得Trident内核的长期一家独大,微软很长时间都并没有更新Trident内核,这导致了两个后果——一是Trident内核曾经几乎与W3C标准脱节(2005年),二是Trident内核的大量Bug等安全性问题没有得到及时解决,然后加上一些致力于开源的开发者和一些学者们公开自己认为IE浏览器不安全的观点,也有很多用户转向了其他浏览器,Firefox和Opera就是这个时候兴起的。
CSS技巧汇总---div+CSS浏览器兼容问题整理(IE6.0、IE7.0 ,ie8 , FireFox...)
CSS技巧汇总---div+CSS浏览器兼容问题整理(IE6.0、IE7.0 ,ie8 , FireFox...) CSS技巧1.div的垂直居中问题vertical-align:middle; 将行距增加到和整个DIV一样高line-height:200px; 然后插入文字,就垂直居中了。
缺点是要控制内容不要换行2. margin加倍的问题设置为float的div在ie下设置的margin会加倍。
这是一个ie6都存在的bug。
解决方案是在这个div里面加上display:inline;例如:<#div id=”imfloat”>相应的css为#IamFloat{float:left;margin:5px;/*IE下理解为10px*/display:inline;/*IE下再理解为5px*/}3.浮动ie产生的双倍距离#box{ float:left; width:100px; margin:0 0 0 100px; //这种情况之下IE会产生200px 的距离display:inline; //使浮动忽略}这里细说一下block与inline两个元素:block元素的特点是,总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);Inline元素的特点是,和其他元素在同一行上,不可控制(内嵌元素);#box{ display:block; //可以为内嵌元素模拟为块元素display:inline; //实现同一行排列的效果diplay:table;4 IE与宽度和高度的问题IE 不认得min-这个定义,但实际上它把正常的width和height当作有min的情况来使。
这样问题就大了,如果只用宽度和高度,正常的浏览器里这两个值就不会变,如果只用min-width和min-height的话,IE下面根本等于没有设置宽度和高度。
比如要设置背景图片,这个宽度是比较重要的。
要解决这个问题,可以这样:#box{ width: 80px; height: 35px;}html>body #box{ width: auto; height: auto;min-width: 80px; min-height: 35px;}5.页面的最小宽度min -width是个非常方便的CSS命令,它可以指定元素最小也不能小于某个宽度,这样就能保证排版一直正确。
最全整理浏览器兼容性问题与项目解决方案
常见浏览器兼容性问题与解决方案所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况。
在大多数情况下,我们的需,无论用户用什么浏览器来查看我们的或者登陆我们的系统,都应该是统一的显示效果。
所以浏览器的兼容性问题是前端开发人员经常会碰到和必须要解决的问题。
在学习浏览器兼容性之前,我想把前端开发人员划分为两类:第一类是精确按照设计图开发的前端开发人员,可以说是精确到1px的,他们很容易就会发现设计图的不足,并且在很少的情况下会碰到浏览器的兼容性问题,而这些问题往往都死浏览器的bug,并且他们制作的页面后期易维护,代码重用问题少,可以说是比较牢固放心的代码。
第二类是基本按照设计图来开发的前端开发人员,很多细枝末节差距很大,不如间距,行高,图片位置等等经常会差几px。
某种效果的实现也是反复调试得到,具体为什么出现这种效果还模模糊糊,整体布局十分脆弱。
稍有改动就乱七八糟。
代码为什么这么写还不知所以然。
这类开发人员往往经常为兼容性问题所困。
修改好了这个浏览器又乱了另一个浏览器。
改来改去也毫无头绪。
其实他们碰到的兼容性问题大部分不应该归咎于浏览器,而是他们的技术本身了。
文章主要针对的是第一类,严谨型的开发人员,因此这里主要从浏览器解析差异的角度来分析兼容性问题。
浏览器兼容问题一:不同浏览器的标签默认的外补丁和补丁不同问题症状:随便写几个标签,不加样式控制的情况下,各自的margin 和padding 差异较大。
碰到频率:100%解决方案:CSS里 *备注:这个是最常见的也是最易解决的一个浏览器兼容性问题,几乎所有的CSS 文件开头都会用通配符*来设置各个标签的外补丁是0。
浏览器兼容问题二:块属性标签float后,又有横行的margin情况下,在IE6显示margin比设置的大问题症状:常见症状是IE6中后面的一块被顶到下一行碰到频率:90%(稍微复杂点的页面都会碰到,float布局最常见的浏览器兼容问题)解决方案:在float的标签样式控制中加入 display:inline;将其转化为行属性备注:我们最常用的就是div+CSS布局了,而div就是一个典型的块属性标签,横向布局的时候我们通常都是用div float实现的,横向的间距设置如果用margin 实现,这就是一个必然会碰到的兼容性问题。
ui自动化出现的bug集锦【软件测试培训】【多测师_王sir】
ui⾃动化出现的bug集锦【软件测试培训】【多测师_王sir】bug⼀:⽹站登录后应该显⽰⾸页界⾯、但是出现还未登录界⾯如下:
解决办法:需要通过reload⽅法或者driver.refresh⽅法刷新页⾯才能进去
bug⼆:⽤JavaScript定位⽅法document.getElementById("J_RoomGuestInfoTxt").value='10成⼈'
往住客数中输⼊了10成⼈、但是在操作下⼀个下拉框的时候⽴马变为初始值
bug三:⽤RF框架编写元素层的时候、把封装好的关键字拖⼊到元素层然后出现找不到的情况再次提取⼀个同样的关键字运⾏会报如下的报错
20200814 11:34:29.583 : FAIL : Keyword with same name defined multiple times. 20200814 11:34:29.588 : INFO : Running command 'taskkill /f /im chromedriver.exe 2>&1'.
解决办法:重新打开ride后、把重复的打开浏览器关键字删除重新运⾏就可以了。
CSS各浏览器兼容问题整理
目录目录 (1)一、IE6/IE7/IE8/Firefox/Chrome/Safari的CSS hack兼容一览表 (3)1) 区别IE和非IE浏览器 (3)2) 区别IE6,IE7,IE8,FF (3)3) 区别IE6、IE7、Firefox (方法1) (4)4) 区别IE6、IE7、Firefox (方法2) (4)5) 区别IE7、Firefox (4)6) 区别IE6、IE7 (方法1) (4)7) 区别IE6、IE7 (方法2) (5)8) 区别IE6、Firefox (5)二、IE 的if条件Hack (5)三、对齐产生的问题 (6)1) div的居中对齐问题 (6)2) div中文字垂直居中对齐的问题 (7)3) 怎样使一个层垂直居中于浏览器中 (7)4) 如何对齐文本与文本输入框 (7)四、宽高问题 (7)1) IE6下容器的宽度和FF解释不同 (7)2) 页面的最小宽度 (8)3) 为什么无法定义1px左右高度的容器 (8)4) Firefox 关于DIV高度无法自适应 (8)5) div重叠的现象 (9)6) IE与宽度和高度的问题 (9)7) div嵌套时,外层div高度不能自适应 (10)8) div嵌套时y 轴上外层div 到内层div 的距离的问题 (10)9) padding,marign,height,width 的傻瓜式解决技巧 (10)10) FORM标签 (10)五、浮动 (11)1) margin加倍的问题 (11)2) DIV浮动IE文本产生3象素的bug (11)3) 怎么样才能让层显示在FLASH之上呢 (11)4) float的div闭合;清除浮动 (12)5) 自适应高度 (13)六、列表类 (13)1) UL的padding与margin (13)2) ul和ol列表缩进问题 (14)3) list-style-image无法准确定位 (14)4) LI中内容超过长度后以省略号显示的方法 (14)七、链接 (14)1) 游标手指cursor (14)2) ,给a标签内内容加上样式, (15)3) 链接(a标签)的边框与背景 (15)4) ff不支持expression 例如去掉链接的边框要分别写不同的css (15)5) 超链接访问过后hover样式就不出现的问题 (15)八、背景、图片类 (15)1) IE6下为什么图片下有空隙产生 (15)2) 图片垂直于容器内 (15)3) background 显示问题 (16)4) 背景颜色无法显示 (16)5) 背景透明问题 (17)九、其他问题 (17)1) 如何使连续长字段自动换行 (17)2) 为什么web标准中IE无法设置滚动条颜色了 (18)3) 属性选择器(这个不能算是兼容,是隐藏css的一个bug) (19)4) IE捉迷藏的问题 (19)5) BOX模型解释不一致问题 (19)6) IE6下绝对定位的容器内文本无法正常选择 (19)7) CSS双线凹凸边框 (19)8) IE选择符空格BUG (20)9) ff不支持<body scroll="no" > scroll属性 (21)10) ff不支持数据岛绑定 (21)11) ff不能用.click();方法打开链接 (21)12) 目前FF2.0为止都不支持IE的name锚点 (22)一、IE6/IE7/IE8/Firefox/Chrome/Safari的CSS hack兼容一览表不同的浏览器对CSS的解释都有一点出入,特别是padding, line-height这些要细微控制的地方,下面的hack基本可以解决这个问题:详细查看•在属性前加下划线(_),那么此属性只会被IE6解释•在属性前加星号(*),此属性只会被IE7解释•在属性值后面加"\9",表示此属性只会被IE8解释各浏览器CSS hack兼容表:代码如下:#test{color:red; /* 所有浏览器都支持*/color:red !important; /* Firefox、IE7支持*/_color:red; /* IE6支持*/*color:red; /* IE6、IE7支持*/*+color:red; /* IE7支持*/color:red\9; /* IE6、IE7、IE8支持*/color:red\0; /* IE8支持*/}body:nth-of-type(1) p{color:red;} /* Chrome、Safari支持*/1)区别IE和非IE浏览器【区别符号】:「*」、「\9」#tip{background:blue; /*非IE背景藍色*/background:red\9; /*IE6、IE7、IE8背景紅色*/}(详细查看)2)区别IE6,IE7,IE8,FF【区别符号】:「*」、「_」、「!important」#tip{background:blue; /*Firefox背景变蓝色*/background:red\9; /*IE8背景变红色*/*background:black; /*IE7 背景变黑色*/_background:orange; /*IE6 背景变橘色*/}【说明】:因为IE系列浏览器可读「\9」,而IE6和IE7可读「*」(米字号),另外IE6可辨识「_」(底线),因此可以依照顺序写下来,就会让浏览器正确的读取到自己看得懂得CSS语法,所以就可以有效区分IE 各版本和非IE浏览器(像是Firefox、Opera、Google Chrome、Safari等)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 居中布局创建一个CSS定义把一个元素经放到中间的位置,可能是每一个Web开发人员都会做的事情。
最简单的做法是为你的元素增加一个margin: auto; ,然而IE 6.0 会出现很多奇怪的行为。
让我们来看一个例子。
#container{border: solid 1px #000;background: #777;width: 400px;height: 160px;margin: 30px 0 0 30px;}#element{background: #95CFEF;border: solid 1px #36F;width: 300px;height: 100px;margin: 30px auto;}下面是我们所期望的输出:但IE却给我们这样的输出:这应该是IE 6对margin的auto 并没有正确的设置。
但幸运的是,这是很容易被修正的。
解决方法最简单的方法是在父元素中使用text-align: center 属性,而在元件中使用text-align: left 。
#container{border: solid 1px #000;background: #777;width: 400px;height: 160px;margin: 30px 0 0 30px;text-align: center;}#element{background: #95CFEF;border: solid 1px #36F;width: 300px;height: 100px;margin: 30px 0;text-align: left;}2. 楼梯式的效果几乎所有的Web开发者都会使用list来创建导航条。
下面是你可能会用到的代码:<ul><li><a href="#"></a></li><li><a href="#"></a></li><li><a href="#"></a></li></ul>ul {list-style: none;}ul li a {display: block;width: 130px;height: 30px;text-align: center;color: #fff;float: left;background: #95CFEF;border: solid 1px #36F;margin: 30px 5px;}一个符合标准的浏览器会是下面这样:但IE却是这样的:下面是两个解决方法解决方法一设置li元件的float属性。
ul li { float: left; }解决方法二设置display: inline 属性。
ul li {display: inline}3. float元件的两倍空白请看下面的代码:#element{background: #95CFEF;width: 300px;height: 100px;float: left;margin: 30px 0 0 30px;border: solid 1px #36F;}期望的结果是:IE的结果是:解决方案和上面那个BUG的解决方案一样,设置display: inline 属性可以解决问题。
#element{background: #95CFEF;width: 300px;height: 100px;float: left;margin: 30px 0 0 30px;border: solid 1px #36F;display: inline;}4. 无法设置微型高度我们发现在IE中使用height: XXpx 这样的属性无法设置比较小的高度。
下面是个例子(注意高度是2px):#element{background: #95CFEF;border: solid 1px #36F;width: 300px;height: 2px;margin: 30px 0;}期望结果:2px的元件加1px的边框.解决方案一这个BUG的产生原因很简单,IE不允许元件的高度小于字体的高度,所以,下面的fix是设置上字体大小。
#element{background: #95CFEF;border: solid 1px #36F;width: 300px;height: 2px;margin: 30px 0;font-size: 0;}解决方案二但是最佳的解决方法是使用overflow: hidden 。
background: #95CFEF;border: solid 1px #36F;width: 300px;height: 2px;margin: 30px 0;overflow: hidden}5. 跨出边界这个BUG是很难看的。
当父元件中使用了overflow 的auto 属性,并且在其里放入相关元件。
你会看来里面的元件会跨出来。
下面是一个示例:<div id="element"><div id="anotherelement"></div></div>#element{background: #95CFEF;border: solid 1px #36F;width: 300px;height: 150px;margin: 30px 0;overflow: auto;}#anotherelement{background: #555;width: 150px;height: 175px;position: relative;margin: 30px;}期望的结果:解决方法设置position: relative;属性#element{background: #95CFEF;border: solid 1px #36F;width: 300px;height: 150px;margin: 30px 0;overflow: auto;position: relative;}6. Fixing the Broken Box ModelInternet Explorer曲解了“盒子模子”可能是最不可原谅的事情了。
IE 6 这个半标准的浏览器回避了这个事情,但这个问题还是会因为IE运行在“怪异模式”下出现。
两个Div元件。
一个是有fix的,一个是没有的。
而他们不同的高和宽加上padding的总合却是不一样的。
下图的上方是被修正的,下方则没有。
解决方法我相信这个事情即不需要解释也不需要演示,这应该是大多数人都明白的。
下面是一个很相当怪异的解决方案#element{width: 400px;height: 150px;padding: 50px;}上面的定义也就是说:#element {width: 400px;height: 150px;\height: 250px;\width: 500px}是的,你要原来的长和宽上加上了padding。
但这个fix只会作用于IE了的“怪异模式”,所以你不需要担心在IE6的正常模式下会有问题。
7. 设置min-height和min-widthIE忽略了min-height。
解决方法一这个fix利用了!important 下面是代码片段:#element {min-height:150px;height:auto !important;height:150px;}解决方法二#element {min-height: 150px;height: 150px;}html>body #element {height: auto;}8. Float 布局错误行为Misbehaving使用无table的布局最重要的就是使用CSS的float元件。
在很多情况下,IE6处理起来好像在摸索阶段,有些时候,你会发现很多奇怪的行为。
比如在其中有一些文本的时候。
来看一下下面这个示例:<div id="container"><div id="element">/</div><div id="anotherelement"></div></div>#element, #anotherelement{background: #95CFEF;border: solid 1px #36F;width: 100px;height: 150px;margin: 30px;padding: 10px;float: left;}#container{background: #C2DFEF;border: solid 1px #36F;width: 365px;margin: 30px;padding: 5px;overflow: auto;}期望结果:IE的结果:你可以看到其中的不同了解决方法要解决这个问题没有什么好的方法。
只有一个方法,那就是使用overflow: hidden 。
#element{background: #C2DFEF;border: solid 1px #36F;width: 365px;margin: 30px;padding: 5px;overflow: hidden;}9. 在list项目门的空行先看下面的例子<ul><li><a href="#">Link 1</a></li><li><a href="#">Link 2</a></li><li><a href="#">Link 3</a></li></ul>ul {margin:0;padding:0;list-style:none;}li a {background: #95CFEF;display: block;}期望结果:IE的结果:还好,你可以用下面的方法来解决解决方法一定义height来解决li a {background: #95CFEF;display: block;height: 200px;}解决方法二li a {background: #95CFEF;float: left;clear: left;}解决方法三为li 加上display: inline。