先看下問題的表現,當切換頁面导航時,會發現导航处的文字樣式有變化,但兩個頁面的导航是一樣的,理論上說切換時應該不會有樣式變化的。你可以點開下面的兩個視頻,觀察一下頁面時导航的變化。
定位了好久,我先查看了元素尺寸,發現切換時確實存在細微的尺寸變化;然後我開始排查樣式,是不是主頁里有額外的樣式?是不是导航的樣式寫的有問題?有什麼語法用的不對?調了半天還是沒有頭續。
但兩個頁面有這樣的差导肯定有原因,我開始對比兩個 HTML 的差异,把大量无關的 HTML 刪除,只剩导航,問題依然存在。最後我看到兩個頁面的唯一差异是設置在 <html> 元素上的 lang ,在主頁是 <html lang="en"> ,而其他頁面都是 <html lang="zh-CN"> 。把主頁的 lang 修正為 zh-CN ,問題解决了。
之前在加 pagefind 搜索功能 時我把所有頁面的 lang 都改成了 zh-CN ,看來還是改漏了。我以為 lang 只是對屏幕閱讀有影響,沒想到還影响了文字顯示。
這是因為瀏覧器會根據頁面上設置的 lang 去找合適的字體 (font-family),而我也沒有設置中文字體,而是由瀏覧器自己找,這就导致了 lang 不同時,應用的字體存在差异,表現出來的就是尺寸的變化。