前端深入之css篇|link和@import到底有什么区别?

写在前面

在真正的前端开发中,我们很少去写行内样式和内嵌样式,通常都是去引用外部样式。

而在我们学习之初的外部样式表都是用link引入的,但是当后来我们学习的逐渐深入,发现@import也可以引入样式。那么同样是引入外部样式,这两者有什么区别呢,下面请跟随我来详细了解一下link@import的区别吧!

区别

<!DOCTYPE html>
<html lang="en">
    <head>
        <link rel="stylesheet" rev="stylesheet" href="myCss.css" type="text/css" >
        <style type="text/css" >
            @import url("./myCss.css");
        </style>
    </head>
</html>
这就是两种引用方式的常见用法,可以很清晰的看出
  • 1、从属关系:link是html的标签,不仅可以加载 CSS 文件,还可以定义 RSS、rel 连接属性等;而@import是css的语法,只有导入样式表的作用。
  • 2、加载顺序:页面被加载时,link会和html同时被加载而;@import引入的 CSS 将在页面加载完毕后被加载。
  • 3、兼容性:@import是 CSS2.1 才有的语法,所以只能在 IE5以上 才能识别;而link是 HTML 标签,所以不存在兼容性问题。
  • 4、DOM:javascript只能控制dom去改变link标签引入的样式,而@import的样式不是dom可以控制的。
  • 5、link方式的样式权重高于@import的权重。(如果对权重不是十分了解,可以看我之前的文章)

@import最优写法

@import ‘style.css‘ //Windows IE4/ NS4, Mac OS X IE5, Macintosh IE4/IE5/NS4不识别
@import "style.css" //Windows IE4/ NS4, Macintosh IE4/NS4不识别
@import url(style.css) //Windows NS4, Macintosh NS4不识别
@import url(‘style.css‘) //Windows NS4, Mac OS X IE5, Macintosh IE4/IE5/NS4不识别
@import url("style.css") //Windows NS4, Macintosh NS4不识别

由上分析知道,@import url(style.css) 和@import url("style.css")是最优的选择,兼容的浏览器最多。从字节优化的角度来看@import url(style.css)最值得推荐。

结论

@import是依赖css的,存在一定的兼容问题,并且根据浏览器渲染机制来说,他在dom树渲染完成后才会渲染,并且不能被js动态修改。

相比之下link兼容性较好,且dom元素的样式可以被js动态修改,又因为link的权重高于@import,所以 @import适用于引入公共基础样式或第三方样式,link适用于自己写的且需要动态修改的样式

经过实际的运用,相信在你真正书写和调整样式时一定可以如鱼得水。

结语

以上就是本文章的全部内容了,如果有不正确的地方欢迎指正。

感谢您的阅读,如果感觉有用不妨点赞/转发。

前端深入系列是一个踩坑系列,是由我本人对工作和学习中所遇到的问题和踩过的坑的一个探索与总结,在此记录分享出去,同时也是对自我技能的一个反思和追问。

前端路漫,踩坑不断。

前端深入系列持续更新中……

以上2019-10-08。

原文地址:https://www.cnblogs.com/li-jp/p/11636684.html

时间: 2024-08-14 21:16:15

前端深入之css篇|link和@import到底有什么区别?的相关文章

引入CSS方式link和@import的有何区别

外部引用CSS中 link与@import的区别 这两天刚写完XHTML加载CSS的几种方式,其中外部引用CSS分为两种方式link和@import. 本质上,这两种方式都是为了加载CSS文件,但还是存在着细微的差别. 差别1:老祖宗的差别 link属于XHTML标签,而@import完全是CSS提供的一种方式. link标签除了可以加载CSS外,还可以做很多其它的事情,比如定义RSS,定义rel连接属性等,@import就只能加载CSS了. 差别2:加载顺序的差别 当一个页面被加载的时候(就是

前端面试集锦——CSS篇

三.CSS篇 3.1.谈谈你对CSS布局的理解 3.2.请列举几种可以清除浮动的方法(至少两种) 浮动会漂浮于普通流之上,像浮云一样,但是只能左右浮动.正是这种特性,导致框内部由于不存在其他普通流元素了,表现出高度为0(高度塌陷). a. 添加额外标签,例如<div ></div> b. 使用br标签和其自身的html属性,例如<br clear="all" /> c. 父元素设置 overflow:hidden:在IE6中还需要触发hasLayou

引用外部CSS的link和import方式的分析与比较

很多网页中的 CSS 链接与引用是这样写的: <style type="text/css" media="screen"> @import url("http://www.abaonet.com/abc.css"); </style> 而很多网站使用的都是 link <link rel="stylesheet" rev="stylesheet" href="style

CSS中link和@import的区别

你对CSS中link和@import的区别是否熟悉,这里和大家分享一下,@import  属性用来指定导入的外部样式表及目标设备类型, link除了调用CSS外还可以有其他作用譬如声明页面链接属性,声明目录,rss等等,而@import就只能 调用CSS. CSS中link和@import有什么区别? 定义  ◆link元素 HTML和XHTML都有一个结构,它使网页作者可以增加于HTML文档相关的额外信息.这些额外资源可以是样式化信息(CSS).导航助手.属于另 外形式的信息(RSS).联系信

CSS的link和@import的区别

CSS的link和@import的区别: 标签和@import都可以引入外部样式表,功能看起来类似,但是它们之间还是有不少区别的,由于标签使用比较频繁,这里就不多介绍了,点击CSS的@import的用法可以了解@import的用法.下面就简单介绍一下它们两者的区别. 一[email protected]可以在一个样式表中引入其他样式表,在同一目录下有三个样式表分别是:main.css.one.css和two.css,在main样式表中可以引入one.css和two.css.方法如下: @char

前端深入之css篇|你真的了解“权重”吗?

原文:前端深入之css篇|你真的了解"权重"吗? 写在前面 权重这个概念,相信对许多进行过前端开发的小伙伴来说肯定并不陌生,有时候一个样式添加不上,我们就会一个 !important 怼上去,一切就好像迎刃而解了.但还有的时候,!important也并不能解决我们的问题,下面请跟随我来详细了解一下css的权重吧! 探索权重 指某一因素或指标相对于某一事物的重要程度,其不同于一般的比重,体现的不仅仅是某一因素或指标所占的百分比,强调的是因素或指标的相对重要程度,倾向于贡献度或重要性. 以

前端深入之css篇丨2020年前,彻底掌握css动画【transition】

原文:前端深入之css篇丨2020年前,彻底掌握css动画[transition] 写在前面 马上就2020年了,不知道小伙伴们今年学习了css3动画了吗? 说起来css动画是一个很尬的事,一方面因为公司用css动画比较少,另一方面大部分开发者习惯了用JavaScript来做动画,所以就导致了许多程序员比较排斥来学习css动画(至少我是),但是一个不懂css动画的前端工程师不能称之为掌握css3,其实当你真正学习css动画之后,你会被它的魅力所吸引的,它可以减少代码量.提高性能. 话不多说,马上

前端深入之css篇丨初探【transform】,手把手带你实现1024程序员节动画

原文:前端深入之css篇丨初探[transform],手把手带你实现1024程序员节动画 写在前面 马上就2020年了,不知道小伙伴们今年学习了css3动画了吗? 说起来css动画是一个很尬的事,一方面因为公司用css动画比较少,另一方面大部分开发者习惯了用JavaScript来做动画,所以就导致了许多程序员比较排斥来学习css动画(至少我是),但是一个不懂css动画的前端工程师不能称之为掌握css3,其实当你真正学习css动画之后,你会被它的魅力所吸引的,它可以减少代码量.提高性能. 值此10

前端深入之css篇丨2020年前,彻底掌握css动画【animation】

原文:前端深入之css篇丨2020年前,彻底掌握css动画[animation] 写在前面 马上就2020年了,不知道小伙伴们今年学习了css3动画了吗? 说起来css动画是一个很尬的事,一方面因为公司用css动画比较少,另一方面大部分开发者习惯了用JavaScript来做动画,所以就导致了许多程序员比较排斥来学习css动画(至少我是),但是一个不懂css动画的前端工程师不能称之为掌握css3,其实当你真正学习css动画之后,你会被它的魅力所吸引的,它可以减少代码量.提高性能. 上一篇文章我们已