前端深入之css篇|link和@import到底有什麼區別?

来源:https://www.cnblogs.com/li-jp/archive/2019/10/08/11636684.html
-Advertisement-
Play Games

寫在前面 在真正的前端開發中,我們很少去寫行內樣式和內嵌樣式,通常都是去引用外部樣式。 而在我們學習之初的外部樣式表都是用link引入的,但是當後來我們學習的逐漸深入,發現@import也可以引入樣式。那麼同樣是引入外部樣式,這兩者有什麼區別呢,下麵請跟隨我來詳細瞭解一下link和@import的區 ...


寫在前面

在真正的前端開發中,我們很少去寫行內樣式和內嵌樣式,通常都是去引用外部樣式。

而在我們學習之初的外部樣式表都是用link引入的,但是當後來我們學習的逐漸深入,發現@import也可以引入樣式。那麼同樣是引入外部樣式,這兩者有什麼區別呢,下麵請跟隨我來詳細瞭解一下link@import的區別吧!

區別

<!DOCTYPE html>
<html lang="en">
    <head>
        <link rel="stylesheet" rev="stylesheet" href="myCss.css" type="text/css" > 
        <style type="text/css" >   
            @import url("./myCss.css");   
        </style> 
    </head>
</html>

 

這就是兩種引用方式的常見用法,可以很清晰的看出
  • 1、從屬關係:link是html的標簽,不僅可以載入 CSS 文件,還可以定義 RSS、rel 連接屬性等;而@import是css的語法,只有導入樣式表的作用。
  • 2、載入順序:頁面被載入時,link會和html同時被載入而;@import引入的 CSS 將在頁面載入完畢後被載入。
  • 3、相容性:@import是 CSS2.1 才有的語法,所以只能在 IE5以上 才能識別;而link是 HTML 標簽,所以不存在相容性問題。
  • 4、DOM:javascript只能控制dom去改變link標簽引入的樣式,而@import的樣式不是dom可以控制的。
  • 5、link方式的樣式權重高於@import的權重。(如果對權重不是十分瞭解,可以看我之前的文章)

@import最優寫法

@import 'style.css' //Windows IE4/ NS4, Mac OS X IE5, Macintosh IE4/IE5/NS4不識別
@import "style.css" //Windows IE4/ NS4, Macintosh IE4/NS4不識別
@import url(style.css) //Windows NS4, Macintosh NS4不識別
@import url('style.css') //Windows NS4, Mac OS X IE5, Macintosh IE4/IE5/NS4不識別
@import url("style.css") //Windows NS4, Macintosh NS4不識別

 

由上分析知道,@import url(style.css) 和@import url("style.css")是最優的選擇,相容的瀏覽器最多。從位元組優化的角度來看@import url(style.css)最值得推薦。

結論

@import是依賴css的,存在一定的相容問題,並且根據瀏覽器渲染機制來說,他在dom樹渲染完成後才會渲染,並且不能被js動態修改。

相比之下link相容性較好,且dom元素的樣式可以被js動態修改,又因為link的權重高於@import,所以 @import適用於引入公共基礎樣式或第三方樣式,link適用於自己寫的且需要動態修改的樣式

經過實際的運用,相信在你真正書寫和調整樣式時一定可以如魚得水。

結語

以上就是本文章的全部內容了,如果有不正確的地方歡迎指正。

感謝您的閱讀,如果感覺有用不妨點贊/轉發。

前端深入系列是一個踩坑系列,是由我本人對工作和學習中所遇到的問題和踩過的坑的一個探索與總結,在此記錄分享出去,同時也是對自我技能的一個反思和追問。

前端路漫,踩坑不斷。

前端深入系列持續更新中……

以上2019-10-08。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Hbase的表結構設計與關係型資料庫有很多不同,主要是Hbase有Rowkey和列族、timestamp這幾個全新的概念,如何設計表結構就非常的重要。 創建 Hbase就是通過 表 Rowkey 列族 timestamp確定一行數據。 這與關係型資料庫完全不同: | 屬性 | HBase | RDB ...
  • [toc] 想想我們漏了什麼 這篇文章已經是第四篇了,前面很多都只是講了基礎的使用,沒有講到內層的原理,所以這裡就要補一下原理知識了。 回顧 先回顧一下我們前面學過了什麼,再想想我們漏了什麼。 第一篇我們認識了ElasticSearch,大概知道了ElasticSearch的作用 搜索,也瞭解了一些 ...
  • tidb隔離級別詳解: 1.TiDB 支持的隔離級別是 Snapshot Isolation(SI),它和 Repeatable Read(RR) 隔離級別基本等價,詳細情況如下: ● TiDB 的 SI 隔離級別可以剋服幻讀異常(Phantom Reads),但 ANSI/ISO SQL 標準中的 ...
  • 實際開發過程中,密碼不會保存明文形式,容易被別人竊取。 MD5加密是不可逆的加密演算法,只能由明文轉換成密文。 但是有些人通過將明文對應的密文保存在資料庫中,進行查詢破解密文。為防止這種解密,根據許多對密碼進行多次加密,來保證密碼的安全。 ...
  • 隨著vue3.0的即將到來,是時候學習一下TS了 簡介:TypeScript是一種由微軟開發的自由和開源的編程語言。它是JavaScript的一個超集,而且本質上向這個語言添加了可選的靜態類型和基於類的面向對象編程。 ts並不是js語言,所以它是不能直接被瀏覽器識別的,所有從ts到js是有一個轉換的 ...
  • 模仿簡書的MarkDown編輯器,使用Angular8寫的示例 1.支持同步滾動 編輯的過程中,右側預覽界面會同步滾動。滾動右側預覽界面,左側編輯區也會同步滾動哦 2.支持語法高亮 如下: 3. 使用Angular8完成 執行以下命令觀看本demo ...
  • [toc] 1.1 sb(springboot)簡介 spring作為一個輕量級的容器(docker),在JavaEE開發中得到了廣泛的應用,當下流行的SSM、SSH框架體系都融入了spring,但是Spring的配置繁瑣臃腫,特別是整合第三方框架的時候,都需要開發者自己編寫各種配置文件,為了使開發 ...
  • For example: 效果圖: ...
一周排行
    -Advertisement-
    Play Games
  • 1. 說明 /* Performs operations on System.String instances that contain file or directory path information. These operations are performed in a cross-pla ...
  • 視頻地址:【WebApi+Vue3從0到1搭建《許可權管理系統》系列視頻:搭建JWT系統鑒權-嗶哩嗶哩】 https://b23.tv/R6cOcDO qq群:801913255 一、在appsettings.json中設置鑒權屬性 /*jwt鑒權*/ "JwtSetting": { "Issuer" ...
  • 引言 集成測試可在包含應用支持基礎結構(如資料庫、文件系統和網路)的級別上確保應用組件功能正常。 ASP.NET Core 通過將單元測試框架與測試 Web 主機和記憶體中測試伺服器結合使用來支持集成測試。 簡介 集成測試與單元測試相比,能夠在更廣泛的級別上評估應用的組件,確認多個組件一起工作以生成預 ...
  • 在.NET Emit編程中,我們探討了運算操作指令的重要性和應用。這些指令包括各種數學運算、位操作和比較操作,能夠在動態生成的代碼中實現對數據的處理和操作。通過這些指令,開發人員可以靈活地進行算術運算、邏輯運算和比較操作,從而實現各種複雜的演算法和邏輯......本篇之後,將進入第七部分:實戰項目 ...
  • 前言 多表頭表格是一個常見的業務需求,然而WPF中卻沒有預設實現這個功能,得益於WPF強大的控制項模板設計,我們可以通過修改控制項模板的方式自己實現它。 一、需求分析 下圖為一個典型的統計表格,統計1-12月的數據。 此時我們有一個需求,需要將月份按季度劃分,以便能夠直觀地看到季度統計數據,以下為該需求 ...
  • 如何將 ASP.NET Core MVC 項目的視圖分離到另一個項目 在當下這個年代 SPA 已是主流,人們早已忘記了 MVC 以及 Razor 的故事。但是在某些場景下 SSR 還是有意想不到效果。比如某些靜態頁面,比如追求首屏載入速度的時候。最近在項目中回歸傳統效果還是不錯。 有的時候我們希望將 ...
  • System.AggregateException: 發生一個或多個錯誤。 > Microsoft.WebTools.Shared.Exceptions.WebToolsException: 生成失敗。檢查輸出視窗瞭解更多詳細信息。 內部異常堆棧跟蹤的結尾 > (內部異常 #0) Microsoft ...
  • 引言 在上一章節我們實戰了在Asp.Net Core中的項目實戰,這一章節講解一下如何測試Asp.Net Core的中間件。 TestServer 還記得我們在集成測試中提供的TestServer嗎? TestServer 是由 Microsoft.AspNetCore.TestHost 包提供的。 ...
  • 在發現結果為真的WHEN子句時,CASE表達式的真假值判斷會終止,剩餘的WHEN子句會被忽略: CASE WHEN col_1 IN ('a', 'b') THEN '第一' WHEN col_1 IN ('a') THEN '第二' ELSE '其他' END 註意: 統一各分支返回的數據類型. ...
  • 在C#編程世界中,語法的精妙之處往往體現在那些看似微小卻極具影響力的符號與結構之中。其中,“_ =” 這一組合突然出現還真不知道什麼意思。本文將深入剖析“_ =” 的含義、工作原理及其在實際編程中的廣泛應用,揭示其作為C#語法奇兵的重要角色。 一、下劃線 _:神秘的棄元符號 下劃線 _ 在C#中並非 ...