IE6的bug的8个技巧

2009/12/30 15:09  |  分类:Css

1. 设置position: relative

将一个元素设置为”position:relative”可以解决很多问题,特别是你曾经遇到隐藏的或对齐诡异的盒子。

2.将浮动元素设置为display:inline

具有margin属性的浮动元素可能引起的IE6双倍margin问题,比如,你为一个元素指定margin-left为5px,但是IE6中实际上却表现为10px。”display:inline”将解决这个问题,当然,方法也不是只有这一个。

3. 将一个元素设置为hasLayout

很多IE6(和IE7)的渲染问题可以通过设置元素的hasLayout来解决。 用来确定相对于其他元素,内容是如何布局和定位的。如果你需要设置一个inline元素(比如一个链接)为block元素,或者是应用透明效果。

最简单的设置hasLayout的方法是为CSS设置一个高度或宽度(zoom也可以用,但是zoom并不是CSS标准的一部分)。我们推荐设置实 际尺寸,但是问题是这是不现实的,你可能需要使用”height:1%”。如果父元素并没有设置高度,该元素的实际高度并不受影响,而且这个时候 hasLayout已经被启用。

4. 修正重复文字bug

复杂的布局可以触发在浮动元素的最后一些字符可能出现在出现在清除元素下面的bug。这里有几个解决方法,有些是完美的,但是做一些反复试验也是必须的:

  • 确保所有的元素使用”display:inline;”
  • 在最后一个元素上使用一个”margin-right:-3px;”
  • 为浮动元素的最后一个条目使用一个条件注释,比如:
    1
    <!--[if !IE]>Put your commentary in here...<![endif]-->
  • 在容器的最后元素使用一个空的div(它也有必要设置宽度为90%或类似宽度。)

5. 使用!important 或高级选择器来区分IE6

不使用传统Hack或在额外文件中的条件CSS的方法,写出特别针对IE6的可行的代码也还是有可能的。比如最小高度可以通过这段代码来定义:

1
2
3
4
5
#element {
 min-height: 20em;
 height: auto !important; /* 所有浏览器都理解这段代码 */
 height: 20em; /* IE6 错误的使用这个值 /*
}

全文阅读 »

[ 总结]浏览器兼容手册

2009/11/23 09:42  |  分类:Css

浏览器兼容手册
1. 居中问题
div里的内容,IE默认为居中,而FF默认为左对齐
可以尝试增加代码margin:auto
2. 高度问题
两上下排列或嵌套的div,上面的div设置高度(height),如果div里的实际内容大于所设高度,在FF中会出现两个div重叠的现象;但在IE中,下面的div会自动给上面的div让出空间
所以为避免出现层的重叠,高度一定要控制恰当,或者干脆不写高度,让他自动调节,比较好的方法是 height:100%;
但当这个div里面一级的元素都float了的时候,则需要在div块的最后,闭和前加一个沉底的空div,对应CSS是:
.float_bottom {clear:both;height:0px;font-size:0px;padding:0;margin:0;border:0;line-height:0px;overflow:hidden;}
3. clear:both;
不想受到float浮动的,就在div中写入clear:both;
4. IE浮动 margin 产生的双倍距离
#box {
float:left;
width:100px;
margin:0 0 0 100px; //这种情况之下IE会产生200px的距离
display:inline; //使浮动忽略
}
全文阅读 »

【转】IE6下关于绝对定位的BUG

2009/11/04 16:44  |  分类:Css

在前端开发中,经常会用到css的position:absolute来使层浮动,前通过left,top,right等属性来对层进行定位,但ie6对left,top,right等属性的解释和ie7,ie8及firefox、chrome等不一致。
在父层使用position:relative;和padding(当然0值除外)后,ie6中层的定位起始坐标是从padding后的位置算起,而其他则从层的真实位置算起,而非被padding改变后的那个位置。这点造成使用position:absolute进行层定位时ie6与其他浏览器的表现不一样。
这里就不截图了,具体可以看本文底部链接是前段大牛,码头的博客地址!
目前解决办法,使用csshack,_left针对ie6进行重设。

由 愚人码头 撰写  http://www.css88.com/archives/1584

10个很有用但是IE浏览器不支持的CSS属性

2009/07/20 21:57  |  分类:Css

尽管我们对CSS已经非常熟悉,应付日常的工作或在各个浏览器中搞定CSS的兼容性已经很得心应手,但是并不是所有的CSS属性都是那么的常用。在本文中,让我们看看10个可能非常有用但是在该死的IE浏览器中(主要是IE6和IE7)却不能使用的CSS属性。看完了该文,你可能会更加讨厌IE浏览器吧。

(请注意,本文发表时尚未测试这些属性在IE8中的表现。我稍后会做一个测试页面,用来测试这些属性在所以IE浏览器中的表现。)
1. Outline在调试CSS问题的时候,我常常在指定元素上添加border来精确的查看该元素会发生什么并帮助确定问题的来源。这常常是有效的,因为它可以在布局上给我更加具体的可视性。但是如果是块级元素,这可能会发生某些错误——在任何块级元素上添加1px的边框很可能会影响到布局,它会让这个元素的宽度额外增加2px。
outline 属性是完美的替代者,因为它可以在不影响文档流的情况下呈现该对象。但是IE6 和IE7 不支持 outline 属性,所以,它不能在这两个浏览器中用于调试。
2. Inherit (值)在CSS开发中有很多这样的例子:通过在特定元素上设置某些样式来告诉该元素来“继承”它父级元素的所有已添加的属性,这样你就可以避免相当多的键盘输入。
这可以通过设置 inherit 来很容易的实现。这可能很有用。比如,当重写 background 属性的时候,常常会有很多的文字在该属性中(色彩、图片的URL地址、位置等)。所以,与其重新写这些值,你可能仅仅想要考虑中的元素和其父级元素有相同的背景属性,一个 inherit 值就可以搞定一切——这显然大大的节省了键盘输入。
不幸的是, inherit 值在IE6和IE7不被支持(除了用于 direction (文字方向) 和 visibility 属性)。
某人说,代码就像女人的裙子——越短越好,看来IE会阻碍我们这个愿望的实现。
全文阅读 »

CSS在IE浏览器下条件注释详解

2009/06/29 14:44  |  分类:Css

前端的朋友肯定会对这个不是很陌生,因为工作中汇经常用到这个,当然,也是有利有弊,看个人平时的习惯写法了。

IE条件注释是在IE5.0/Win以后才被支持的,一般用于hack。既然是“IE”条件注释,所以只有IE才能识别才有效果。IE条件注释是用来判断IE浏览器版本的。其基本结构和HTML的注释()是一样的,因此IE以外的浏览器将会把它们看作是普通的注释而完全忽略它们,而IE则会根据条件显示里面的代码内容。

IE条件注释的基本语法有:

<!--[if IE]>
这段文字只有IE浏览器才可以显示
<![endif]-->

全文阅读 »

Firefox和IE的技巧集合 (下)

2009/06/25 15:36  |  分类:Css

21. 游标手指cursor

cursor: pointer 可以同时在 IE FF 中显示游标手指状, hand 仅 IE 可以

22.UL的padding与margin

ul标签在FF中默认是有padding值的,而在IE中只有margin默认有值,所以先定义 ul{margin:0;padding:0;}就能解决大部分问题

23. FORM标签

这个标签在IE中,将会自动margin一些边距,而在FF中margin则是0,因此,如果想显示一致,所以最好在css中指定margin和 padding,针对上面两个问题,我的css中一般首先都使用这样的样式ul,form{margin:0;padding:0;}给定义死了,所以后面就不会为这个头疼了.

全文阅读 »

Firefox和IE的技巧集合 (中)

2009/06/24 13:01  |  分类:Css

11.如何对齐文本与文本输入框

加上 vertical-align:middle;
<style type=”text/css”>
<!–
input {
width:200px;
height:30px;
border:1px solid red;
vertical-align:middle;
}
–>
</style>

12.web标准中定义id与class有什么区别吗

一.web标准中是不容许重复ID的,比如 div id=”aa” 不容许重复2次,而class 定义的是类,理论上可以无限重复, 这样需要多次引用的定义便可以使用他.

二.属性的优先级问题
ID 的优先级要高于class,看上面的例子

三.方便JS等客户端脚本,如果在页面中要对某个对象进行脚本操作,那么可以给他定义一个ID,否则只能利用遍历页面元素加上指定特定属性来找到它,这是相对浪费时间资源,远远不如一个ID来得简单.

全文阅读 »

Firefox和IE的技巧集合 (上)

2009/06/23 22:36  |  分类: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为
#imfloat{
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;

全文阅读 »

IE和FF中css透明度的继承问题

2009/04/15 22:15  |  分类:Css

我想大家在工作或者学习的时候也同样会遇到这样的问题。就是这个讨厌的透明度继承的问题,具体问题表现就是,当我们给外面的父容器设置的透明的时候,厘米那包括的子容器也就继承的父容器的透明度。
其实办法也有几种,下面就是说一下其中的两个解决办法:
1. 如果是IE浏览器,就可以给子容器添加一个相对定位来解决,也就是:position:relative;如果是火狐firefox等就可以使用png:background:url(images/png.png);
然后单独设置IE的背景:*background:#fff; (*号只有IE可识别)
2.其实第二种办法也是见到的用的最多大的,首先,设置3个容器,让需要透明的容器和不透明容器保持兄弟关系。然后,通过父容器控制大小让两个兄弟容器通过定位保持一个看似父子的排列方式。这样就另辟蹊径的解决了这个问题。
可能还有其他的更好的办法,也希望大家一起来研究。

按钮在IE中被拉伸

2009/04/02 23:01  |  分类:Css

其实工作中大家经常会遇到这种问题,就是用系统自带的按钮的时候,在IE下会被两边拉伸。这个问题在其他浏览器中应该问题不大。
大家在写按钮(input、button)的时候会发现在 IE 下:
1. 随着字数的增多,两边的间距也会越来越大。
2. 在 WIN 的XP 风格下,当字数很多时,两边还会出现严重的锯齿。
到底是什么原因呢?
1、IE 在按钮的 value 值每增加 4 个字节(汉字为 2 个)时,就会在按钮的两边产生总共一个字节的内边距宽度。
2、IE 的按钮(XP 风格)默认样式是一个固定尺寸的圆角矩形图片作背景,所以一旦按钮变宽变高后,这个固定尺寸的圆角矩形图片的边缘自然就会出现“拉毛”的现象了。

对于第二个问题我们暂时没办法去解决,除非 WIN 系统自己修复 BUG ,但对于第一个问题 ,我们还是可以修复的。

最终的修复代码如下:

input.button {
padding: 0 .25em;
width: auto;
_width: 0;
overflow:visible !ie;
}

这个问题http://www.planabc.net/2008/11/12/the_stretched_buttons_bug/这里写的很清楚了,我就不班门弄斧了。有兴趣的朋友可以去看看。

Pages: 1 2 3 Next