在作這樣一個活動頁時,發現底部fixed定位的 button 元素在百度瀏覽器中展現不出來。css
Google後發現了這位小夥伴的文章 針對前端在百度瀏覽器總的固定定位的問題html
文中提到:前端
這是百度瀏覽器的廣告屏蔽機制,會讓這種固定定位在底部的元素看成廣告來屏蔽掉(隱藏移除不顯示)segmentfault
並給出了他的解決方案:瀏覽器
底部不要100%寬度,且不要爲一張圖片; 還能夠經過(高度未超屏)position:absolute 來實現相同效果或採用js來實現佈局效果 (場景較少)佈局
目前網上看到的方法都是在元素width上作文章,感受都不太好用(會在最後的其餘方法中細說)。測試
本次分享爲提供一個新思路:僞元素大法!ui
原代碼結構url
<div class="bottom_wrap">
<div class="btn" @click="handleBtn">
我是業主, 我要申請找房
</div>
</div>
複製代碼
新代碼結構spa
<div class="btn_fixed" @click="handleBtn"></div>
複製代碼
btn_fixed 就是一個空 div, 將按鈕切圖後,做爲僞元素添加到頁面中。這樣就能完美避開被百度瀏覽器廣告機制的屏蔽了~
新的樣式爲
.btn_fixed {
position: fixed;
bottom: 0;
left: 0;
}
.btn_fixed::after {
content: '.';
position: absolute;
bottom: 0;
left: 0;
width: 100vw;
height: 21vw;
background-size: cover;
background-image: url('./images/btn_fixed.png')
}
複製代碼
網上還看到了一些其餘方案,感受都不太好用。
有一種思路是給固定定位的圖片 width 設置爲 99%
(文章地址: 手機百度APP H5網頁position:fixed屬性失效. DIV結構被自動隱藏),
此前,直接對img加了一個width:100%;的屬性. 後來通過不斷地嘗試.發現只要圖片不是寬度100%,手機百度則不會把它當作廣告屏蔽掉. 因此只須要對img改變一下寬度如99%便可. 或者不使用整個大圖片
但經測試,發現現在圖片寬度哪怕是 90% 也依然會被屏蔽,猜測百度瀏覽器的廣告機制又作了升級,擴大了過濾範圍。
然而 width 過小,明顯太醜難以過UI那關
因而想到設置寬度爲 80%, 再經過 transfrom: scale(1.25, 1.25) 去進行縮放
嗯,結果又被百度屏蔽了……失敗。
靈機一動,想到了使用僞元素來解決,因而有了上述的【僞元素大法】~ 獨家原創,親測好用,但願能夠幫到你們~