找回密码
 注册账户
查看: 384|回复: 0

定位在浏览器与“表达( ) ” ,并没有抖动

[复制链接]
admin 发表于 2009-6-21 00:58:19 | 显示全部楼层 |阅读模式
位置固定的IE6与“表达( ) ” ,并没有抖动为什么以及如何...我们知道,有一个解决方案,缺乏的位置是:固定在Internet Explorer 6 。它包含一些JavaScript代码放在一个样式规则要感谢IE浏览器,不仅功能:一是可以宣布使用的表达方式( )算子/功能,并填写与JavaScript代码。如果你想股利留在窗口顶部的作风这个样子: # divFixed (现在的位置是:绝对的;顶端:表达( 0 + ( (英文= document.documentElement.scrollTop ) ?电子邮件: document.body 。 scrollTop ) + &#39;酶&#39; ) ;左:表达( 0 + ( (英文= document.documentElement.scrollLeft ) ?电子邮件: document.body.scrollLeft ) + &#39;酶&#39; ) ; ) ) (测试“ document.documentElement 。 scrollTop “使这一代码兼容,在标准和怪癖模式) ,这些谁尝试这种方法知道,当你滚动页面,固定内容将抖动和跳跃从滚动下降(或上升)的立场,以正确的(固定)的立场。这是由于IE浏览器滚动网页,更新显示,只有到那时,新的价值计算的所有表达式( ) 。最近我读过一个技术文章处理方法(很抱歉,我不记得网站的网址) 。作家是悲哀的事实是,不幸的是,我们必须生活在抖动的影响,因为它是更接近于我们可以得出一个工作解决的位置是:固定。在后续的评论,他提出了可行的解决办法不为他工作(和我当我第一次尝试) :有人告诉他,有一个背景图像固定在身体的因素是摆脱抖动。事实上,这个解决方案真正的作品。当背景图像是固定的, IE是被迫进程的“层” ( bdcolor + bgimage +标签) ,然后显示该网页,并最终的结果是该网页刷新与表达( )规则已更新。技术可能性的网页没有背景图片,该修补程序是很简单:添加一个透明的,固定的,背景,即可大功告成。的网页已经有一个背景图片:如果是固定的,没有必要修正;如果不是固定的,您可以使其固定。这并不总是一个好的解决办法。没有每个人都希望成为固定的背景图像作为一个副作用的“肮脏”修补程序。由于父母身体元素( HTML )的,我已经试过应用到它的背景。它有同样的效果作为背景的机构,一些细微差别:背景图片并不需要固定触发反抖动。您不能指定背景颜色(除透明)或抗抖动把戏是行不通的。如果您设置的背景(彩色或图像)的HTML标记,保证金身体标记会像其他标记。也就是说,利润率不画的背景颜色或图片(身体) ,以及背景附着坐标( 0,0 )是一致的利润率。附注怪癖模式:浏览器处理HTML和机构(几乎) ,好象他们是一个单一的标记。设置背景图片的HTML不会触发反抖动的效果。没有透明度适用于身体允许显示的HTML元素之下。因此,如果您套用一个透明图像(间隔) ,以机构, IE浏览器将不会显示背景的HTML 。明白这一点,唯一可行的修复文件怪癖模式是适用于“文件附件:固定”的机构,并建立一个透明的背景图片,如果没有设置。另外,表达的内容( )是解析不同: ( )内的&#39;字符串&#39;被解释为真正的JavaScript ( ) 。这导致分析错误。这是可以克服的,如果整个脚本代码包含在一个(功能(){})() 。的CSS :表达( &#39; someString与()&#39;...);//失败怪癖的CSS :表达( (功能( ) ( &#39; someString与()&#39;...})());//作品回到标准模式的可能性:如果一个固定的背景图片设置,什么都不做,如果没有背景图片设置,设置间隔。如果背景图片是不是固定不变的,将其申报为HTML标记。我们仍然有一个问题,如果我们需要的背景颜色和背景图像被视为同时(部分透明的图像,或图像不重复的方向,依靠背景颜色来填补空白) 。由于HTML可以没有一个背景颜色,修正后已应用的背景颜色是白色的网页(或默认的背景颜色设置的显示设置在Windows ) 。如果我们使用保证金: 0px身体上的因素,我们可以把背景上的HTML元素并保持正常的背景因素对人体没有它被感动的边缘。在这种情况下,机构背景并不需要修改;添加背景图片的HTML是不足以引发反抖动的效果。例如网页提供...休斯顿,我们有一个问题...然而,适用本办法引发的副作用。如果该文件高度小于可用空间在浏览器中,身体的高度不会跨越整个视的高度,其背景将只被视为该地区, IE浏览器认为是用来。我们可以套用高度: 100 % ; ,但是,如果身体有填充和/或边界, 100 %将太多,滚动条就会出现。再次表达( )来救援(在标准模式) 。身高:表达( (功能( ) (与( document.body.currentStyle ) document.documentElement.clientHeight - ( ( parseInt ( marginTop ) Ζ0 ) + ( parseInt ( marginBottom ) Ζ0 ) + ( parseInt ( borderTopWidth ) Ζ0 ) + ( parseInt ( borderBottomWidth ) Ζ0 ) + ( parseInt ( paddingTop ) Ζ0 ) + ( parseInt ( paddingBottom ) Ζ0 ) ) + &#39;酶&#39;})());范例网页提供...备注表达( ) :我们必须确保所附JavaScript代码是完全评估。有时更容易使用(功能(){})()语法(证明了说明的IE6处理&#39; ( ) &#39;的怪癖模式) 。 IE浏览器似乎剖析整个表达,然后再运行它,将拒绝执行,如果有“似乎”是错误的。更多关于在下面。有时IE浏览器拦截,直到您前缀字符串为&#39; &#39; + (空间) 。这就是为什么你会看到这个语法使用。直接添加的空间内的字符串可能工作,但通常你需要的串连。我有问题时,在结束了漫长的表达与& & ( thisΖthat ) ,即使thisΖthat是真实的。如果我重新排列和结束的表达与& & (这里==有)工作。一个可以设定表达( )上的内容在JavaScript ,因此,也从一个表达式中( ) 。这将有助于我们在允许“的修正” ,将其添加表达( )其他需要时的DOM元素。但是我们必须附上其置入setTimeout ( ) 。我们可以使用它来设定的表达通过修改机构血糖立场的HTML标记,并正确设置身高= 100 % 。 IE浏览器拒绝让您设定的风格元素所针对当前的表达( )第(元素可从内的表达与“本” ) 。人们可以用它虚张声势评价( )和setTimeout ( ) 。我已经看到了某些情况下(这! =认为) ,但不接受! (这==说)是,反之亦然。这一用语适用于HTML中。我认为这是标记与风险较低的风格的宣言碰撞。目前的URI的间隔是/ s.gif 。将图像文件的根源,您的网站。随时将它移到其他地方,并更新相应的URI 。请注意,图片的路径是相对于HTML网页,而不是这个CSS文件。该脚本的HTML (顶端:表达(防止表达运行一次以上。 (没有必要,见# 3 ) 。 ( typeof _E == &#39;未定义&#39; )等到DOM树是建立& & ( document.body )设置“拦截”变量。捷径身体的风格(只读) 。 & & ( _E = document.body.currentStyle )我们需要这种捷径太(收件只) & & ( _dbs = document.body 。风格) # 1检查,如果身体有一个形象。如果是后藤# 2 & & ( ( _E.backgroundImage ! = &#39;无&#39; )如果没有图片,添加间隔(不要忘记目前bgcolor ) Ζ ( _dbs.背景= &#39; &#39; + _E.backgroundColor + &#39;网址( “ / s.gif ” )固定&#39; ) ) # 1 # 2月底是bgimage固定?如果是转到# 3 & & ( ( _E.backgroundAttachment == &#39;固定&#39; ) ,我们有利润率= 0 ?如果是的话,购买间隔上的HTML 。 (车没有“高度= 100 % ” )转到# 3不久将新增表达为“ body.height = 100 % ”在这里(需要测试) Ζ ( ( _E.margin == &#39;0酶&#39; ) & & ( this.style.background = &#39; &#39; + &#39;的URL ( “ / s.gif ” )没有重复&#39; ) ) # 2B款移动最血糖信息从身体到HTML的设置血糖的HTML ( IMG公司,重复查封,默认位置) Ζ ( ( _P = _E.backgroundPositionX + &#39; &#39; + _E.backgroundPositionY ) & & ( this.style.background = &#39; &#39; + &#39;透明&#39; + _E.backgroundImage + &#39; &#39; + _E.backgroundRepeat + &#39; &#39; + _E.backgroundAttachment + &#39; &#39; + _P )明确机构bgcolor和bgimg ( &#39;没有&#39;允许背景立场仍然进行修改的CSS ) & & ( _dbs. backgroundImage = &#39;无&#39; ) & & ( _dbs.backgroundColor = &#39;透明&#39; )添加更新血糖表达的立场是,如果更新的风格尸体& & ( setTimeout (函数( ) ( document.documentElement.style 。 setExpression ( “ backgroundPosition ” , “ document.body.currentStyle.backgroundPositionX + &#39; &#39; + document.body.currentStyle.backgroundPositionY ” ) ) , 0 ) ) ) # 2b干扰素年底结束# 2 ) # 3我们适用“顶= 0px ” ;为HTML 。这样的结果是取消表达( ) & & ( setTimeout (函数( ) (评价( &#39; document.documentElement.style.top = “ 0px "&#39;)}, 0 ) ) ) ; )脚本执行一次,并删除自己的CSS规则从相关的DOM节点。没有任何CPU的涨幅代之以人类的书面规则。当前版本(忽视的背景颜色问题时,背景图像并不涵盖整个页面) 。工作只有在标准模式。的HTML (顶端:表达( ( typeof _E == &#39;未定义&#39; ) & & ( document.body ) & & ( _E = document.body.currentStyle ) & & ( _dbs = document.body.style ) &amp;&amp;((_ E.backgroundImage ! = &#39;无&#39; ) Ζ ( _dbs.background = &#39; &#39; + _E.backgroundColor + &#39;网址( “ / s.gif ” )固定&#39; ) ) &amp;&amp;((_体育backgroundAttachment == &#39;固定&#39; ) Ζ ( ( _P = _E.backgroundPositionX + &#39; &#39; + _E.backgroundPositionY ) & & ( this.style.background = &#39; &#39; + &#39;透明&#39; + _E.backgroundImage + &#39; &#39; + _E.backgroundRepeat + &#39; &#39; + _E.backgroundAttachment + &#39; &#39; + _P )&amp;&amp;(_ dbs.backgroundImage = &#39;无&#39; ) & & ( _dbs.backgroundColor = &#39;透明&#39; ) & & ( setTimeout (函数( ) ( document.documentElement 。 style.setExpression ( “ backgroundPosition ” , “ document.body.currentStyle.backgroundPositionX + &#39; &#39; + document.body.currentStyle.backgroundPositionY ” ) ) , 0 ) ) ) ) & & ( setTimeout (函数( ) (评价( &#39; document.documentElement.style.top = “ 0px "&#39;)}, 0 ) ) ) ; )如何使用?您有几种可能性:使用单一的CSS文件的一切,即使是有限的风格黑客使用浏览器的CSS文件用于IE黑客。要么只有6 ,或用于IE “ = 6 。不宣布风格的方式,让IE7的使用它。如何确保破解仅用于浏览器?外部CSS的修复IE浏览器“ = 6 :在您的HTML网页: <!--[如果LTE的6.0 ] ” “链接相对= ”样式“ href = http://www.webmasterworld.com/ /的CSS / “ /的IE6 , fix.css "><![ endif ] - ”的IE6 , fix.css : (在&#39; \ &#39;限制样式的IE6 )小时\天马舰(顶端:表达( 。 ..);}外部CSS的修正的IE6只: <!--[如果6.0 ] “ ”链接相对= “样式” href = http://www.webmasterworld.com//css/ “ ; /的IE6 , fix.css "><![ endif ] - “的IE6 , fix.css :的HTML (顶端:表达(...);}单的CSS声明或文件,为每个浏览器: &#39; _ &#39;限制IE4 - 6 , &#39; \ &#39;为6 - 7 (和FF ,作品, ...).两者的结合是的IE6只。 h \天马舰( _top :表达(...);}如果您不希望有条件评论(命题# 1和# 2 ) ,您仍然可以使用以下方法:添加此行的主要的CSS文件。同时黑客如上: &#39; \ &#39;是的IE6 - 7 (和其他浏览器) , &#39; _ &#39;是IE4 - 6 ,组合的IE6只。 @ I的\ mport _url ( “的IE6 , fix.css ” ) ;的IE6 , fix.css :的HTML (顶端:表达(...);} # 1和# 2不会造成的CSS警告非IE浏览器。 # 3 , # 4 ,可能会(不可见的最终用户) 。这样做使代码车身伪高度= 100 %分离表达的变量从全球范围看,如果使用的语法(函数(){})()是更有效地方便修改间隔的开放。说明全文,以正确的代码,例如网页,正确的列表项的缩进,和有效的管道字符( ? ,可在本网站上。
您需要登录后才可以回帖 登录 | 注册账户

本版积分规则

存档|黑屋|手机|网络实验室 本站服务器由美国合租以及IDCLayer国际数据提供!!!

GMT+8, 2026-6-19 04:26 , Processed in 0.008456 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表