link与@import引入外部样式表的区别
来源:互联网 发布:linux挂载iso镜像 yum 编辑:程序博客网 时间:2024/06/05 08:38
使用上的区别
link:
某html文件的head中有:
<link rel="stylesheet" type="text/css" href="sheet.css">
link是一个比较老的html的标签在任何浏览器下都可以很好的工作,link的作用是将外部文件引入到当前文件中,可以引入除去css文件之外别的类型的文件。但是只能位于head中。
rel = “stylesheet”表示的是当前文档与引用的文档之间的关系。
type=“text/css”表示引用的文档是文本类型的css文件。
href=“URL”指明引用文件的URL。
注意:上述这三个缺一不可,比如如果缺少rel页面link到多个css文件的话,可能会忽略该文件。
@import:
某css文件如下:
@import url(sheet.css);.content{ /* ……………… */}
@import是css的一个属性,代表着引入css文件到当下css文件中,且只能引入css文件。@import只能位于文件的顶部,这降低了灵活性。
性能上的区别
(一下内容可能涉及webkit内核浏览器相关的知识,可以关注本人写的关于webkit系列的文章)
两个css文件都是使用link的方式引入:
Demo.html文件:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <link rel="stylesheet" type="text/css" href="style.css"> <link rel="stylesheet" type="text/css" href="style2.css"></head><body> <div class="content"> </div></body></html>sheet.css文件:.content{ border: 1px solid;}style2.css文件:.content{ background-color: red; width: 100px; height: 100px;}
在解析Dom。html文件的时候,遇到link标签,那么就会通知资源加载器加载style.css资源,但是注意并不会阻塞html文件的解析,接下来又会遇到要加载style2.css文件,所以又通知资源加载器加载style2.css资源,此时html文件继续解析知道生成DOM树触发DOMcontent事件。同时会发现,这两个css文件的请求是在解析html的时候一并发出的,也就是说这两个css文件是并行加载的,这无疑是节约了时间。一般情况下,要在html解析完成并且生成DOM树之后,才会进行css解析工作,所以只要在这一过程中得到css文件即可。
Demo.html文件:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <link rel="stylesheet" type="text/css" href="style.css"></head><body> <div class="content"> </div></body></html>style.css文件:@import url(style2.css);.content{ border: 1px solid;}style2.css:.content{ background-color: red; width: 100px; height: 100px;}
从这里可以看出DOM构建完成的时间(DOMcontent事件触发)和用link的方式差不多,但是在资源加载上差别还是不小的。那么为什么会这样呢?
在前面介绍过通过link方式引入多个css样式表,他们之间是并行加载的,所以之间不会有影响。但是在@import中且不是这样的,在解析DOM。html时候遇到link,会通知资源加载器加载style.css文件,然后继续解析HTML直到完成。值得注意的是,在加载style.css文件的时候是很消耗时间的比如要建立链接,解析DNS等等工作。直到style.css加载完之后,对css文件开始解析的时候发现有@import url(style2.css);开始加载style2.css。然后在给资源加载器发送请求加载这个文件。所以可以看出这两个文件的加载时串行的,所以是消耗时间的性能不好。
其他区别
link因为是html元素,可以通过js DOM动态的添加样式,但是@import却不可以。
- link与@import引入外部样式表的区别
- 学习笔记---引入外部样式表时link与@import的区别
- link引入样式与import的区别
- @import导入外部样式表与link链入外部样式表的区别
- @import导入外部样式表与link链入外部样式表的区别
- css 样式引入的方法 link 与import的区别
- link和import导入外部样式的区别
- CSS:样式表引入@import与link的不同--2008.04.23
- 浅谈css引入方式:link与@import的区别
- 外部引用CSS中 link与@import的区别
- 外部引用CSS中 link与@import的区别
- 外部引用CSS中 link与@import的区别
- 详解CSS外部引用之link与@import的区别
- 外部引用CSS中 link与@import的区别
- 外部引用CSS中 link与@import的区别
- 外部引用CSS中 link与@import的区别
- CSS外部引用之link与@import的区别
- HTML5中link和@import引入外部CSS文件的区别
- 微信公众平台开发前的准备工作(转载自walkingmanc的专栏)
- Mybatis最入门---动态查询(if)
- sdut oj3377 数据结构实验之查找五:平方之哈希表
- ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
- Druid 一次海量数据实时处理的实践
- link与@import引入外部样式表的区别
- 主从读写分离----mysql-proxy0.8.5安装与配置
- sublime各版本下载及破解方法
- zookeeper伪集群安装步骤
- java方法重写和super关键字
- TYZ 8/22 艰难的抉择(非常男女)
- 解决IE8以下浏览器不支持CSS属性opacity的问题
- Mybatis最入门---动态查询(choose,when,otherwise)
- dataguard 下修改主库的数据文件路径