css文件加载:@import和link的区别

刚看了一个百度试题:请简述CSS加载方式link和@import的区别?

平时一般都用link,也知道css的加载方式,但还真的没有仔细研究过其之间的差别,查了一些资料,大致总结如下:

@impot使用方法:

<style type="text/css">
<!--
    @import url("css/main.css");
    @import url("css/base.css");
-->
</style>

link的使用方法:

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

本质上,这两种方式都是为了加载CSS文件,但还是存在着细微的差别。

  1. 老祖宗的差别。link属于XHTML标签,而@import完全是CSS提供的一种方式。 link标签除了可以加载CSS外,还可以做很多其它的事情,比如定义RSS,定义rel连接属性等,@import就只能加载CSS了。
  2. 加载顺序的差别。当一个页面被加载的时候(就是被浏览者浏览的时候),link引用的CSS会同时被加载,而@import引用的CSS会等到页面全部被下载完再被加载。所以有时候浏览@import加载CSS的页面时开始会没有样式(就是闪烁),网速慢的时候还挺明显。
  3. 兼容性的差别。由于@import是CSS2.1提出的所以老的浏览器不支持,@import只有在IE5以上的才能识别,而link标签无此问题。
  4. 使用dom控制样式时的差别。当使用javascript控制dom去改变样式的时候,只能使用link标签,因为@import不是dom可以控制的。
  5. @import可以在css中再次引入其他样式表,比如可以创建一个主样式表,在主样式表中再引入其他的样式表,如:

    main.css
       ———————-
       @import “sub1.css”;
       @import “sub2.css”;
    
       sub1.css
       ———————-
       p {color:red;}
    
       sub2.css
       ———————-
       .myclass {color:blue}

    这样更利于修改和扩展。

    从上面的分析来看,还是使用link标签比较好。标准网页制作加载CSS文件时,还应该选定要加载的媒体(media),比如screen,print,或者全部all等。

    提示:这样做有一个缺点,会对网站服务器产生过多的HTTP请求,以前是一个文件,而现在却是两个或更多文件了,服务器的压力增大,浏览量大的网站还是谨慎使用。有兴趣的可以观察一下像新浪等网站的首页或栏目首页代码,他们总会把css或js直接写在html里,而不用外部文件。

时间: 2024-08-24 17:08:34

css文件加载:@import和link的区别的相关文章

解决nginx环境网站css文件加载报错

生产环境为LNMP,部署后网站所有的CSS样式失效.在浏览器中启用开发者工具查到以下报错信息: 样式表单:xxxxxx.css未载入,因为它的MIME类型"text/plain"不是"text/css". 解决方法: 1.修改nginx配置文件nginx.conf. 在nginx.conf文件中添加一行代码include mime.types; 2.重启nginx 3.清除缓存 经以上步骤后即可使网站正常加载css文件.

@import与link的区别与选择

link 1 <head> 2 <link rel="stylesheet" type="text/css" href="sheet1.css" media="all"> 3 </head> @import 1 <style type="text/css"> 2 @import url(sheet1.css); 3 </style> 区别 加载顺序

前端设计中关于外部js文件加载的速度优化

在一般情况下,许多人都是将<script>写在了<head>标签中,而许多浏览器都是使用单一的线程来加载js文件的,从上往下,从左往右. 若是加载过程出错,那么网页就会阻塞,就像许多网站用Google的CDN库,而我们在墙内访问一样.页面不会出来,一直加载这个js文件,直到浏览器放弃加载为止! 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default

Java 文件变化加载监控,实时监控文件加载之Commons-io

Java 文件监控,实时监控文件加载 ,Commons-io中已有此功能的实现,如下代码所示: package wy.util.filemonitor; import java.io.File; import org.apache.commons.io.monitor.FileAlterationListenerAdaptor; import org.apache.commons.io.monitor.FileAlterationObserver; import org.apache.log4j

CSS 异步加载技术 不影响页面渲染

本文展示了一种技术,它能通过异步下载样式表,以阻止它们的下载阻塞页面的渲染,从而尽可能快的让访问者获取到信息内容. 警告! 我发这篇帖子全是好意,但是它并不负责让读它的人意识到下面将会遇到的问题. 社区很快地给了我许多的反馈 (有些反馈我很感激) ,而越来越明显的是这项技术并不如我所希望的那样稳定. 不像我那样的成功地对它进行了测试和利用,许多开发者在 IE 和 Firefox 中都遇到了问题( F F测试版中直接崩溃) 而其他人则报告在 Chrome 和 Safari 中是成功的.我现在的建议

在IIS上新发布的网站,样式与js资源文件加载不到(资源文件和网页同一个域名下)

在IIS上新发布的网站,网站能打开,但样式与js资源文件加载不到(资源文件和网页是同一个域名下,例如:网页www.xxx.com/index.aspx,图片www.xxx.com/pic.png). 然后单独打开资源文件(例如打开图片的链接)是,报错: 这个问题应该是web.config配置文件的设置问题. 在配置文件的<httpHandlers>下的节点,对应的资源文件的type值设置可能是“System.Web.DefaultHttpHandler”值(默认),例如: <httpHa

php基础知识(3)(文件加载include)

文件加载 综述: 有4个文件加载的语法形式(注意,不是函数): include,  include_once,  require, require_once; 他们的本质是一样的,都是用于加载/引入/包含/载入一个外部文件到当前php代码中来. 他们只在2个方面有细微区别: 1,如果加载文件失败,则有不同的处理规则:include和require不同 2,如果加载文件重复,则有不同的处理规则:XXX和XXX_once不同: 3,他们都是语法结构,而非函数,使用形式可以有两种: 3.1  incl

PHP:文件加载

PHP文件加载综述: 有4个文件加载的语法形式(注意,不是函数):include , include_once , require , require_once; 它们的本质是一样的,都是用于加载(引入/包含/载入)一个外部文件到当前php代码中来. 它们只在2个方面有细微区别: 1:如果加载文件失败,则有不同的处理规则.include 与 require不同 2:如果加载重复,则有不同的处理规则.XXX 与 XXX_once 不同 3:它们都是语法结构,而非函数,使用形式可以有两种: incl

webpack教程(四)——css的加载

首先要安装css的loader npm install css-loader style-loader --save-dev 然后在webpack.config.js中配置如下代码 意思是先用css-loader加载css文件,再用style-loader添加在页面中 在app目录下创建component.css文件 body{ background-color: red; } 在app/index.js中引入css文件 运行npm run start命令. 可以看到我们浏览器整个背景都变成了红