@import指令与link的区别及二者的使用注意事项

首先,二者都是从外部引入css文件的方式,其中@import语句需要放在css文件或者style标签中,且必须放在开头部分!

<link rel=‘stylesheet‘ href=‘a.css‘>
Or you can use the @import rule:

<style>
@import url(‘a.css‘);
</style>

@import VS  Link ,二者的区别

  1. link属于XHTML标签,而@import完全是CSS提供的一种方式;
  2. 加载顺序的差别。比如,在a.css中使用import引用b.css, 只有当使用当使用import命令的宿主css文件a.css被 被下载、解析之后,浏览器才会知道还有另外一个b.css需要下载,这时才去下载,然后下载后开始解析、构建render tree等一系列操作.
  3. 兼容性的差别。由于@import是CSS2.1提出的所以老的浏览器不支持,@import只有在IE5以上的才能识别,而link标签无此问题。
  4. 当使用javascript控制dom去改变样式的时候,只能使用link标签,因为@import不是dom可以控制的

综上:

编码规范建议不要使用 @import

与 <link> 标签相比,@import 指令要慢很多,不光增加了额外的请求次数,还会导致不可预料的问题。替代办法有以下几种:

  • 使用多个 <link> 元素
  • 通过 Sass 或 Less 类似的 CSS 预处理器将多个 CSS 文件编译为一个文件
  • 通过 Rails、Jekyll 或其他系统中提供过 CSS 文件合并功能

参考文章:

http://codeguide.bootcss.com

时间: 2024-11-06 12:39:19

@import指令与link的区别及二者的使用注意事项的相关文章

@import和link的区别

@import和link的区别 1.link语法结构    <link href="CSSurl路径" rel="stylesheet" type="text/css" />    此标签是引入CSS文件link标签,只要设置好路径即可. 2.@import语法结构    @import + 空格+ url(CSS文件路径地址);    1).在html中        <style type="text/css&qu

angularjs compine和link的区别

[译]ng指令中的compile与link函数解析 04 September 2014 通常大家在使用ng中的指令的时候,用的链接函数最多的是link属性,下面这篇文章将告诉大家complie,pre-link,post-link的用法与区别. 原文地址 angularjs里的指令非常神奇,允许你创建非常语义化以及高度重用的组件,可以理解为web components的先驱者. 网上已经有很多介绍怎么使用指令的文章以及相关书籍,相互比较的话,很少有介绍compile与link的区别,更别说pre

07_传智播客iOS视频教程_#import指令

预处理指令的执行时机是在编译之前.在编译之前执行预处理指令. #import指令是包含文件,将指定的文件的内容在预编译的时候拷贝到写指令的地方. #import指令无论把一个文件import了多少次,它只会包含一次.include指令如何实现这个效果?

JSP中include指令和include动作区别

首先 <%@ include file=" "%>:为指令元素 <jsp:include page=" " flush="true"/>:为 动作元素 先说指令元素: include指令元素读入指定页面的内容.并把这些内容和原来的页面融合到一起. 然后经过两个阶段: 1.将jsp翻译成 servlet  2.servlet 翻译成 .class文件 这样的话,在被引入文件中请不要加入 contentype 的属性 ,因为j

#import 指令 (C++)

#import 指令 (C++) #import指令用于从一个类型库(Type Library)中结合信息.该类型库的内容被转换为C++类,主要用于描述COM界面. 一.           语法: #import "filename" [attributes] #import <filename> [attributes] 参数 filename:指定要导入的类型库. filename 可以是以下项之一: (1)        包含类型库的文件的名称,如 .olb..tl

#import 指令

[#import 指令] #import指令用于从一个类型库中结合信息.该类型库的内容被转换为C++类,主要用于描述COM界面. 语法 #import "文件名" [属性] #import <文件名> [属性] 属性: 属性1,属性2,... 属性1 属性2 ... 文件名是一个包含类型库信息的文件的名称.一个文件可为如下类型之一: * 一个可执行(.EXE)文件. * 一个包含类型库资源(如.OCX)的库文件(.DLL). * 其它可被LoadTypeLib API支持的

iOS 中 #import同@class之间的区别

很多刚开始学习iOS开发的同学可能在看别人的代码的时候会发现有部分#import操作写在m文件中,而h文件仅仅使用@class进行声明,不禁纳闷起来,为什么不直接把#import放到h文件中呢? 这是因为h文件在修改后,所有import该h文件的所有文件必须重 新build,因此,如果把#import写在h文件中,import该h文件的文件也就会产生不必要的编译,增加编译时间,特别是在项目文件多的情况 下.想象一下,如果只是修改一个h文件而导致上百个文件不必要的编译,那是一件多么让人纠结的事情.

#include #import @class 的一些用法区别

从网上查了一些资料,整理了一下,发现很多都说的比较详尽,下面摘录自网络 说一下#import同class之间的区别 在ios中我们经常会在.h和.m中引入一些类啊等等一般用的是#import来进行声明,你们可能也见到在.h文件进用@class来声明的,那么#import和@class进行声明 到底有什么的区别呢? 1. import会包含这个类的所有信息,包括实体变量和方法,而@class只告诉编译器,声明的类的名称,至于这些类是如何定义的,暂时不用考虑,所以在头文件中如果用@class声明某个

VC中CDC与HDC的区别以及二者之间的转换

CDC是MFC的DC的一个类 HDC是DC的句柄,API中的一个类似指针的数据类型. MFC类的前缀都是C开头的 H开头的大多数是句柄 这是为了助记,是编程读\写代码的好的习惯. CDC中所有MFC的DC的基类.常用的CClientDC dc(this);就是CDC的子类(或称派生类). CDC等设备上下分类,都含有一个类的成员变量:m_nHdc;即HDC类型的句柄. 记住下面的一句话,会有助于你的理解. MFC的类,是在用window API语句开发出来的有一定功能的小程序.(也可称为类).使