這是 fixed 在 MDN 里面的文檔;
不為元素預(yù)留空間浪腐,而是通過指定元素相對于屏幕視口(viewport)的位置來指定元素位置纵揍。元素的位置在屏幕滾動時不會改變。打印時议街,元素會出現(xiàn)在的每頁的固定位置泽谨。fixed 屬性會創(chuàng)建新的層疊上下文。當(dāng)元素祖先的 transform 屬性非 none 時特漩,容器由視口改為該祖先吧雹。
現(xiàn)在有這樣的一段 HTML 結(jié)構(gòu)
<body>
<header>
</header>
<main>
</main>
<footer>
</footer>
</body>
我希望 <footer>
是固定定位的的 position: fixed; width: 100%;
當(dāng) body
的寬度沒有限制的時候是沒有問題的, 但是加以限制涂身, 比如最大的寬度是 780px
的時候 <footer>
就會在右側(cè)溢出來 這里的寬度沒有跟隨 body
變動雄卷, 而是整個文檔的寬度, 把代碼里的注釋消掉就會發(fā)現(xiàn)這種變化. 元素在固定定位之后, 不加方位屬性限定蛤售, 默認是貼在最上, bottom
top
left
以及 right
屬性的值具體是多少由父元素決定. 元素的 100%
寬度并非是相對于父元素丁鹉, 而是相對于整個文檔而言。
那么如何調(diào)整固定定位元素的寬度悴能? 可以給該元素的父元素加 transform
非 none
的值揣钦。比如 scale(1)
, 但是這樣的話, fixed
就只去了本身的意義漠酿, 變得跟 absolute
一樣冯凹,簡直蛋疼, 還不如直接用絕對定位炒嘲。jsbin
的代碼在這兒 Here
宇姚。 所以第二個方案就是用 js
把元素的寬度直接賦值