CSS HACK 及常见问题

1、CSS经常使用hackcss

1.方式一:条件注释法html

这种方式是IE浏览器专有的Hack方式,微软官方推荐使用的hack方式。举例以下浏览器

    只在IE下生效
    <!--[if IE]>
    这段文字只在IE浏览器显示
    <![endif]-->
    
    只在IE6下生效
    <!--[if IE 6]>
    这段文字只在IE6浏览器显示
    <![endif]-->
    
    只在IE6以上版本生效
    <!--[if gte IE 6]>
    这段文字只在IE6以上(包括)版本IE浏览器显示
    <![endif]-->
    
    只在IE8上不生效
    <!--[if ! IE 8]>
    这段文字在非IE8浏览器显示
    <![endif]-->
    
    非IE浏览器生效
    <!--[if !IE]>
    这段文字只在非IE浏览器显示
    <![endif]-->

2.方式二:类内属性前缀法spa

常见的前缀符号:*(ie 7/6)          +(ie 7)            _(ie 6)     code

常见的后缀符号:\0(ie 8/9/10)     \9\0(  ie 9/10)     !important(只有ie6不识别)orm

<div class="div1"></div>
div{height:500px;}
/*请注意如下代码顺序不能有错,不然效果会出错*/
.div1{
    background-color:red\0;     /* ie 8/9/10 */
    background-color:blue\9\0;  /* ie 9/10*/
    *background-color:yellow;   /* ie 7/6*/
    _background-color:gray;     /* ie 6*/
}
/*特意为IE10写的样式效果*/
.ie10 .div1{
    background:#000;
    color:#fff;
}

2、常见兼容技巧htm

1.在公共样式中把body,ul,form等标签样式reset,能够避免不少没必要要的问题。对象

2. 居中问题. blog

1).垂直居中.图片

将line-height 设置为当前div相同的高度,再经过vertical-align: middle.( 注意内容不要换行.)

2).水平居中.

margin: 0 auto;(固然不是万能)

你能够把html的body以内任何项目置于中,该项目将自动得到相等的左右边界值从而保证了居中显示。不过,这在IE6

以前版本的浏览器中仍然有问题,将不会居中,所以必须

修改以下:

body { 

text-align: center; 

} 

#content { 

text-align: left; 

width: 700px; 

margin: 0 auto; 

}

对body的设定将致使主体内容居中,可是连全部的文字也居中了,这恐怕不是你想要的效果,为此#content 的div还要指定一个值:text-align: left

3.cursor: pointer 能够同时在IE FF 中显示游标手指状,hand 仅IE 能够

4.若是文字过长,则将过长的部分变成省略号显示:IE5,FF无效,但能够隐藏,IE6有效<DIV STYLE=“width:120px;height:50px;border:1px solid blue;overflow:hidden;text-overflow:ellipsis”> <NOBR>就是好比有一行文字,很长,表格内一行显示不下。Phontol.com</NOBR> 固定宽度汉字截断:overflow:hidden;text-overflow:ellipsis;white-space:nowrap;(不过只能处理文字在一行上的截断,不能处理多行。)(IE5以上)FF不能,它只隐藏。

5.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;
}

6.浮动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;

7.为何FF下文本没法撑开容器的高度

标准浏览器中固定高度值的容器是不会象IE6里那样被撑开的,那我又想固定高度,又想能被撑开须要怎样设置呢?办法就是去掉height设置min- height:200px; 这里为了照顾不认识min-height的IE6 能够这样定义:

{ 
height:auto!important;
height:200px; 
min-height:200px; 
}

8.清除浮动

.hackbox{ display:table; //将对象做为块元素级的表格显示}或者.hackbox{ clear:both;} 或者加入:after(伪对象),设置在对象后发生的内容,一般和content配合使用,IE不支持此伪对象,非Ie 浏览器支持, 所 以并不影响到IE/WIN浏览器。这种的最麻烦的......

#box:after{ 
 content: ".";
 display: block;
 height: 0;
 clear: both;
 visibility: hidden;
}

9.DIV浮动  IE文本产生3象素的bug

左边对象浮动,右边采用外补丁的左边距来定位,右边对象内的文本会离左边有3px的间距.

#box{ 

float:left; 

width:800px;}#left{ 

float:left; 

width:50%;}#right{ 

width:50%;}*html 

#left{ margin-right:-3px; //这句是关键

}

HTML代码

<div id="box"> <div id="left"></div> <div id="right"></div></div>

10.属性选择器(这个不能算是兼容,是隐藏css的一个bug)   
   p[id]{}div[id]{} 
   这个对于IE6.0和IE6.0如下的版本都隐藏,FF和OPera做用 
    属性选择器和子选择器仍是有区别的,子选择器的范围从形式来讲缩小了,属性选择器的范围比较大,如p[id]中,全部p标签中有id的都是一样式的.

11.IE捉迷藏的问题

当div应用复杂的时候每一个栏中又有一些连接,DIV等这个时候容易发生捉迷藏的问题。

有些内容显示不出来,当鼠标选择这个区域是发现内容确实在页面。

解决办法:对#layout使用line-height属性或者给#layout使用固定高和宽。页面结构尽可能简单。

12.高度不适应

高度不适应是当内层对象的高度发生变化时外层高度不能自动进行调节,特别是当内层对象使用margin 或paddign 时。

例:<div id="box"> <p>p对象中的内容</p> </div>

CSS:

#box {background-color:#eee; }

#box p {margin-top: 20px;margin-bottom: 20px; text-align:center; }

解决方法:在P对象上下各加2个空的div对象CSS代码:.1{height:0px;overflow:hidden;}或者为DIV加上border属性。

12.FF 支持!important, IE 则忽略, 可用!important 为FF 特别设置样式

相关文章
相关标签/搜索