前端 tips(2010.6) at 2010.6.30 8:08
本月前端 Tips:
6.1 - 6.464.【JS】IE下操作innerHTML,向里面插入的内容包含有<style>标签的,style标签不会被解析,可以通过内联或者外联样式去解决。(龙刚)
65.【CSS】对于类似 .a.b {} 这样的样式,ie6仅能识别.b,会忽略掉前边的 .a,使用这种方式就会带来一些问题,而且在重置时也比较费劲,一般不推荐过多的使用此类形式来定义样式。
66.【CSS】在作input与后边文字元素垂直居中的时候,一般做法是:input=>vertical-align:middle;在IE浏览器中均可实现垂直居中对齐,但是在火狐下不是太灵活,可以使用vertical-align:-num(num:代表合适的数值),来调整差距。(涵宇)
67.【浏览器】浏览器对于样式表的处理可分成两类。FF和Opera会先渲染,之后如果样式被改则刷新渲染;Chrome、IE和Safari等到样式表全好了后才渲染。(通常他们只延时渲染样式表之后的内容,但IE在某种情况下会延时渲染全部)(涵宇)
6.7 - 6.13
68.【CSS】IE6/7及IE8怪异模式中,text-align:center可以使块级元素也居中对齐。其他浏览器中,textalign: center仅作用于行内内容上。IE怪异模式中,给块级元素设置margin-left:auto;margin-right:auto无法使其相对于其父容器居 中对齐。其他浏览器中则不存在此现象。(Google)
69.【JS】有时候需要获取到flash对象,因此给object添加了id,给embed添加了name,两者的值刚好相同。此时如果使用window[name]来获取flash对象,各浏览器的表现就不一致了:在Opera/Safar/Chrome获取到的是一个集合HTMLCollection,弹出其length是2,在Opera/Safari/chrome中分别取出第1,2个元素分别是object,embed元素。准确的获取flash对象可以通过以下方式:
function getFlashObj(name){ return document[name] || window[name]; }(来源:http://www.javaeye.com/topic/684672)
70.【CSS】当A标签缺失href属性后,它相当于普通的标签,在IE6下,普通标签是不支持“:hover”伪类的。因此,对缺失href属性的A标签设置“:hover”伪类是无效的。(Google)
71.【CSS】w3c css21规范中指出:A:hover必须放置在A:link和A:visited之后,否则将隐藏A:hover内定义的相同规则。同理,A:active应在A:hover之后,否则A:active中的相同规则将被隐藏(L-V-H-A)。在IE7(S)/IE8(S)/Firefox(S)(Q)/Chrome(S)(Q)/Safari(S)(Q)下,A标签的伪类遵循w3c css21规范中的L-V-H-A顺序标准。而在IE6(S)(Q)/IE7(Q)/IE8(Q)下则不遵循。(注:Q:怪异模式,S:标准模式)(Google)
72.【JS】正则表达式中,g表示全局配,如果正则表达式中带有g,每次匹配后lastindex会更新一次,比如:var s = 'abac',re = /a/g; 初始值lastIndex为0,第一次匹配后,lastIndex变为1,第二次匹配后lastIndex变为3,第三次匹配没有匹配到,lastIndex则变为0,可以通过以下代码进行测试:
var s = 'abac',re = /a/g; console.log(re.lastIndex); console.log(re.test(s)); console.log(re.lastIndex); console.log(re.test(s)); console.log(re.lastIndex); console.log(re.test(s)); console.log(re.lastIndex);
另外,建议在使用test检测的时候不要带上全局配。(龙刚、空帷)
73.【CSS】在一些切图的活动页面,如果出现图片裂缝问题,就在全局样式里加一个 img { vertical-align:middle;},即可解决。(龙刚)
74.【CSS】在IE8中,-ms-filter是filter的别名,两者的区别是前者的属性值必须被单引号或双引号包围,而后者则不是必须的,而在IE8之前的版本中,filter的属性值必须不被单引号或双引号包围。(http://www.ued163.com/?p=818)
6.17,6.21 - 6.25
75.【CSS】尽量不要在浮动元素上使用 clear 特性,避免发生一些奇怪的兼容性问题,比如:在IE6(S)(Q)/IE7(S)(Q)/IE8(Q)中,如果clear特性被设置在一个浮动的元素上时,该浮动元素可能会与其前边的浮动元素放置在同一行。。。等等~(Google)
76.【CSS】"Layout"是IE/Win的专有概念,它决定了元素如何对其内容进行定位和尺寸计算,与其他元素的关系和相互作用,以及对应用还有使用者的影响。"Layout"可以被某些CSS特性(property)不可逆的触发,而某些HTML元素本身就具有layout。(Google)
77.【CSS】在使用CSS来写一个三角形的时候,需要注意一点,当边框设置为transparent时ie6下会显示出一个灰底,所以,ie6下要设置成背景的颜色,但是对于渐变背景的话此方法就不再适用了,建议使用图片代替。
78.【JS】一篇关于计时器的文章:http://www.sitepoint.com/blogs/2010/06/23/creating-accurate-timers-in-javascript/
79.【HTML】IE中IFRAME元素有一个专有的allowtransparency属性,参见:http://msdn.microsoft.com/zhcn/library/ms533072(en-us,VS.85).aspx。当其值为“true”时,IFRAME元素可以透明。当没有allowtransparency属性或者allowtransparency属性值不为“true”时,IFRAME元素的背景色始终为“#FFFFFF”,并且设置其背景色也无效。当allowtransparency属性为“true”后,IFRAME元素的背景色随 即变为“transparent”,然后我们可以随意设置其背景色。(Google)
80.【CSS】IE6及IE(Q)中BODY元素的背景色不是CSS规定的transparent,而是#FFFFFF。这个#FFFFFF是由background-color:window得来,window属性为是Windows系统主题设定的“窗口背景色”,这个设置会影响很多程序的窗口背景色,而其他浏览器多不受此影响。(Google)
6.28 - 6.30
81.【JS】replace函数的第二个参数可以为字符串或者函数,当为函数的时候,它有 n+3 个参数,其中 n 为 () 的个数,第一个参数是匹配模式的字符串,中间的 n 个参数分别对应匹配到的各个 () ,第 n+2 个参数声明了匹配在 string 中出现的位置,最后一个参数是 string 自身。
82.【JS】通常情况下,当一个页面出现滚动条的时候,获取scrollTop方法在各个浏览器下有些差异。Chrome、Opera、Safari可以通过doc.body.scrollTop方式来获取,而IE、FF下得到的值是0,但可以通过doc.getElementsByTagName('html')[0].scrollTop来获取。简便的解决办法: var s1=document.body.scrollTop,s2=document.getElementsByTagName('html')[0].scrollTop;//返回非0,即真实有效的值 return Math.max(s1,s2);(熊松松)
83.【JS】如果一个对象并存valueOf和toString方法,那么在数值运算中,优先调用valueOf,字符串运算中,优先调用toString。(涵宇,龙刚)