调用css时,用link 和 @import url 有什么区别

1、基本简介

@import版本:CSS1/CSS2  兼容性:IE4+

语法:
@importurl (url)sMedia;
取值:
url (url) : 使用绝对或相对url地址指定导入的外部样式表文件。请参阅link对象
sMedia : 未支持。指定设备类型。请参阅附录:设备类型
说明:
指定导入的外部样式表及目标设备类型。此规则无默认值。
此规则其后的分号是必需的,如果省略了此分号,外部样式表将无法正确导入,并会生成错误信息。url ()是可选的。
此规则像link对象一样,链接一个外部样式表到文档。用此规则导入的样式表,其owningElement特性是一个link对象或style对象。
此规则必须出现在样式表内的任何声明之前。虽然IE4.0+允许此规则出现在样式表定义的任何位置,但是此规则导入的样式定义将在内部样式表之前作用。这个定义顺序会影响您预期的结果。
导入的外部样式表中的定义会被文档中的定义覆盖。
示例:
@import url("foo.css") screen, print;
@import "print.css";
@import url(print.css);

2、@import和css link的异同

加载css link与@import的区别:

其实 link 与 @import 在显示效果上还是有很大区别的,基本上来看 link 的加在会在页面显示之前全部加在完全,而 @import 会是读取完文件之后加在,所以如果网速很好或很快的情况下,会出现先开始无css定义,而后加载css定义。@import加载页面时开始的瞬间会有闪烁(无样式表的页面),然后才恢复正常(加载样式后的页面),Link没有这个问题。

他们从方法上是一样的,只是在浏览器识别上有点差距,link在支持CSS的浏览器上都支持而@import只在5.0以上的版本有效,而且还能用于浏览器过滤也就是hack的使用,兼容一些老版本的浏览器。所以最好还是使用link通用型更强,但是对于高版本的浏览器,也就是现在的浏览器来说,其实都一样,这是个没有太大意义的区分 。

例外一个说明:

@import url(/css/a.css) 很简单但出现了兼容问题,在ff下无法调用样式,大家都以为是@import搞的怪,但用link后问题依然出现。经过一番讨论原来是绝对路径在ff下是不认的。


下面对@import url()做一下总结:

1,@import url()机制是不同于link的,link是在加载页面前把css加载完毕,而@import url()则是读取完文件后在加载,所以会出现一开始没有css样式,闪烁一下出现样式后的页面(网速慢的情况下)。

2,@import 是css2里面的,所以古老的ie5不支持。

3,当使用javascript控制dom去改变样式的时候,只能使用link标签,因为@import不是dom可以控制的。

4,link除了能加载css外还能定义RSS,定义rel连接属性,@import只能加载css

所以我认为结合来使用就最好,比如:<link href="css/main.css" rel="stylesheet" type="text/css">

引用了一个main.css文件,在main.css里面再引用@import url(footer.css);@import url(head.css);

这样达到一个清晰明了的作用.

3、总结


1、在一个样式文件中使用@import会为页面总体加载时间增加更多一个返程(也就是增加页面的总体加载时间)


2、在IE中使用@import 将会引起文件的下载顺序被改变。这更会引起样式文件花费更长的时间来下载,这会阻碍页面的渲染,让人感到页面比较慢。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 除了使用link和@import方式引入CSS外,还有以下几种方式: 1. 使用<style>标签将CSS代码嵌入HTML文件中,例如: <style> body { background-color: #f1f1f1; } </style> 2. 使用JavaScript动态创建<style>标签,并将CSS代码添加到其中,例如: var style = document.createElement('style'); style.innerHTML = 'body { background-color: #f1f1f1; }'; document.head.appendChild(style); 3. 使用CSS的data URI方案,将CSS代码嵌入URL中,例如: <link rel="stylesheet" href="data:text/css;base64,LmJvZHkgewogICAgYm9keSB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YxZjFmMTsKICAgIH0KICAgIC5jbGlwLWhlYWRlcnMgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxOyB9Cn0="> 注意:以上方式不一定适用于所有情况,具体应该根据实际需求进行选择。 ### 回答2: 除了使用link标签的style属性和@import规则之外,还可以使用以下方法来引入CSS: 1. 标签的style属性:可以直接在HTML标签的style属性中添加内联的CSS样式。这种方法适用于仅对一个具体元素应用样式的情况。 2. style标签:可以在HTML文档的<head>标签内使用style标签,将CSS样式直接嵌入到HTML文档中。这种方法适用于仅对当前文档使用的样式。 3. 内联样式表:可以在HTML标签的style属性中直接定义CSS样式,以内联方式应用样式。这种方法适用于仅对一个具体元素应用样式且样式较少的情况。 4. @import规则:可以在CSS文件中使用@import规则引入其他CSS文件。这种方法适用于将多个CSS文件组合成一个文件以便管理和调用的情况。 5. JavaScript:可以使用JavaScript动态地创建一个<style>标签或修改已有的<style>标签来引入CSS样式。这种方法适用于需要根据特定条件或动态操作来改变样式的情况。 6. CDN:可以使用内容分发网络(CDN)来引入CSS文件。通过在HTML的link标签中使用CDN提供的CSS文件链接,可以从CDN服务器加载所需的CSS文件。 总之,除了使用link style和@import规则外,可以使用内联样式表、style标签、JavaScript以及CDN等方法来引入CSS样式。根据具体需求选择合适的方法。 ### 回答3: 除了link 标签和 @import 指令外,还有一种方法可以引入 CSS 样式,那就是通过 JavaScript。通过 JavaScript 的 DOM 操作,我们可以动态地创建和添加 CSS 样式。 首先,我们可以使用 JavaScript 创建一个 <style> 标签,然后将需要的 CSS 样式插入到其中,最后将整个 <style> 标签添加到页面的 <head> 或 <body> 标签中。这样就能够同引入 CSS 样式了。 以下是一个简单的示例代码: ```javascript // 创建一个 style 标签 var styleTag = document.createElement('style'); // 设置 style 标签的属性 type styleTag.type = 'text/css'; // 设置 CSS 样式内容 var cssContent = 'body { background-color: #f1f1f1; }'; styleTag.appendChild(document.createTextNode(cssContent)); // 将 style 标签添加到 head 或 body 标签中 document.head.appendChild(styleTag); // 或 document.body.appendChild(styleTag); ``` 这样,通过 JavaScript 动态添加的 CSS 样式就会生效了。 需要注意的是,这种方式相对于使用 link 标签和 @import 指令引入 CSS 样式,有一些限制。因为它是通过 JavaScript 动态创建和插入 CSS 样式,所以可能存在一些性能方面的问题。同,如果样式内容较多或涉及到复杂的选择器,建议使用 link 标签或 @import 指令进行引入,以保持代码结构清晰和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值