原來 CSS 這樣寫是會讓 App 崩潰的

2022-09-15 11:18:11 字數 2550 閱讀 1573

雖然是來自其他部門的乙個頁面,但作為公司的一員,怎麼能不為公司的產品考慮呢。聽起來感覺像是在拍馬屁,其實真的是,因為我最好奇的是出現 bug 的原因是什麼,當然,肯定也是關心產品的啦。

於是第二天一早就到公司開始排雷……

首先我仔細看了一下**,從最初懷疑是 animation 的效能影響低端裝置執行開始排查。結果發現這個所謂的效能問題其實也並沒那麼厲害,一時也找不到頭緒,然後原始檔又不是在我們自己這邊,只好開啟花瓶抓 css 檔案,然後替換後,用刪除法一點點查。

最後在儲大師的提點以及提供的乙個 url 來看,居然是 rem 導致的。

這個**大家應該都知道,是專門看 bug 的,當然,也可以提 bug 啦。

@-webkit-keyframes crashchrome 

}.anim:before

class="anim">div

>

剛開始看到這段 css **的時候,我在想啊,這個好像也沒什麼問題啊,不就是通過 :before 這個偽元素來做乙個 animation動畫效果麼,然後使用了 rem 這個單位量。

反正是百思不得其解。

還是找測試機,繼續刪除那個有問題的頁面**吧。先是用了三星的,發現沒問題,接著用了小公尺的,果然奔潰了。看了一下版本,三星的是 android 4.4.2,小公尺的是 android 4.4.4,難道是版本的關係?

總之,在最開始那塊有動畫效果的部分排查了很久都沒找到問題。最後還是回到那個已經報了 bug 的頁面上看具體說明。

突然想到,這個頁面中用了 :before 來做動畫,莫非我們的這個頁面中也有,於是一搜,結果,真的有

趕緊我們自己頁面上的這段**拿過來做嘗試,終於找到你了。趕緊回郵件告訴對方……

再次感謝儲大師的提點,讓我有機會了解到未曾了解到的乙個問題。

這個 bug 在目前桌面端的裝置中已經被處理掉了,按照 bug list 頁面上說的,當時發現這個 bug 是在

chrome version: 34.0.1847.116 (official build 260972) m
這個版本上的,並且各系統都有。然而,現在的 chrome 都已經是 50 以上的版本了,所以桌面端完全不需要去擔心了。

但是這次既然是在移動端上遇見了,而且是 android 4.4.4 這個版本,雖然是在小公尺3 中發現,但 android 4.4.4 這個版本應該還算是比較普遍的,難道真的會是這個問題。

獲取一下這個 webview 的 ua 資訊,看到其中有乙個是chrome/33.0.0.0 mobile safari,於是我想啊,可能應該就是這個 webview 的關係了,畢竟我在小公尺3 這台測試機上的各個瀏覽器裡都看了一遍,沒發現問題。

現在是知道 rem 和 animation 一起的時候回出現這個 bug,但是在其他元素中並沒有問題啊。出於自己的好奇心,於是又換了幾個方式來嘗試。

把 animation 換成 transition,並且也是通過改變有 rem 的屬性,結果發現這個想法的結果是,沒有任何問題。

放棄這個想法……

想到 :before 是偽元素,那麼對於偽元素的選擇符還有幾個,都嘗試一下看看。

結果發現這四個偽元素選擇符全部都會讓頁面崩潰……

vi設計公司

瀏覽器(webview)的底層渲染機制我不懂,但就目前來看,可能應該就是因為chrome/33.0.0.0 mobile safari這個版本的問題,如果在偽元素中使用 animation,並且改變了其中的 rem 的值就會出現頁面崩潰的問題。

所以,可能應該就是這樣:

在這樣的前提下,又是使用有這個 bug 的版本瀏覽器,那麼就會讓頁面崩潰。

如果要避免這個 bug 的出現,那麼應該是:

不過好像現在大家都會去用 rem 單位,然後也會去用 animation 做動畫,那這樣好了,不在偽元素上使用者兩樣東西咯。

說到在偽元素上使用動畫,我想起了幾年前自己在做國際**的時候,當時好像用的比較多的是 firefox,然後在往返程的乙個模組中,就是用了偽元素的方式。

不過當時我好像使用的是 transition,並且當時主要是考慮 firefox,所以也沒遇到什麼問題。印象中遇到的問題就是,好像在某個瀏覽器中並沒看到那個 transition 效果,而且這個只是作為乙個小「亮點」的存在,產品經理也沒砍我。想想也算萬幸的……

原來文件是這樣寫的

好久沒寫部落格,給自己定了每天一篇部落格,遲遲沒做到,感覺自己都在放縱自己.今天在跟同事聊天中,同事請教我怎麼對乙個產品做資料分析.我也給他想了一些指標,起初也不知道怎麼切入,就想到什麼,建議什麼.後來我突然想起曾經一直在想事情 自己與領導對待問題看法有什麼區別,得到的結論是 自己總是想什麼說什麼,...

CSS魔法堂 hasLayout原來是這樣的!

過去一直聽說舊版本ie下很多詭異bug均由乙個神秘角色引起的,那就是haslayout。趁著最近突然發神經打算好好學習css,順便解答多年來的疑惑。haslayout可以簡單看作是ie5.5 6 7中的bfc block formatting context 也就是乙個元素要麼自己對自身內容進行組織...

CSS魔法堂 hasLayout原來是這樣

過去一直聽說舊版本ie下很多詭異bug均由乙個神秘角色引起的,那就是haslayout。趁著最近突然發神經打算好好學習css,順便解答多年來的疑惑。haslayout可以簡單看作是ie5.5 6 7中的bfc block formatting context 也就是乙個元素要麼自己對自身內容進行組織...