當需要針對不同的瀏覽器編寫不同的CSS樣式時的要點
為網頁應用CSS,我們都知道有四種方法:行內式、嵌入式、import載入式、link載入式。
方法很多,但如果你想做點像樣的東西,基本上前三種都可以不予考慮了:
行內式:直接寫到每個元素的style屬性裡。極其繁瑣、災難性質、無法維護。
嵌入式:直接寫到HTML頁面的style元素裡。難以維護。
import載入式:在HTML頁面的style元素裡以@import"這裡寫CSS檔案的路徑"的方式來載入外部的CSS。缺點是CSS會在HTML頁面載入之後才被載入,這會導致有那麼一會兒你的HTML頁面的樣子是七零八落的。
link載入式:在HTML頁面的head元素中以的方式來載入外部的CSS檔案。優點是CSS檔案會先於HTML頁面被載入進來,因此,任何時候你的頁面都是美觀的。
在實際開發時,你會發現,IE的噩夢即使到了IE11也是存在的,一些在Chrome和Firefox下完全正常和無害的頁面在IE11下卻有一些問題,通常也不是什麼大問題,但多數都會明顯到你感到不得不處理一下。
你可以使用原生JavaScript或jQuery來根據捕獲到的客戶端瀏覽器的資訊來決定載入哪個CSS檔案。
在針對不同的瀏覽器編寫不同的外部CSS檔案時,有兩點要注意:
外部CSS檔案的開頭一定不要寫元素。換句話說,你的外部CSS檔案中應該沒有任何HTML元素,只有純粹的CSS樣式。如果你寫上了元素,你會遇到一些奇怪的問題。
因為你實際上要糾正的只是不同瀏覽器中個別的那幾處小問題,針對不同的瀏覽器的CSS檔案之間的差別是很小的,如果為了這點差別,就要維護幾份內容幾乎相同的CSS檔案是很不值得的,因為你將不得不費力的在多份CSS檔案中比對著那份已經除錯好的CSS檔案在其他幾份CSS檔案中尋找你該改哪些地方,不該動哪些地方,當CSS檔案內容很多時,你會發現這工作相當要命。
因此,正確的做法是你應該寫一份通用的CSS檔案(比如一份針對Chrome的CSS檔案,假定叫a.css),然後將針對IE的那幾處修訂樣式單獨寫到一個CSS檔案中(假定叫b.css),並在動態載入時,針對Chrome只載入a.css檔案,而針對IE則使用link進行兩次載入,第一次載入通用的a.css檔案,第二次載入b.css。沒錯,在一個HTML頁面中是可以載入多個CSS檔案的,而且後載入的CSS會覆蓋先前載入的CSS對同一目標的樣式指定。
這樣有一個巨大的好處,那就是你只需要維護一份主CSS即可。當又發現兩個瀏覽器中有什麼不同時,只需把用於修訂的小塊CSS程式碼新增到對應的修訂CSS檔案中即可。
相關文章
- 不同瀏覽器核心的區別瀏覽器
- CSS中多個class樣式設定的不同寫法CSS
- 在pycharm中使用pip針對不同的編譯器新增包PyCharm編譯
- CSS程式碼在不同瀏覽器相容問題CSS瀏覽器
- 谷歌瀏覽器檢視編輯元素CSS樣式谷歌瀏覽器CSS
- 新版 Edge 瀏覽器或將擁有兩個不同的瀏覽器核心瀏覽器
- js中css樣式相容各個瀏覽器寫法JSCSS瀏覽器
- 不同瀏覽器下 autoplay 的限制策略和方案的整理瀏覽器
- 如何針對不同客戶給不同價格的設定?
- 瀏覽器和Node不同的事件迴圈(Event Loop)瀏覽器事件OOP
- CSS瀏覽器相容性的4個解決方案:瀏覽器CSS樣式初始化、瀏覽器私有屬性,CSS hack語法和自動化外掛CSS瀏覽器
- 瀏覽器模擬顯示器不同解析度瀏覽器
- 針對web開發者的瀏覽器快取指南(譯)Web瀏覽器快取
- 測試案例,Python +Selenium啟動不同瀏覽器Python瀏覽器
- for迴圈—不同div顯示不同樣式
- 利用 Powershell 編寫簡單的瀏覽器指令碼瀏覽器指令碼
- astro中瀏覽器端使用lit編寫的componentsAST瀏覽器
- 瀏覽器預設樣式瀏覽器
- 不同的SQL語句執行時需要申請並持有對應的鎖SQL
- golang 定時器的不同任務Golang定時器
- 針對vnpy的不同期貨品種行情資料清理
- 針對不同場景的Python合併多個Excel方法PythonExcel
- Qt設定根據編譯器不同連結不同的lib庫QT編譯
- MySQL與SQL的觸發器的不同寫法MySql觸發器
- php匯入時設定不同的編碼PHP
- css瀏覽器記住密碼修稿預設樣式CSS瀏覽器密碼
- 不同作業系統開啟檔案瀏覽器(資源管理器)的方式作業系統瀏覽器
- 編寫HTML頁面常見的CSS樣式問題HTMLCSS
- Silverlight 山寨版樣式瀏覽器瀏覽器
- Chrome瀏覽器中checkbox的樣式定義無效Chrome瀏覽器
- Xcode 小技巧:利用 assets 配置針對不同裝置的資源XCode
- Docker 映象製作教程:針對不同語言的精簡策略Docker
- 權值有的時候我們為同一個元素設定了不同的CSS樣式程式碼CSS
- 改變瀏覽器預設選中文字的樣式瀏覽器
- 自定義瀏覽器捲軸樣式瀏覽器
- 瀏覽器的session何時消失?瀏覽器Session
- 電話機器人在不同的行業有不同的應用場景和不同的效果機器人行業
- 你們要的日文AI實時字幕來了,谷歌瀏覽器VS小白瀏覽器AI大比拼AI谷歌瀏覽器
- CSS 也能實現 if 判斷?實現動態高度下的不同樣式展現CSS