遇到了fixed固定定位失效的問題

( 直接往下拉有一些解決辦法 )

在寫一個小程序的時候,想要把一個東西根據(jù)視口定位,但是發(fā)現(xiàn) position: fixed;失效了,不思其解,百度了后了解到問題所在。

當固定元素的祖先的transform 屬性非 none 時,定位容器的參照物將由視口改為該祖先。

很好理解吧,transform 屬性非 none了那固定定位效果就跟絕對定位差不多,但是不會脫離文檔流了,只有transform為none才可以正常使用固定定位,但是我倔,我就想即使用transform不為none,又想實現(xiàn)固定定位的效果,咋辦?

有嘗試網(wǎng)友說的給祖父元素之一加上transform:none,但是我試了不行……

還有網(wǎng)友說將具有transform屬性的盒子設置display:inline-block;試了也不行……

問了chatGPT,給出下面一個解決方案,試了也不行……


找了一些資料,有三個可以實現(xiàn)固定定位效果的辦法:

第一種:使用粘滯定位替代。粘滯定位不受transform屬性影響,具體可以參考這位大佬的CSS fixed固定定位transofrm失效及居中小技巧

第二種,創(chuàng)建一個與帶有transform屬性的祖先元素平行的容器,在該容器中進行固定定位。這個相當于繞過transform,有些取巧。

想同時使用transform 屬性非 none和固定定位的話,可以看看下面方法,實現(xiàn)思路就是通過監(jiān)聽固定元素的滾動高度,然后實時更改高度值,但是可能出現(xiàn)元素抖動的問題,實現(xiàn)代碼如下:

HTML:

? <div class="ZuFu">

? ? <div class="Fu">

? ? ? <div class="child"> 我是要進行固定定位的元素 </div>

? ? </div>

? </div>

JS:

? window.addEventListener("scroll", fixChildPosition);

? function fixChildPosition() {

? ? var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;

? ? var Fu = document.querySelector(".Fu");

? ? var Child = document.querySelector(".child");

? ? Fu.style.visibility = scrollTop > 0 ? "visible" : "hidden";

? ? Child.style.top = `${scrollTop}px`;

? }

CSS:

? ? .ZuFu {position: relative;height: 10000px;background-color: cadetblue;color: aliceblue;transform: scale(1);}

? ? .Fu {width: 100px;height: 100px;position: fixed;top: 100px;left: 100px;z-index: 10;

? ? ? visibility: hidden;pointer-events: none;}

? ? .child {width: 100px;height: 100px;position: absolute;top: 0;left: 0;visibility: visible;background-color: aqua;color: black;}

上傳不了視頻,gif還不動,服了

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容