CSS的引入
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的引入的更多相关文章
- CSS的引入方式
再用HTML编写的文本中,有是没能达到我们想要的效果,此时此刻我们可以用过引用CSS来控制!这不仅使得效果好而且代码层次清晰.CSS的引入方式可以分为四类: 1.链入外部样式表,就是把样式表保存为一个 ...
- CSS基础-引入方法,选择器,继承
一.CSS引入方法:行内式.嵌入式.导入式.链接式. 1.行内式. 即:在标签的style属性中设定CSS样式. 例子:<div style="行内式</div> 2.嵌入 ...
- CSS 文件引入
CSS 文件引入 <html> <head> <!-- link标签引用其他文件.rel="stylesheet" 引用css.href=" ...
- python 全栈开发,Day46(列表标签,表格标签,表单标签,css的引入方式,css选择器)
一.列表标签 列表标签分为三种. 1.无序列表<ul>,无序列表中的每一项是<li> 英文单词解释如下: ul:unordered list,“无序列表”的意思. li:lis ...
- css如何引入外部字体?
第一步,在CSS中引入字体并给名字取一个合适的名字,如下 1 2 3 4 5 6 7 @font-face { /* font-properties */ font-family: p ...
- CSS的引入方式和样式
CSS的引入方式和样式 一.样式 行内样式 内接样式 外接样式(1.链接式 2.导入式) <!--行内样式--> <div> <p style="color: ...
- 前端1-----CSS层叠样式表了解,css的引入方式,三大选择器(标签,类,id),高级选择器
前端1-----CSS层叠样式表了解,css的引入方式,三大选择器(标签,类,id),高级选择器 一丶CSS简介 叠样式表(英文全称:Cascading Style Sheets)是一种用来表现 ...
- Day46(列表标签,表格标签,表单标签,css的引入方式,css选择器)
一.列表标签 列表标签分为三种. 1.无序列表<ul>,无序列表中的每一项是<li> 英文单词解释如下: ul:unordered list,“无序列表”的意思. li:lis ...
- 前端(二)—— CSS的引入方式、长度与颜色单位、常用样式、选择器
CSS的引入方式.长度与颜色单位.常用样式.选择器 一.CSS的三种引入方式 1.行间式 <!doctype html> <html> <head> <met ...
随机推荐
- SSL证书 .pem转.pfx
使用OpenSSL来进行转换 OpenSSL官网没有提供windows版本的安装包,可以选择其他开源平台提供的工具.例如 http://slproweb.com/products/Win32OpenS ...
- 本地连接腾讯云Mysql失败问题
腾讯云主机中MySQL无法远程连接的解决办法 在远程主机上,我开启了 mysql服务,用 phpmyadmin 可以打开,比如说用户名为 root,密码为 123456.不过用 Mysql 客户端远程 ...
- 简单几步,提升.Net Core的开发效率
附加IIS进程调式? 以前在开发ASP.NET(MVC)项目的时候,为了加快程序的启动速度(调式),我们会选择使用IIS.先用IIS架设还在开发的项目,在需要调式的时候附加进程,而在更多时候,如果调整 ...
- 《Beginning Java 7》 - 6 - 深入理解 String
public final class String implements Serializable, Comparable<String>, CharSequence 所以: 1. Str ...
- better-scroll在vue中的应用
在我们日常的移动端项目开发中,处理滚动列表是再常见不过的需求了,以滴滴为例,可以是这样竖向滚动的列表,如图所示: 微信 —> 钱包—>滴滴出行”体验效果. 什么是 better-scrol ...
- Linux 与 Windows 搭建域名解析
实现 Win2012-D1 中 DNS 服务器的冗余备份,同时提供本域内主机名与 IP 地址的解析,此域名服务器的地址数据库需要 Win2012-D1 中定期更新. 假设环境:Server12 以及 ...
- ArchLinux下Ecplise软件报错
如果你的Java出现了一下问题:An error has occurred. See error log for more details.java.lang.NullPointerException ...
- js的事件机制
js的事件机制 解释:当我们的行为动作满足了一定的条件后,会触发某事务的执行. 内容: 1.单双击事件 单击:onclick 当鼠标单击时候会触发 双击:ondbclick 当鼠标双击时候会触发 2. ...
- webpack中设置jquery为全局对象
通过npm安装jquery npm install jquery -D 然后配置webpack-config.js plugins: [ new webpack.ProvidePlugin({ $: ...
- UVA-10929-You can say 11(秦九昭算法+同余与模算术)
原题链接 1000位大数取余: 秦九昭算法+同余与模算术: 1314 = (((1)*10+3)*10+1)*10+4 ( a + b ) % n = ( ( a % n ) + ( b % n ) ...