前言
這個問題可能比較奇怪穷娱,干嘛要讓position: fixed失效呢?
其實主要的場景是應用在移動端跟PC端兼容的問題上运沦,在移動端泵额,fixed根據(jù)瀏覽器窗口定位,這沒問題携添,但是如果將頁面用PC打開嫁盲,想讓頁面以375px顯示在屏幕中央,以便模擬手機體驗薪寓,同時還想讓position: fixed也只在375px內生效亡资,這就有點意思了。
默認是辦不到的向叉,那么怎么辦锥腻?
實現(xiàn)原理
MDN對position: fixed有一個注釋:
當元素祖先的 transform 屬性非 none 時,容器由視口改為該祖先母谎。
也就是說瘦黑,只要給它的隨便哪個祖先設上非none的transform,問題就解決了奇唤。這祖先可以是static的幸斥,也就是說隨便哪個祖先都行。但是咬扇,由于要模擬手機體驗甲葬,所以基于body元素比較妥。
比如說給body設一個transform: translateZ(0);
懈贺,測試有效经窖。
由于在PC環(huán)境下,我們通過媒體查詢等手段限定了body的寬度梭灿,那么fixed元素也只會在這個寬度內生效了画侣。