首页 > 代码库 > web前台汇总2

web前台汇总2

各浏览器CSS hack兼容表

 IE6IE7IE8IE9FirefoxChromeSafari
!important YY Y  
_Y      
*YY     
*+ YY    
\9   Y   
\0  YY   
nth-of-type(1)  Y  YY

IE的if条件Hack <!--[if IE]> Only IE <![endif]-->所有IE都可以识别 <!--[if IE 5.0]> Only IE 5.0 <![endif]-->可以判断版本 <!--[if gt IE 5.0]> Only IE 5.0+ <![endif]-->大于指定版本 <!--[if lt IE 6]> Only IE 6- <![endif]-->小于指定版本 <!--[if gte IE 6]> Only IE 6/+ <![endif]-->大于等于指定版本 <!--[if lte IE 7]> Only IE 7/- <![endif]-->小于等于指定版本

1.<meta http-equiv="x-ua-compatible" content="ie=7" />所有高于IE7的版本运行在IE7.0版本。

2. FF下给 div 设置 padding 后会导致 width 和 height 增加所以尽量不要用padding

3.IE8以上、chrome、firefox、opera、safari等使用margin-left:auto,margin-right:auto;可以设置最外层元素实现网页居中。IE8以下需要设定body居中,首先在父级元素定义text-algin: center;这个的意思就是在父级元素内的内容居中。  

4.清除浮动float,<div style="clear:both;">不过会占用位置。

5. FF 和 IE 对 BOX 理解的差异导致相差 2px 的,还有设为 float的div在ie下 margin加倍等问题.

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

7.IE6不支持图片半透明,支持PNG8全透明。

8.wekit内核浏览器,例如chrome、safari,取消textarea拖动变大textarea { resize: none;},取消获的焦点边框样色input:focus,textarea:focus {outline: none;}

9.wekit上传元素file,默认是button+label,IE是text+button,这个只能编写javascript插件实现统一样色。

10.<base target="_blank" />设置整个页面链接默认的打开方式。

11.ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值所以先定义 ul{margin:0;padding:0;}就能解决大部分问题,所以最好设置一个默认的样色。

12.chrome在table的将一列隐藏时,那一列会占1px像数,FF没有此问题。

13.IE8及一下版本使用VML绘图,IE9,chrome,firefox,safari,opera支持SVG、canvas,不过支持标准不一,IE8及以下可以使用google的excanvas.js库实现canvas,不过功能少。

1、如何定义高度很小的容器?
在IE6下无法定义小高度的容器,是因为有一个默认的行高。 列举2种解决方案:overflow:hidden | line-height:0
2、图片下方出现几像素的空白间隙?
这个也有多种解决方案,如将img定义为display:block,或定义父容器为font-size:0,个人更推荐使用vertical-align的方式,它的值可以是text-top | text-bottom | middle等
3、IE6双倍margin的BUG?
display:inline
4、文本垂直方向对齐文本输入框?
设置input为vertical-align:middle,textarea也是如此
5、为什么在web标准下ie无法设置滚动条的颜色?
将设置滚动条颜色的样式定义到html标签选择符上即可
6、如何让层在falsh上显示?
不可以,除了少数几个级别很高的家伙除外。 但可以将flash设置为透明,这时层就会透过falsh显示,近似于覆盖在flash之上了,如: <param name="mode" value="http://www.mamicode.com/transparent" />
7、如何使得文字不换行?
定义包含文字的容器为:width:xxx;white-space:nowrap;
8、ie中如何让超出宽度的文字显示为省略号?
定义容器为:overflow:hidden;width:xxx;white-space:nowrap;text-overflow:ellipsis;
9、如何在点文字时也选中checkbox?
<input id="test" type="checkbox" value="http://www.mamicode.com/on" /><label for="test">测试</label>
10、一个div为margin-bottom:10px,一个div为margin-top:5px,为什么2个div之间的间距是10px而不是15px?
这种情况浏览器会自动进行margin重叠,只显示较大的margin值 解决方案:只设置其中一个div的margin为15px
11、如何解决ie下当li中出现2个或以上的浮动时,li之间产生的空白间隙?
设置li的vertical-align,值可以为top | text-top | middle | bottom | text-bottom
12、如何使得英文单词不发生词内断行?
word-wrap:break-word;
13、为什么被访问过的链接颜色没有变化?
定义链接的样式时,需要按照:link,:visited,:hover,:active这样的顺序,可以使用LoVe HAte(喜欢讨厌)来记忆
14、单行文本如何垂直居中?
height:xxx;line-height:xxx; 高和行高相同即可
15、已知高度的容器如何在页面中水平垂直居中?
参阅:http://blog.doyoe.com/article.asp?id=74
16、未知尺寸的图片图如何水平垂直居中?
参阅:http://blog.doyoe.com/article.asp?id=159
17、标准模式和怪异模式下的盒模型区别?
标准模式下:实际宽度 = width + padding + border 怪异模式下:实际宽度 = width - padding - border
18、如何解决IE下的3像素BUG?
参阅:http://blog.doyoe.com/article.asp?id=68
19、如何做1像素细边框的table?
方法1:设置table的border-collapse:collapse; <style type="text/css"> table{border-collapse:collapse;border-color:#000;} td{border-color:#000;} </style> <table cellspacing="0" cellpadding="0" border="1"> <tr> <td>测试</td> <td>测试</td> </tr> </table>
方法2:关键在于设置cellspacine="1",用间隙来作为边框 <style type="text/css"> table{background:#000;} tr{background:#fff;} </style> <table cellspacing="1" cellpadding="0" border="0"> <tr> <td>测试</td> <td>测试</td> </tr> </table>
20、以图换字的几种方法及优劣分析
以图换字,其实是为了保证页面的可读性,这样既有利于搜索引擎,又有利于结构查看。由于这种方式被大多数人所认同,所以方法也越来越多:
方法1:使用text-indent的负值,将内容移出容器; 方法2:使用display:none,将内容隐藏; 方法3:使用padding将文字挤出容器之外,并将超出的部分hidden; 方法4:使用font设置超小字体,达到隐藏内容的目的。
方法1(非常不推荐)看起来蛮简单,但其实有几个不理想的地方,1是比较吃资源;2是在ie5下面会出现滞后背景无法显示;3是内容为超链接时,长长的黑色虚框,让你抓狂。 方法2(不推荐)其实倒也不复杂,只是需要多添加一个标签,比较浪费;且display:none出现的几率太多,对seo也是会有些许影响的。 方法3(推荐)Standard Model下要2层标签才能搞定,不过相对方法1和2还是有优势的,推荐一下。 方法4(强烈推荐)只需要将字体设置为0,然后overflow:hidden;如font:0/0 arial;overflow:hidden;就同样可以达到隐藏内容的目的,暂时还没发现有什么副作用,强烈推荐。
21、如何容器透明,内容不透明?
假设在标准模式下有如下结构: <div class="outer">   <p class="inner">我不要透明</p> </div>
IE only的方法:在父容器outer被设置为透明后,只需要将子容器inner设置为position:relative; 如果需要兼容其它浏览器,则以上的方法不适用,且结构也需改为:
<div class="outer"></div> <div class="inner">我不要透明</div>
然后使用position + z-index搞定位置
22、如何去掉链接的虚线框?
IE下:<a href="http://www.mamicode.com/#" onfocus="this.blur();"...> FF下:a{outline:none;}
23、如何使得页面字体行距始终保持n倍字体大小为基调?
在body内设置line-height:n即可,注,不可以为它加上单位 原因可参阅:http://blog.doyoe.com/article.asp?id=195
24、如何使用标准的方法插入flash?
<div class="fla-show">   <object type="application/x-shockwave-flash" data="http://www.mamicode.com/*.swf" width="*" height="*">   <param name="movie" value="http://www.mamicode.com/*.swf" />   <img src="http://www.mamicode.com/*.jpg" alt="用于不支持flash或屏蔽flash时显示" />   </object> </div>
25、Standard Model如何让容器可以height:100%?
设置html,body{height:100%;margin:0;}
26、如何使得表格的宽度固定?
设置table为table-layout:fixed;这时表格将使用固定布局算法,多出的内容将不影响表格的宽度
27、如何让min-height兼容ie6?
.min-height{min-height:100px;_height:100px;} <div class="min-height">我是兼容的min-height</div>
28、如何让鼠标变成手型且兼容所有现代浏览器?
cursor:pointer
29、如何实现ie6下的position:fixed?
参阅:http://blog.doyoe.com/article.asp?id=188
30、IE下如何对Standard Mode与Quirks Mode进行切换?
IE6以下的浏览器不用触发,直接以Quirks Mode呈现页面。
IE6和IE7都可以触发的(在XHTML 的DTD申明前加上HTML注释): <!--Let ie6 and ie7 into quirks mode--> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
IE6的触发(在XHTML 的DTD申明前加上XML申明): <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
当没有使用DTD声明或者使用HTML4以下(不包括HTML4)的DTD声明时,基本所有的浏览器都是使用Quirks Mode呈现。
31、如何给一个元素定义多个不同的css规则?
<style type="text/css"> .a{color:#f00;} .b{background:#eee;} </style>
<div class="a b">测试</div>
如上例,该元素同时拥有a和b定义的样式规则。 多个规则之间使用空格分开,并且只有class能同时使用多个规则,id不可以
32、如何区别display:none与visibility:hidden?
相同的是display:none与visibility:hidden都可以用来隐藏某个元素; 不同的是display:none在隐藏元素的时候,将其占位空间也去掉;而visibility:hidden只是隐藏了内容而已,其占位空间仍然保留。

web前台汇总2