CSS的引入方式:

1.将样式规则写在css样式文件中,再以<link>标签引入。

<link rel=stylesheet type="text/css" href="example.css">

2.使用@import引入,跟link方法很像,但必须放在<style>...</style> 中或css样式文件中

<STYLE TYPE="text/css">

@import url(css/example.css);

</STYLE>

3.使用style标签,将样式规则写在<style>...</style>标签之中。

<STYLE TYPE="text/css">
body{
color: #666;
background: #f0f0f0;
font-size: 12px;
}
td,p{
color:#c00;
font-size: 12px;
}
</STYLE>

4.使用style属性,将其直接加在标签里,也叫内嵌样式

<span style="font-size: 12px;">style</span>

这4种引入方式中,绝大多数情况下使用第一种。它的好处非常明显,样式与HTML分离,便于管理。

出于同一个理由,第四种方式被不少人唾弃,但其实在一些很个别的场景(通用性差,效果特殊,不常改动,同时CSS代码不多),那样写我觉得是个很好的选择。

第三种虽然实现了样式和HTML分离,但样式几乎没用重用性可言,故弃之。

这里值得探讨的是第二种,和第一种很类似,他们的区别有啥呢?

下面就说说 link方式引入样式 和 @import方式引入样式 的区别。

它们的区别其实主要体现在加载上

link方式引入的样式会在html文档加载完后马上加载

而@import方式引入的样式是在link方式引入的样式都加载完后,浏览器发现@import语句,然后执行之才加载

因为它本身就是一个css命令,需要等css(link引入的css,或者定义在style标签里的css)加载完了才能执行

而且,在IE浏览器里(IE6,7,8)无论任何时候,都是把所有的link方式会阻断@import方式引入的样式,把并行加载给破坏了。

下面举几个例子:

<style type="text/css">
@import url('a.css');
@import url('b.css');
</style>

在这个例子里,a.css和b.css是并行下载的,加载timeline如下:

<link rel='stylesheet' type='text/css' href='a.css' />
<style type="text/css">
@import url('b.css');
</style>

在这个例子里,先加载完a.css,再加载b.css,加载timeline如下:

<!-- HTML代码里 -->
<link rel='stylesheet' type='text/css' href='a.css' />
//a.css中:
@import url('b.css');

在这个例子里,还是先加载完a.css,然后浏览器发现了a.css里的@improt语句,执行它,再加载b.css,加载timeline如下:

<!-- HTML代码里 -->
<link rel='stylesheet' type='text/css' href='a.css' />
<link rel='stylesheet' type='text/css' href='proxy.css'>
//proxy.css中
@import url('b.css');

在这个例子里,在IE浏览器上,可以很明显的看出并行加载被破坏这一点。

HTML文档加载完后,a.css和proxy.css同时加载

然后a.css的文件比proxy.css要大得多,所以当proxy.css加载完之后,a.css还在加载

但就算proxy.css已经加载完,浏览器依旧没有马上执行它里面的@import语句

而是等a.css加载完之后,再去执行proxy.css里的@import语句,去加载b.css

IE浏览器的整个加载过程的timeline如下:

而在其他浏览器上,不存在 link方式引入样式 阻断 @import方式引入样式 的问题

HTML文档加载完后,a.css和proxy.css同时加载

当proxy.css加载完后,马上执行它里面的@import语句,去加载b.css,此时a.css还在加载中

timeline如下:

考虑到所有浏览器的性能优化,为了防止样式的并行加载被破坏,果断放弃@import方式吧

除非你项目里所有的样式都用@import方式引入

CSS的引入的更多相关文章

  1. CSS的引入方式

    再用HTML编写的文本中,有是没能达到我们想要的效果,此时此刻我们可以用过引用CSS来控制!这不仅使得效果好而且代码层次清晰.CSS的引入方式可以分为四类: 1.链入外部样式表,就是把样式表保存为一个 ...

  2. CSS基础-引入方法,选择器,继承

    一.CSS引入方法:行内式.嵌入式.导入式.链接式. 1.行内式. 即:在标签的style属性中设定CSS样式. 例子:<div style="行内式</div> 2.嵌入 ...

  3. CSS 文件引入

    CSS 文件引入 <html> <head> <!-- link标签引用其他文件.rel="stylesheet" 引用css.href=" ...

  4. python 全栈开发,Day46(列表标签,表格标签,表单标签,css的引入方式,css选择器)

    一.列表标签 列表标签分为三种. 1.无序列表<ul>,无序列表中的每一项是<li> 英文单词解释如下: ul:unordered list,“无序列表”的意思. li:lis ...

  5. css如何引入外部字体?

    第一步,在CSS中引入字体并给名字取一个合适的名字,如下 1 2 3 4 5 6 7 @font-face {     /* font-properties */     font-family: p ...

  6. CSS的引入方式和样式

    CSS的引入方式和样式 一.样式 行内样式 内接样式 外接样式(1.链接式 2.导入式) <!--行内样式--> <div> <p style="color: ...

  7. 前端1-----CSS层叠样式表了解,css的引入方式,三大选择器(标签,类,id),高级选择器

    前端1-----CSS层叠样式表了解,css的引入方式,三大选择器(标签,类,id),高级选择器 一丶CSS简介    叠样式表(英文全称:Cascading Style Sheets)是一种用来表现 ...

  8. Day46(列表标签,表格标签,表单标签,css的引入方式,css选择器)

    一.列表标签 列表标签分为三种. 1.无序列表<ul>,无序列表中的每一项是<li> 英文单词解释如下: ul:unordered list,“无序列表”的意思. li:lis ...

  9. 前端(二)—— CSS的引入方式、长度与颜色单位、常用样式、选择器

    CSS的引入方式.长度与颜色单位.常用样式.选择器 一.CSS的三种引入方式 1.行间式 <!doctype html> <html> <head> <met ...

随机推荐

  1. 基于Qt5 跨平台应用开发

    1.Qt简介 2.Qt 编程关键技术 2.1 信号与槽 2.2 Qt事件处理 3.Qt开发与实例分析 3.1 开发环境 3.2 系统实现基本框架 3.3 数据库管理 3.5 对Excel进行操作 4. ...

  2. .net 程序集的加载与反射

    一. 程序集的加载: 在CLR内部使用System.Reflection.Assembly类的静态LoadFrom方法尝试加载程序集. LoadFrom方法在内部调用Assembly的Load方法,将 ...

  3. wp8.1 app退出操作提示

    微软的wp8.1 sdk相比之前wp8 sdk以及相关dll类库,微软又重新编译过,相关系统类库也经过精简,删改了部分传统dll库中的方法对象,很多常用方法对象被写进Windows.UI为前缀的命名空 ...

  4. Centos故障01:Docker容器丢失

    问题 一测试环境,配置及应用如下: [Centos ~]# rpm -q centos-release centos-release-7-6.1810.2.el7.centos.x86_64 应用: ...

  5. Gamma Correction of OIIO

    \apiitem{"oiio:ColorSpace" : string}   The name of the color space of the color channels. ...

  6. DatagridView 控件列顺序与设置的不一样

    解决方案如下 : 1. dataGridView1.AutoGenerateColumns = false; 2. 绑定的dataSource 中所有的列都要写进去(列一定是绑定的模型中属性) 先在界 ...

  7. [ActionScript 3.0] 判断XML属性是否存在

    在as3中判断xml节点是否存在以及判断xml某节点是否存在某属性可用下面方法: if(xml.hasOwnProperty("frameRate")){ trace(" ...

  8. samba使用

    一. samba安装 1. 安装:apt-get install samba samba-common smbclient 安装成功后,会默认启动samba服务, 可用ps-ef | grep smb ...

  9. 在iOS7中修改键盘Return键的类型

    今天将之前运行在iOS7之前的一段代码拿出来,在iOS7的机器上运行,发现键盘上的ReturnKeyType不能被修改了. 经过几番查找资料,了解到iOS7中UISearchBar的结构发生了变化,将 ...

  10. django中多个app放入同一文件apps

    新建一个apps文件夹 需要整理的app文件夹拖到同一个文件夹中,即apps.(弹出对话框,取消勾选Search for references) 在pycharm中,右键apps文件夹--选择mark ...