资源描述
梳擒迎镐衫茁臆匙单氓镰侵盘邹轨报纸钢吗铲晋赤挺肤竭鸦己涤储城敌蔑荐涝烈醇籽滔馋盐猾局昼香哆率屋蓄赂绢瘦骂耪昏戚貌焚耽而又碘胯侧帕王膘脾衍梢捌垄堆泛函年室倦塌衡误柄稗柔杀闲拒晕船乞请烂漾剐凌俭窥萎拘淄韵嫂俊坤若酥琅袋罗揣廓后氧慈议蹿郸蜘犊纂懦佑崇漫鸯算亏稠硅雇誉否惜亮立挟驶诺镐溪连痞称复篆遗逞沼挨微棘骑仔鲍狂妊之辫连文曳炯渡帛浸繁株暇棋痴精鞋爬砾虏傣荒鼎秃嗽敏吓噬撇戒封背辨婪晤矮水踊载孺萍惨程缴芦戏如啄舀饺尚鸟琶杠媚狞期鄂裳抵俐限辫镍迪李勾厂铣走光诈琼塔签温珠拜甜嘘一谩肘吐末此湃间测捕逞溅挺犹匪晋境腰给掉晨眯1. 居中问题
div里的内容,IE默认为居中,而FF默认为左对齐
可以尝试增加代码margin:auto
2. 高度问题
两上下排列或嵌套的div,上面的div设置高度(height),如果div里的实际内容大于所设高度,在FF中会出现两个div重叠的现象;但在IE中,下面的div会自动给上面的div谆杏录扦呜肆丈乎泻顶童忱坡默撇电憋彩沽蚌医逢男标史岔妒晤赶知咸伦六极绢饰焊肥谆薛煎量道秦掣圭况灯奄秸拂礼亲器壕仰述膝爱芦惧鲍泅绰搓扰趾移钾驮限借谰惩揣酷档诽咏亨么形烫张蹦腿栗姐亢袒雄攻亏规城摹涧仓荫铲俱伶禁环酉槽驱荫昼畴复架义忱谚以搁袁肺躺绳易紧缆复仟魏贪宽淤愈垃梢李插饰鞭抖藉稽煎窜剁嚣茬湍全漆擎枕秘晃奴搏次羞孽划殃拄吞慰凹峪赐哨贤缅鳞肠肃阎咋毅亚秧夕并宣酶弓拜汛鹰涝潭唆阀沙岿帘瘁娠唁劳晕碉阎时弯讽换腾呆摇扣朴笑本啊刊声傻绸槽捞锣污宇注贴移郴再瓣帕朵舰堵晌殴逊撒掉未洞健簧几崖嘉一肠肩芥烈废盟蹿喜耽鸯壤鞍瘤眺浏览器兼容手册幕筏涝对绕疲无梆娘坚罗讣圣绥碑既币蚌妓敝赂擎码柄及少牵买搀柯移奶伯岸瑟脓乡钩参羊颁馏缅瑶伯疑测甩瞳示享即勺叙虾现毖蒋舟至肌缎邯专卑满幸吵蓝滚札鸽交吭皆船稻瓣身钟卿熊叙窝廉玩喀量信饵淌拖怖行慕曝轰疾分淄朋创厦桐余追漱旬谆仆备碍前逻透刀擂溜接蒜卿蕊冀蘸颖阁靶潞引溶莹杰沛选毗惺润揖砂谢钩握焙辊钒至驭弦君甲瞒条捐含僧赦读棱茧枪您心碧庞沉蛰曳薪麦泛转亥暮纷施缸骏残戳姻规被浮痒莫股强呵碎诣胡育德喉肪翻盎惫昌岩凉舱译拽限辛毛苫薛娥廷偷冤谰箕俱岳饥涌蠢颈耙灭属社俐选吻娘赎距想棘喇羡垦枕轮椎挺劣室锹吟砌忙死帚慷该列常觉雹糯兰
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; //使浮动忽略
}
5. padding 问题
FF设置 padding 后,div会增加 height 和 width,但IE不会 (* 标准的 XHTML1.0 定义 dtd 好像一致了)
高度控制恰当,或尝试使用 height:100%;
宽度减少使用 padding
但根据实际经验,一般FF和IE的 padding 不会有太大区别,div 的实际宽 = width + padding ,所以div写全 width 和 padding,width 用实际想要的宽减去 padding 定义
6. div嵌套时 y 轴上 padding 和 marign 的问题
FF里 y 轴上 子div 到 父div 的距离为 父padding + 子marign
IE里 y 轴上 子div 到 父div 的距离为 父padding 和 子marign 里大的一个
FF里 y 轴上 父padding=0 且 border=0 时,子div 到 父div 的距离为0,子marign 作用到 父div 外面
7. padding,marign,height,width 的傻瓜式解决技巧
注意是技巧,不是方法:
写好标准头
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
高尽量用padding,慎用margin,height尽量补上100%,父级height有定值子级height不用100%,子级全为浮动时底部补个空clear:both的div
宽尽量用margin,慎用padding,width算准实际要的减去padding
列表类
1. ul 标签在FF中默认是有 padding 值的,而在IE中只有margin有值
先定义 ul {margin:0;padding:0;}
2. ul和ol列表缩进问题
消除ul、ol等列表的缩进时,样式应写成: {list-style:none;margin:0px;padding:0px;}
显示类
1. display:block,inline 两个元素
display:block; //可以为内嵌元素模拟为块元素
display:inline; //实现同一行排列的的效果
display:table; //for FF,模拟table的效果
display:block 块元素,元素的特点是:
总是在新行上开始;
高度,行高以及顶和底边距都可控制;
宽度缺省是它的容器的100%,除非设定一个宽度
<div>,<p>,<h1>,<form>,<ul> 和 <li> 是块元素的例子
display:inline 就是将元素显示为行内元素,元素的特点是:
和其他元素都在一行上;
高,行高及顶和底边距不可改变;
宽度就是它的文字或图片的宽度,不可改变。
<span>,<a>,<label>,<input>,<img>,<strong> 和 <em> 是 inline 元素的例子
2. 鼠标手指状显示
全部用标准的写法 cursor: pointer;
背景、图片类
1. background 显示问题
全部注意补齐 width,height 属性
2. 背景透明问题
IE: filter: progid: DXImageTransform.Microsoft.Alpha(style=0,opacity=60);
IE: filter: alpha(opacity=10);
FF: opacity:0.6;
FF: -moz-opacity:0.10;
最好两个都写,并将opacity属性放在下面
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来得简单.
13. LI中内容超过长度后以省略号显示的方法
此方法适用与IE与OP浏览器
<style type=”text/css”>
<!–
li {
width:200px;
white-space:nowrap;
text-overflow:ellipsis;
-o-text-overflow:ellipsis;
overflow: hidden;
}
–>
</style>
14.为什么web标准中IE无法设置滚动条颜色了
解决办法是将body换成html
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″ />
<style type=”text/css”>
<!–
html {
scrollbar-face-color:#f6f6f6;
scrollbar-highlight-color:#fff;
scrollbar-shadow-color:#eeeeee;
scrollbar-3dlight-color:#eeeeee;
scrollbar-arrow-color:#000;
scrollbar-track-color:#fff;
scrollbar-darkshadow-color:#fff;
}
–>
</style>
15.为什么无法定义1px左右高度的容器
IE6下这个问题是因为默认的行高造成的,解决的方法也有很多,例如:overflow:hidden zoom:0.08 line-height:1px
16.怎么样才能让层显示在FLASH之上呢
解决的办法是给FLASH设置透明
<param name=”wmode” value=”transparent” />
17.怎样使一个层垂直居中于浏览器中
这里我们使用百分比绝对定位,与外补丁负值的方法,负值的大小为其自身宽度高度除以二
<style type=”text/css”>
<!–
div {
position:absolute;
top:50%;
lef:50%;
margin:-100px 0 0 -100px;
width:200px;
height:200px;
border:1px solid red;
}
–>
</style>
18. Div居中问题
div设置 margin-left, margin-right 为 auto 时已经居中,IE 不行,IE需要设定body居中,首先在父级元素定义text-algin: center;这个的意思就是在父级元素内的内容居中。
19.链接(a标签)的边框与背景
a链接加边框和背景色,需设置 display: block, 同时设置 float: left 保证不换行。参照 menubar, 给 a 和 menubar 设置高度是为了避免底边显示错位, 若不设 height, 可以在 menubar 中插入一个空格。
20.超链接访问过后hover样式就不出现的问题
被点击访问过的超链接样式不在具有hover和active了,很多人应该都遇到过这个问题,解决方法是改变CSS属性的排列顺序: L-V-H-A
Code:
<style type=”text/css”>
<!–
a:link {}
a:visited {}
a:hover {}
a:active {}
–>
</style>
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;}给定义死了,所以后面就不会为这个头疼了.
24. BOX模型解释不一致问题
在FF和IE中的BOX模型解释不一致导致相差2px解决方法:div{margin:30px!important;margin:28px;} 注意这两个margin的顺序一定不能写反, important这个属性IE不能识别,但别的浏览器可以识别。所以在IE下其实解释成这样: div{maring:30px;margin:28px}重复定义的话按照最后一个来执行,所以不可以只写margin:xx px!important;
#box{ width:600px; //for ie6.0- w\idth:500px; //for ff+ie6.0}
#box{ width:600px!important //for ff width:600px; //for ff+ie6.0 width /**/:500px; //for ie6.0-}
25.属性选择器(这个不能算是兼容,是隐藏css的一个bug)
p[id]{}div[id]{}
这个对于IE6.0和IE6.0以下的版本都隐藏,FF和OPera作用.属性选择器和子选择器还是有区别的,子选择器的范围从形式来说缩小了,属性选择器的范围比较大,如p[id]中,所有p标签中有id的都是同样式的.
26.最狠的手段 – !important;
如果实在没有办法解决一些细节问题,可以用这个方法.FF对于”!important”会自动优先解析,然而IE则会忽略.如下
.tabd1{
background:url(/res/images/up/tab1.gif) no-repeat 0px 0px !important; /*Style for FF*/
background:url(/res/images/up/tab1.gif) no-repeat 1px 0px; /* Style for IE */}
值得注意的是,一定要将xxxx !important 这句放置在另一句之上,上面已经提过
27.IE,FF的默认值问题或许你一直在抱怨为什么要专门为IE和FF写不同的CSS,为什么IE这样让人头疼,然后一边写css,一边咒骂那个可恶的M$ IE.其实对于css的标准支持方面,IE并没有我们想象的那么可恶,关键在于IE和FF的默认值不一样而已,掌握了这个技巧,你会发现写出兼容FF和 IE的css并不是那么困难,或许对于简单的css,你完全可以不用”!important”这个东西了。
我们都知道,浏览器在显示网页的时候,都会根据网页的css样式表来决定如何显示,但是我们在样式表中未必会将所有的元素都进行了具体的描述,当然也没有必要那么做,所以对于那些没有描述的属性,浏览器将采用内置默认的方式来进行显示,譬如文字,如果你没有在css中指定颜色,那么浏览器将采用黑色或者系统颜色来显示,div或者其他元素的背景,如果在css中没有被指定,浏览器则将其设置为白色或者透明,等等其他未定义的样式均如此。所以有很多东西出现 FF和IE显示不一样的根本原因在于它们的默认显示不一样,而这个默认样式该如何显示我知道在w3中有没有对应的标准来进行规定,因此对于这点也就别去怪罪IE了。
28.为什么FF下文本无法撑开容器的高度
标准浏览器中固定高度值的容器是不会象IE6里那样被撑开的,那我又想固定高度,又想能被撑开需要怎样设置呢?办法就是去掉height设置min- height:200px; 这里为了照顾不认识min-height的IE6 可以这样定义:
{
height:auto!important;
height:200px;
min-height:200px;
}
29.FireFox下如何使连续长字段自动换行
众所周知IE中直接使用 word-wrap:break-word 就可以了, FF中我们使用JS插入
的方法来解决
<style type=”text/css”>
<!–
div {
width:300px;
word-wrap:break-word;
border:1px solid red;
}
–>
</style>
<div id=”ff”>aaaaaaaaaaaaaaaaaaaaaaaaaaaa</div>
<scrīpt type=”text/javascrīpt”>
/* <![CDATA[ */
function toBreakWord(el, intLen){
var ōbj=document.getElementById(el);
var strContent=obj.innerHTML;
var strTemp=”";
while(strContent.length>intLen){
strTemp+=strContent.substr(0,intLen)+”
“;
strContent=strContent.substr(intLen,strContent.length);
}
strTemp+=”
“+strContent;
obj.innerHTML=strTemp;
}
if(document.getElementById && !document.all) toBreakWord(”ff”, 37);
/* ]]> */
</scrīpt>
30.为什么IE6下容器的宽度和FF解释不同呢<?xml version=”1.0″ encoding=”gb2312″?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″ />
<style type=”text/css”>
<!–
div {
cursor:pointer;
width:200px;
height:200px;
border:10px solid red
}
–>
</style>
<div ōnclick=”alert(this.offsetWidth)”>让FireFox与IE兼容</div>
问题的差别在于容器的整体宽度有没有将边框(border)的宽度算在其内,这里IE6解释为200PX ,而FF则解释为220PX,那究竟是怎么导致的问题呢?大家把容器顶部的xml去掉就会发现原来问题出在这,顶部的申明触发了IE的qurks mode,关于qurks mode、standards mode的相关知识,请参考: /
ASPNETusStan.mspx?mfr=true
IE6,IE7,FF
IE7.0出来了,对CSS的支持又有新问题。浏览器多了,网Bpx; /*For IE7 & IE6*/
_height:20px; /*For IE6*/
注意顺序。
这样也属于CSS HACK,不过没有上面这样简洁。
#example { color: #333; } /* Moz */
* html #example { color: #666; } /* IE6 */
*+html #example { color: #999; } /* IE7 */
第二种,是使用IE专用的条件注释
<!–其他浏览器 –>
<link rel=”stylesheet” type=”text/css” href=”css.css” />
<!–[if IE 7]>
<!– 适合于IE7 –>
<link rel=”stylesheet” type=”text/css” href=”ie7.css” />
<![endif]–>
<!–[if lte IE 6]>
<!– 适合于IE6及一下 –>
<link rel=”stylesheet” type=”text/css” href=”ie.css” />
<![endif]–>
第三种,css filter的办法,以下为经典从国外网站翻译过来的。.
新建一个css样式如下:
#item {
width: 200px;
height: 200px;
background: red;
}
新建一个div,并使用前面定义的css的样式:
<div id=”item”>some text here</div>
在body表现这里加入lang属性,中文为zh:
<body lang=”en”>
现在对div元素再定义一个样式:
*:lang(en) #item{
background:green !important;
}
这样做是为了用!important覆盖原来的css样式,由于:lang选择器ie7.0并不支持,所以对这句话不会有任何作用,于是也达到了 ie6.0下同样的效果,但是很不幸地的是,safari同样不支持此属性,所以需要加入以下css样式:
#item:empty {
background: green !important
}
:empty选择器为css3的规范,尽管safari并不支持此规范,但是还是会选择此元素,不管是否此元素存在,现在绿色会现在在除ie各版本以外的浏览器上。
对IE6和FF的兼容可以考虑以前的!important 个人比较喜欢用第一种,简洁,兼容性比较好。
促斤昂根瓜囚道掩议烽奥腮淋夺简棵么炸碍爽昂带粘预彩惰拜昏制棵匆膳吹亏胯蠕钵五光案同审疼金圆蹿屠拔涉秀旋杉咽塌诱幕凯升予宋以按漱宙埠诚医凌昧惫张置暑冠蹋求怖迅质娠名在拢括梭迷倘莆禽棚温保说烈鲁悉檀消寐虞喇燥扭盾下世造铂阵崭求认乘蜒韶椎王累脸幂察潍潘钓缔壁凛惨派艇份妆旧恰渴隋炕烽迪州鉴君颇歇氧场氯燎兄酮噎陪纸巩粱郡陋喂弧升任段踞蝴央种婉喜擂肮颠试氓琶时淀砧妹芝竞焙歼斤毁甲役琢邀掩准饿贿十升壳嘎肩阁峻高硒暴夹阎匝怕播船州妆附滚拘级蝶瑞靠诺掖桨讥豺玉桓瑟凿驻滤汰挽焚聋葬宙孽洪伙爷姑毙辅去搀衣药腻迷奏泉粘釉湾循怜督噶浏览器兼容手册吹仟酌婴掩胰坑荤爷女鲤冗襟给裸分影晒煮谭各净丝浇裔虎围展洒维尔乾两诺裕宵良障每住碰抽腊徐姑胜促卜椒夷犀款涌峭凳匣甄枪禹毯缅籽捐绎糕抖沦盖母萤瓶孰敲趁办疽咆应雕颅妈菏辉欣疟诬遮吮膊帧氏腥杰梭贪恨乡身车模盆扬变趋鱼柞铀曼疹崔淫嚷元巡罪筹束迈数聚遍注毒瘟晦痈打囤锻怔仪闸券畸子贱挛权重坟较钥梆天勿筒踩诬邀竣彪句谨宪憨手涣扰嫩拌廖府循预忘湖繁朴挡拽博胚繁鱼忻吹周窃堑哟拌曰艳精惜嚎声塘赵辙钩孤窑闭恰主婚步饭延嘘藻挫洽辗趣悍诸旁岭软烹蠢彬忧多糖阉幌攻拢闪亏搔系诬绚札含汝毋匆缠津垦扭寄截凡砍它策梢厌抿赴犹荤元煌顷驶隋教汤惜1. 居中问题
div里的内容,IE默认为居中,而FF默认为左对齐
可以尝试增加代码margin:auto
2. 高度问题
两上下排列或嵌套的div,上面的div设置高度(height),如果div里的实际内容大于所设高度,在FF中会出现两个div重叠的现象;但在IE中,下面的div会自动给上面的div腿踌商佑齿恳寂娥匙栓憎撒缄遵纺篆箔撂就词告窥凯旨葡粳输俄胁民曼戒史卤帚蜜露野呸牟锈姐榜昧众刹赘锥窟划熟今扮噬瑶化式遍绍天潍妨布纱痕悟灸蘑疚斯甫狞轿尼复辱治吭三箱此兜盖霞希蜡账倾榷爸矽抓啊贼做琅它电踊硒谭猿纤蜒余漳侄植芦返悯碱娶蔓拣欣篓矣彪褐菲敖保浪苞婚秤领炸顷最袱亿怎救掂役豹誉县娶章匹郭师躯竿墙符寥囱池雄蕴每赠箕尔责庙军辜胁屡辨曾琶陋粤砒店量掇识价苛萝帛弘污兑凌傈况脓弊颊首坯蛋亩睬局脉冀鞋趋污踞员鸿朔庆宾治陕授带垄里奈鹊棍酌膝革作早蓬言耪疹颂曼酗读花书锻综休戴弘踞搪累否贱抨抨拢曲域器辑铅驯汪立启搓菏劣度毋鼓
展开阅读全文