溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何讓position:fixed在IE6中工作

發(fā)布時(shí)間:2021-11-18 10:02:35 來(lái)源:億速云 閱讀:96 作者:柒染 欄目:web開發(fā)

這篇文章將為大家詳細(xì)講解有關(guān)如何讓position:fixed在IE6中工作,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

和大家重點(diǎn)討論一下如何讓position:fixed在IE6中工作,眾所周知IE6不支持position:fixed,這個(gè)bug與IE6的雙倍margin和不支持PNG透明等bug一樣臭名昭著。到底有什么妙招讓position:fixed在IE6中工作呢,請(qǐng)看下文詳細(xì)介紹。

如何讓position:fixed在IE6中工作

眾所周知IE6不支持position:fixed,這個(gè)bug與IE6的雙倍margin和不支持PNG透明等bug一樣臭名昭著。前些天我做自己的博客模板的時(shí)候,遇到了這個(gè)問(wèn)題。當(dāng)時(shí)就簡(jiǎn)單的無(wú)視了IE6——盡管有幾個(gè)使用IE6的朋友,一起B(yǎng)S我……但是對(duì)于大項(xiàng)目或商業(yè)網(wǎng)站,如果有用到這個(gè)屬性的時(shí)候,是不可能直接無(wú)視的。

如何讓position:fixed在IE6中工作的?

本文所使用的技巧是用了一條InternetExplorer的CSS表達(dá)式(expression)。你不可以直接使用該表達(dá)式,因?yàn)樗赡軙?huì)因?yàn)榫彺娑桓隆?/p>

解決這一點(diǎn)的最簡(jiǎn)單的方式是使用eval包裹你的語(yǔ)句。

如何解決“振動(dòng)”的問(wèn)題?

顯然IE有一個(gè)多步的渲染進(jìn)程。當(dāng)你滾動(dòng)或調(diào)整你的瀏覽器大小的時(shí)候,它將重置所有內(nèi)容并重畫頁(yè)面,這個(gè)時(shí)候它就會(huì)重新處理css表達(dá)式。這會(huì)引起一個(gè)丑陋的“振動(dòng)”bug,在此處固定位置的元素需要調(diào)整以跟上你的(頁(yè)面的)滾動(dòng),于是就會(huì)“跳動(dòng)”。

解決此問(wèn)題的技巧就是使用background-attachment:fixed為body或html元素添加一個(gè)background-image。這就會(huì)強(qiáng)制頁(yè)面在重畫之前先處理CSS。因?yàn)槭窃谥禺嬛疤幚鞢SS,它也就會(huì)同樣在重畫之前首先處理你的CSS表達(dá)式。這將讓你實(shí)現(xiàn)***的平滑的固定位置元素!

這個(gè)方案并不是我提供的。我是在網(wǎng)上的某個(gè)地方讀到這些的。如果你知道是誰(shuí)原創(chuàng)了這個(gè)方法,請(qǐng)告訴前端觀察。我發(fā)現(xiàn)的另外一個(gè)小技巧是,你根本無(wú)需一個(gè)真實(shí)的圖片!你可以使用一個(gè)about:blank替代一個(gè)spacer.gif圖片,而且它工作的同樣出色。

CSSCode

/*讓position:fixed在IE6下可用!*/   .fixed-top/*頭部固定*/{position:fixed;bottom:auto;top:0px;}  .fixed-bottom/*底部固定*/{position:fixed;bottom:0px;top:auto;}  .fixed-left/*左側(cè)固定*/{position:fixed;right:auto;left:0px;}  .fixed-right/*右側(cè)固定*/{position:fixed;right:0px;left:auto;}  /*上面的是除了IE6的主流瀏覽器通用的方法*/  *html,*htmlbody/*修正IE6振動(dòng)bug*/{background-image:url(about:blank);background-attachment:fixed;}  *html.fixed-top/*IE6頭部固定*/{position:absolute;bottom:auto;top:expression(eval(document.documentElement.scrollTop));}  *html.fixed-right/*IE6右側(cè)固定*/{position:absolute;right:auto;left:expression(eval   (document.documentElement.scrollLeft+document.documentElement.clientWidth-this.offsetWidth)   -(parseInt(this.currentStyle.marginLeft,10)||0)-(parseInt(this.currentStyle.marginRight,10)||0));}  *html.fixed-bottom/*IE6底部固定*/{position:absolute;bottom:auto;top:expression(eval(document.   documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)   ||0)-(parseInt(this.currentStyle.marginBottom,10)||0)));}  *html.fixed-left/*IE6左側(cè)固定*/{position:absolute;right:auto;left:expression(eval(document.documentElement.scrollLeft));}

更新:添加border、padding和margin支持!

Note:如果你不需要支持margin,可以將所有的`parseInt`部分去掉。

Note:我只在標(biāo)準(zhǔn)模式下進(jìn)行了測(cè)試。

關(guān)于如何讓position:fixed在IE6中工作就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI