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
- position:fixed 相對父元素定位
- 解決CSS position:fixed 相容問題CSS
- qt中debug顯示64位不能除錯32位QT除錯
- 前端~定位屬性position(relative、absolute、fixed)的分析前端
- CSS中position屬性( absolute | relative | static | fixed )詳解CSS
- 文字溢位顯示
- CSS - 定位屬性position使用詳解(static、relative、fixed、absolute)CSS
- 哪些方式使得position:fixed定位的基準元素改變?
- element-ui的table使用fixed錯位的解決方法UI
- element-plus中的el-table元件tooltip顯示錯位元件
- css [background-position] 單位CSS
- Easy UI Combobox顯示拼接欄位UI
- win10圖示錯誤顯示怎麼改回來_win10電腦圖示顯示錯誤處理方法Win10
- 判斷文字是否溢位/hover顯示全部
- css 多行文字溢位省略號顯示CSS
- 文字溢位時,如何顯示為省略號
- 顯示驗證的錯誤資訊
- pyplot latex顯示中文出錯問題
- Layer.js實現表格溢位內容省略號顯示,懸停顯示全部JS
- 新建模型的時候,是否顯示欄位中的條件顯示如何使用?模型
- 快速顯示oracle錯誤號的含義Oracle
- 在 Laravel 中動態 隱藏 / 顯示 API 欄位LaravelAPI
- 在vim中顯示並編輯十六進位制
- vue 專案引入字型圖示報錯、不顯示等問題Vue
- jQuery Validate自定義錯誤資訊顯示位置jQuery
- 使用 Nuxt 的 showError 顯示全屏錯誤頁面UXError
- Fixed with absolute
- 頁面顯示二進位制數原始據亂碼
- 公司網站顯示指令碼錯誤怎麼辦網站指令碼
- CAD中能顯示列印不顯示
- 畫停車位需要什麼工具,可以顯示停車位的地圖有哪些地圖
- CSS實現單行、多行文字溢位顯示省略號CSS
- css如何簡單設定文字溢位盒子顯示省略號CSS
- Python3 正常顯示出十六進位制(坑人不淺)Python
- Increasing Sequence with Fixed OR
- matplotlib畫圖未顯示,以及PyCharm中 %matplotlib inline報錯PyCharminline