position:fixed顯示錯位
在專案開發過程中遇到一個問題,使用layer顯示彈出框時,彈出框裡面的標籤設定position:fixed顯示位置是從彈出框位置進行定位,而非螢幕視口(viewport)的位置來定位。
經過調查發現,原來layer彈出框使新增了layui-anim類,這樣樣式類中使用了transform進行動畫的效果的設定。
position:fixed定位錯誤原因:當使用了position:fixed 的元素,如果其祖先元素存在 transform 值不為 none ,那麼該元素將相對於設定了 transform 的祖先元素進行定位。
為什麼會出現種情況:
1.任何非 transform 為 none 值都會導致一個堆疊上下文(Stacking Context)和包含塊(Containing Block)的建立。
2.由於堆疊上下文的建立,該元素會影響其子元素的固定定位。設定了 position:fixed 的子元素將不會基於 viewport 定位,而是基於這個父元素。
解決方案:
1.設定 transform 為 none
2.把使用position:fixed 的元素放置在 transform 不為 none 的外面
除了transform 不為 none 情況下導致position:fixed 的元素顯示錯位,還有其他樣式也可以導致,以下3 種方式會使得 position:fixed 定位的錯位:
1.transform 屬性值不為 none 的元素
2.perspective 值不為 none 的元素
3.在 will-change 中指定了任意 CSS 屬性
總結:目前開發過程中發現導致position:fixed 定位的錯位主要都是css3新增屬性導致。
相關文章
- CSS position:sticky與position:fixed 區別CSS
- CSS position定位(fixed、sticky)CSS
- CSS position:fixed 固定定位CSS
- CSS position: fixed 固定定位CSS
- position absolute與fixed 區別
- 不受控制的 position:fixed
- position:fixed 相對父元素定位
- CSS position fixed和absolute區別CSS
- position:fixed作用簡單介紹
- 不受控制的 position-fixed
- 解決CSS position:fixed 相容問題CSS
- qt中debug顯示64位不能除錯32位QT除錯
- 前端~定位屬性position(relative、absolute、fixed)的分析前端
- CSS中position屬性( absolute | relative | static | fixed )詳解CSS
- element-ui的table使用fixed錯位的解決方法UI
- CSS - 定位屬性position使用詳解(static、relative、fixed、absolute)CSS
- HTML之position:absolute relative static fixed的區別和理解HTML
- element-plus中的el-table元件tooltip顯示錯位元件
- java桌面顯示出錯,顯示佔半邊,顯綠色。Java
- PHP顯示全部錯誤PHP
- css [background-position] 單位CSS
- css文字溢位顯示省略號CSS
- Lucene多欄位查詢&高亮顯示
- SQL總是顯示正在除錯SQL除錯
- 修正windows下ora錯誤顯示???Windows
- win10圖示錯誤顯示怎麼改回來_win10電腦圖示顯示錯誤處理方法Win10
- css 多行文字溢位省略號顯示CSS
- Easy UI Combobox顯示拼接欄位UI
- css 單行文字溢位顯示省略號CSS
- 新建模型的時候,是否顯示欄位中的條件顯示如何使用?模型
- Layer.js實現表格溢位內容省略號顯示,懸停顯示全部JS
- pyplot latex顯示中文出錯問題
- 8位數碼管動態掃描顯示
- 快速顯示oracle錯誤號的含義Oracle
- WPS公式編輯器顯示錯誤公式
- 在vim中顯示並編輯十六進位制
- 在 Laravel 中動態 隱藏 / 顯示 API 欄位LaravelAPI
- 解決生產庫date欄位顯示不正確