css bug

测试IE6及IE6+
推荐:良心总结

  • IE8中input[button|submit]不能用margin:0 auto;居中
    div{ width:100px;margin:0 auto;}
    对于块级元素,当我想让他居中时,我会这样做,先设置宽度,再设置自动边距。因为如果不设置宽度,他将占据一行,就谈不上居中布局中啦。
    a{
    display: block;
    margin: 0 auto;
    width: 100px;
    }
    对于行内非替换元素,当我想让他居中时,我发现①他设置不了宽度②设置自动边距无反应。解决办法:将行内非替换元素设为块级元素,该元素会立马将宽度填充“父元素的当前宽度”,当前两个字,需要着重理解。然后就和对待块级元素一样的办法,设置自动边距就有效果啦。
    div input[type=button]{
    width: 200px;
    margin: 0 auto;
    display: block;
    border: 0;
    }
    对于行内替换元素,当我想让他居中时,就有差异啦。他们的默认display:inline-block,所以宽度,高度都可以设置。
    1、对于[button||submit]的行内替换元素,首先:这些元素同行内元素一样需要转换为块级元素,但是,不同的是,他们的宽度,并不会充斥父元素。然后通过设置自动边距,就会达到居中的效果。
    2、对于[button||submit]的行内替换元素,其实要想达到居中的效果,同1的做法一样,但是,在IE8会出现bug,为了兼容IE8,需要为该元素设置宽度,就可以很好地兼容。
  • body{overflow:hidden;}没有去掉IE6、7的滚动条
    这个bug,怎么说呢,一般的网页内容肯定是需要翻页的,需要拖动滚动条的,所以这个bug有没有必要解决,就看个人在网站设计时,的需要了。
    解决办法:
    html{ overflow:hidden}

haslayout是IE的专有属性,当该值为true时,他可以自己控制自己自身的内容。现代浏览器,IE8+都不会考虑这个属性。举个例子。
我们希望为行内元素设置宽高,习惯上,我们会将其转换为块级元素,然后再设置。但是IE6/7只需要通过启动hasLayout的值为true就可以为行内元素布局。启动该属性的属性为:display:inline-block width\height positon:ansolute float zoom:1
对于行内元素,只需要
a{*zoom:1;width:100px;height:100px}
这样一想其实有没有这个属性也都完全可以实现么,但是就是因为这个属性的出现,所以就带来了一系列的问题。

  • IE6/7hasLayout的标签拥有高度
    在IE6、7中如果触发一个元素的hasLayout会使他拥有高度,即使内容为零。
    div{ width: 100%;*height: 0;_overflow:hidden;}
    设置完宽度后,会触发hasLayou,然后需要做的就是设置高度为0,设置溢出为隐藏。
  • IE6、7当:form>[haslayout]元素有margin-left时,子元素中的[input|textarea]出现2×margin-left。
    form div{
    width: 100%;
    margin-left: 100px;
    }
    input,textarea{//解决办法
    *margin-left: -100px;
    }
  • IE6、7 中4条边框,其中一条宽度明显大于其他三条边,效果误差
    p{
    width: 100px;
    border: 1px dotted #000;
    border-left-width:4px ;
    }
    IE9

    IE678.jpg

    解决办法:
    <div><p>ddededede</p></div>
    p{
    width: 100px;
    border: 1px dotted #000;
    border-left-width:0px ;
    }
    div{
    border-left: 4px dotted #000;
    }
    解决.jpg
  • ** IE:6、7当子元素有position:relative的时候,父元素设置overflow:[hidden|auto]相当于给子元素设置overflow:visible**
    解决办法:给父元素设置position:relative
  • IE:7:hover伪类不能改变有position:absolute的子元素的left与top值
    .con:hover .vise{
    left: 0;
    }
    解决办法:
    1、把top/left的值设置成初0%外所有百分值。
    2、或添加一个margin-[所有方向]除零与0%外所有值。
    .con:hover .vise{
    left: 0;
    margin-left: 1px;
    }
    但是IE6不支持这个选择器。
  • IE8:focus+selector{}选择器失败
    :focus+p{
    font-weight:bold ;
    font-size: 200%;
    }
    当一个元素获得焦点后,让他的下一个兄弟元素进行加粗与放大。但是在IE6、7中均不能实现。在IE8中只有当元素获得焦点又失去焦点时,才显示。解决办法:
    :focus+p{
    font-weight:bold ;
    font-size: 200%;
    }
    :focus{}
    在之后在添加一个空选择器。
  • 列表中混乱的浮动:在list中浮动图片时,图片溢出正常位置,或没有list-style
    解决办法:
    1、li{overflow:hidden}包围列表内的浮动元素。
    2、li{background:url() left norepeat 0.5em}左置为图标。
    3、li{padding-left:2em;}设置左边的内边距,流出背景图片显示。
    这个问题比较普遍,就不区分浏览器啦。
  • th不会继承上级元素的text-align
    这个我在IE8以上的IE浏览进行测试,发现th内的文本总是居中。
    table{text-align:left};th{text-align:inherit}
  • 样式(link、style、@import)的个数
    在IE6~9这几版浏览器中只支持31个这样的样式标签,到第32个就不支持啦。
  • IE7:hover时若background-color:#fff失效
    这个我测试之后,发现IE7是可以的,可能我的ietester有问题,不知道啊,但是原文作者给的解决方法有两个
    1、写成background
    2、#fff或#fffffff改为其他颜色。
    IE6不支持这个选择器
  • IE6、7忽略>后有注释的选择器
    html>/**/body div{……}
    IE6、7浏览器渲染时,忽略注释后面的选择器,导致结果渲染不到IE6、7
  • IE6中PNG图片中的颜色和背景色的值相同,但显示不同
    div{ height:100px;background: url(../../../LG/image/arr.png) red no-repeat;}
  • IE8使用伪类[first-line|first-letter]属性的值中出现!important会使属性失效
    解决办法:那就不用呗,专家建议,说还是少用比较好。
    这个选择器IE6不支持这个选择器
  • IE6 :first-letter失效
    这个测试时,我的IEtester是不是真的有问题,我的IE6根本就不支持:first-letter这个伪类。刚刚查了w3c说所有主流浏览器都支持这个,还有刚才那个hover也都支持,莫非我的ietester真的出了问题。
    直接解决办法吧:h1,p:first-letter{……}
    原文作者描述出现问题的原因是p:first-letter,h1{……}
  • IE6position:absolute元素中,a:display:block,在非:hover时,只有文本可以点击
    解决办法:background:url(任何页面中已经缓存的文件链接),不推荐,因为会增加以下http请求。
  • IE6、7在ul>li>a中,li不设置float,a设置display:block;float:left,li不水平对齐
    解决办法:给li设置display:inline;或float方向。
  • IE6dt,dd,li{background:red}背景失效
    这个我的IE6也没出问题,估计真的是有毛病,大家可以自己测试。
    解决办法:dt,dd,li{background:red;position:relaitive}
  • IE6/7/8<noscript>元素在启用js的情况下显示了样式
    利用js为<noscript>动态添加display:none样式
  • IE6、7、8使用filter处理的透明背景图片的透明部分不可点击
    解决办法:把background:none变为background:url(#)链接到图片与本身之外的任何文件。
  • IE li内元素偏离baseline向下偏离
    这个最头痛,因为一般我都是将li设置浮动,所以基本上就没有考虑过这个。大家测试一下就知道了,在IE上会吓一跳的
    解决办法就是
    li{
    float: left;
    width: 100%;
    }
    li a{
    display: block;
    background: red;
    }
    这样就能达到最简单的垂直菜单的效果。
    但是水平菜单时,
    li{
    float: left;
    padding-left:2px ;
    }
    li a{
    display: block;
    padding:0 20px;
    background: brown;
    height: 40px;
    _float:left;
    line-height: 40px;
    color: #fff;
    text-decoration: none;
    }
    这个之前做导航的时候发现的
  • 在IE6、7中,当为ul与ol设置宽度后,会导致list-style不显示
    解决办法:给li添加margin-left,留出地方显示,不是给ul啊
  • IE6、7图片不能垂直居中
    div {
    width: 150px;
    height: 155px;
    line-height: 155px;
    border: 1px solid #000;
    background: #f00;
    text-align: center;
    }
    img {
    vertical-align: middle;
    }
    span {
    display: inline-block;
    }
    解决办法:在img标签后,加一个空标签,并使他拥有布局。
    <div>
    <img src="../../../LG/image/ff8080814ae248bd014ae65dcc97004e.jpg"/>
    <span id=""></span>
    </div>
  • ** IE6、7、8不能自定义指针样式**
    引起兼容问题的写法:
    div{
    height: 500px;
    width: 500px;
    margin: 20px auto;
    cursor: url(cursor.cur), crosshair;
    background: #f00;
    }
    解决办法:给指针文件设置绝对路径
    div{
    height: 500px;
    width: 500px;
    margin: 20px auto;
    cursor: url(/demos/cursor/b/cursor.cur), crosshair;
    background: #f00;
    }
  • IE6背景溢出,拖动滚动条后显示正常。
    这个说的太含糊啦,我还是上图吧
    <div id='container' style="background: #abc;">
    <p id='bugger'>floated</p>
    <p>
    ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffddddddddddddddddddddd
    </p>
    <div style="clear: both;"></div>
    </div>
    <div>give me</div>
    #bugger{float:left;backgroung:red}
IE6是这样呈现的.jpg
IE6拖动左边垂直滚动条.jpg

解决办法:
#container:{overflow:hidden;zoom:1;}

  • IE6中将height与width当做min-height与min-width渲染
    解决办法:_overflow:hidden;
  • IE6双倍边距
    这个是最经典的IE6最经典的bug之一。
    出现在父元素与子元素之间,子元素同时设置了浮动与边距属性,那么IE6中子元素会出现双倍边距的现象。
    解决办法:为浮动元素设置为行内元素
  • IE6、7margin负值隐藏,haslayout的父元素内非haslayout元素,使用负边距,超出父元素部分可见
    <div id='container'>
    <div id="inner">
    <p>1</p> <br />
    <p>2</p> <br />
    <p>3</p> <br />
    </div>
    </div>
    #container{
    margin: 2em auto 0.5em;
    padding: 2em 0;
    width: 80%;
    border: 1px solid red;
    }
    #inner{
    margin: -4em 2em 0;
    }
  • 在IE6、7中子元素超出父元素的部分不可见。
    这个出现的原因是,为父元素设置了宽度后,导致父元素拥有布局,隐藏了超出父元素的内容。
    解决办法:为子元素赋予布局,然后设为相对定位。
  • IE6中两个浮动元素,被放在一个固定宽度的容器内,且二者都被固定了宽度,这时候左边浮动元素内布置斜体内容,会将右边浮动元素挤下去
    原因:斜体元素靠近在靠近右边界是,会由于自身斜体原因,扩出边界,进而导致在IE6中宽度会自增,导致把右边浮动元素挤下去。
    解决办法:为斜体所在容器设置:overflow:hidden.
  • IE6/7float元素后可能会有3px间隔
    当一个元素设置了宽高后,再设置内部元素浮动,连续几个这样的设置,有么能造成他们之间有3px的间隔。
    解决办法:为包围浮动的元素设置浮动,然后为了保持依旧的垂直排列,可以使的浮动元素的宽度为100%。
  • IE6/7text-align
    <div style="text-align: center; background: blue;">
    ddd
    <p style="width: 100px;background: red;">dd</p>
    </div>
    在现代浏览器中,p里面的内容会居中,但是p这个块级元素并不会居中。
    IE6、7,P这个块级元素也被居中啦。
    解决办法,设置p浮动。
  • IE6、7中li内放置内容后,会在自身高度外流出一些空白
    解决办法:overflow:hidden;
  • IE6/7存在浮动元素折行
    css2.1中说:如果一个行内元素浮动,则该元素浮动后,顶部与之前所在行对齐。
    在现代浏览其中,就是照这样的标准渲染的,如果在一对行内元素后,来浮动一个块级元素,该块级元素也会与行内元素所在行的顶部对齐。
    但是IE6、7中,却表现出,折行之后又浮动的现象。
    触发原因:同一个复容器内,有多个行内元素,某些为浮动,某些为非浮动,当浮动的子元素不都是位于非浮动的子元素之前时,会触发折行。
    解决办法:1、将浮动元素放在非浮动元素之前。(推荐)
    2、使用绝对定位,会导致破坏文档结构(不推荐)
    3、使用csshack,利用负边距实现。

我目前见过的,和在之前推荐的那篇文章里学到的,大多,都在这里啦,总结:实践出真知
明年就要开始找工作啦,作为应届生,没有经验,只能多看书,看那些有经验的人的总结!
fighting!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,629评论 1 92
  • 学习CSS的最佳网站没有之一 http://www.w3school.com.cn/tags/index.asp ...
    Amyyy_阅读 916评论 0 1
  • •前端面试题汇总 一、HTML和CSS 21 你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? ...
    Simon_s阅读 2,199评论 0 8
  • 一:在制作一个Web应用或Web站点的过程中,你是如何考虑他的UI、安全性、高性能、SEO、可维护性以及技术因素的...
    Arno_z阅读 1,087评论 0 1
  • 都说女儿是父母的小棉袄,可女大真是不中留。自从在外工作以来就还少回老家。有了孩子,安了小家,回去与家人相聚的时间更...
    吉小舒阅读 214评论 2 12