昨天碰到同事问了一个问题,@impor导入外部样式与link链入外部样式的优先级是怎样的,为什么实验的结果是按照样式表导入后的位置来决定优先级。今天就这个问题具体总结如下:

先解释一下网页添加css样式的方法,一共有四种,分别是:
一、内嵌样式——直接在页面的标签里加<div style="border:1px red solid;">测试信息</div>
二、内部样式表——在head部分加入 <style type="text/css">div{margin: 0;padding: 0;border:1px red solid;}</style>
三、链入外部样式表——在head部分加入<link  rel="stylesheet" type="text/css" href="my.css" media="all" />,引入外部的CSS文件
四、导入外部样式表——在head部分加入<style type="text/css">@import url(my.css);</style>
样式表的优先级顺序从高到低依次为:内嵌样式 > 内部样式表 > 导入外部样式表(其实是属于内部样式表)

链入外部样式表与内部样式表之间的优先级取决于所处位置的先后,最后定义的优先级最高。
本文主要是做@import导入样式表与link链入样式表的区别探讨,所以其他的不做详谈。
1. 链入外部样式表
链入外部样式表是把样式表保存为一个样式表文件,然后在页面中用<link>标记链接到这个样式表文件,这个<link>标记必须放到页面的<head>区内,如下:
<head>
……
<link href="mystyle.css" rel="stylesheet" type="text/css" media="all">
……
</head>
上面这个例子表示浏览器从mystyle.css文件中以文档格式读出定义的样式表。rel=”stylesheet”是指在页面中使用这个外部的样式表。type=”text/css”是指文件的类型是样式表文本。href=”mystyle.css”是文件所在的位置。media是选择媒体类型,这些媒体包括:屏幕,纸张,语音合成设备,盲文阅读设备等。

2.导入外部样式表
导入外部样式表是指在内部样式表的<style>里导入一个外部样式表,导入时用@import,看下面这个实例:
<head>
……
<style type=”text/css”>
<!--
@import “mystyle.css”
其他样式表的声明
-->
</style>
……
</head>
例中@import “mystyle.css”表示导入mystyle.css样式表,注意使用时外部样式表的路径。方法和链入样式表的方法很相似,实质上它相当于存在内部样式表中的。
注意:导入外部样式表必须在样式表的开始部分,在其他内部样式表上面。
综合度娘的多篇文章和个人理解,两者的区别总结如下:
1:老祖宗的差别。link属于XHTML标签,而@import完全是CSS提供的一种方式。
link标签除了可以加载CSS外,还可以做很多其它的事情,比如定义RSS,定义rel连接属性,等,@import就只能加载CSS了。
2:加载时间及顺序不同。使用link链接的css是客户端浏览你的网页时先将外部的CSS文件加载到网页当中,然后再进行编译显示,所以这种情况下显示出来的网页跟我们预期的效果一样,即使一个页面link多个css文件,网速再慢也是一样的效果;而使用@import导入的CSS就不同了,客户端在浏览网页时是先将html的结构呈现出来,再把外部的CSS文件加载到网页当中,当然最终的效果也是跟前者是一样的,只是当网速较慢时会出现先显示没有CSS统一布局时的html网页,这样就会给阅读者很不好的感觉。这也是现在大部分网站的CSS都采用链接方式的最主要原因。
3:兼容性不同。由于@import是CSS2.1提出的所以老的浏览器不支持,@import只有在IE5以上的才能识别,而link标签无此问题。
4:使用dom控制样式时出现问题。当使用javascript控制dom去改变样式的时候,只能使用link标签,因为@import不是dom可以控制的。

5:导入样式可以避免过多页面指向一个css文件。当网站中使用同一个CSS文件的页面不是非常多时,这两种方式在效果方面几乎是没有不同的,但网站的页面数达到一定程度时(比如新浪等门户),如果采用链接的方式可能就会使得由于多个页面调用同一个CSS文件而造成速度下降,但是一般页面能达到这种程度的网站也会有资本用最好的硬盘,所以这方面的因素也不用怎么担心。
综上所述,一般普通的站点在调用外部样式表的时候,还是尽量选择link链入外部样式表比较好。关于区别中第二点的加载顺序的差别中,找到一个国外的参考文章作为补充资料:http://www.stevesouders.com/blog/2009/04/09/dont-use-import/ 

更多专业前端知识,请上 【猿2048】www.mk2048.com

jsp中@import导入外部样式表与link链入外部样式表的区别相关推荐

  1. Python中import导入上一级目录模块及循环import问题的解决

    Python中import导入上一级目录模块及循环import问题的解决 参考文章: (1)Python中import导入上一级目录模块及循环import问题的解决 (2)https://www.cn ...

  2. Python中import导入模块

    1.import搜索路径 >>> import sys >>> sys.path ['', 'D:\\python\\python3.7.2\\Lib\\idlel ...

  3. Golang中import 导入包的几种方式:点,别名与下划线

    在写Go代码的时候经常用到import这个命令用来导入包文件,看到的方式参考如下: import (// 多个"google.golang.org/grpc""imcs/ ...

  4. python import变灰_python--pycharm中import导入包呈现灰色问题之解决~很实用

    将鼠标移动到灰色代码,点击出现提示"Unused import statement"表示import声明不可用, 左边同时出现黄色小灯泡,将鼠标移动至黄色小灯泡那里, 会出现向下箭 ...

  5. pycharm中import导入包呈现灰色问题

    将鼠标移动到那行代码,点击出现提示"Unused import statement"表示import声明不可用,左边同时出现黄色小灯泡,将鼠标移动至黄色小灯泡那里,会出现向下箭头, ...

  6. 在JSP中out.print()、out.write()、out.println()的区别

    out.print()和out.write() print()和println()是JspWriter类中定义的方法,write()则是Writer类中定义的. print()和println()方法 ...

  7. css 引入的 方式有哪些? link与post有什么区别??

    有四钟形式: 1.链入外部样式表,就是把样式表保存为一个样式表文件,然后在页面中用<link rel="stylesheet" type="text/css&quo ...

  8. 在java中使用关键字导入包_java中import关键字的使用方法

    java中import关键字的使用方法 发布时间:2020-06-26 15:05:44 来源:亿速云 阅读:96 作者:Leah 这篇文章将为大家详细讲解有关java中import关键字的使用方法, ...

  9. java中import两种导入类型比较

    转载地址:http://blog.sina.com.cn/s/blog_56f69c6601016erf.html import导入声明可分为两中:  1>单类型导入(single-type-i ...

最新文章

  1. Keras学习代码—github官网examples
  2. android 自定义分区,android 自定义预制APP分区
  3. 674 Longest Continuous Increasing Subsequence(每日一题)
  4. 数据库中Schema(模式)概念的理解
  5. 反思一次线上bug的修改:没法看数据表的一次线上问题处理
  6. 一个小型数据库的核心组件
  7. 5个Python特性 越早知道越好的
  8. 计算机应用杂志投稿,计算机类杂志 (可网上投稿)
  9. 暴力测试也疯狂——论Python代码优化
  10. Linux基金会要“下田”了!开源技术在农业领域能做什么?
  11. Node.js Express+Mongodb 项目实战
  12. 20 Tips to Simplify Your Digital and Online Life
  13. TCPIP网络编程项目式教程(微课版)
  14. 查看elasticserc版本_Elasticsearch版本和客户端介绍
  15. ubuntu登录mysql报错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mys
  16. 看MySQL数据库的观后感,【看点·光】谈谈赏析和读后感(随笔)_mysql执行语句...
  17. 基本系统调用性能lmbench测试方法和下载
  18. 谷粒商城-08-p139-p172
  19. 快搜网络爬虫用户代理 User-Agent
  20. 泵站和水闸无人值守系统

热门文章

  1. mysql 主主模式优缺点_mysql主主同步模式
  2. 【LDPC系列1】基于MATLAB中LDPC编译码器对象的图像传输通信系统仿真
  3. java语言编程基础_java语言编程基础
  4. c语言实现二分法_C语言实现二分法求解方程在区间内的根
  5. Testner自动化测试平台免费开放啦
  6. java.util中,util是什么意思
  7. idea 内存溢出解决方法
  8. Unity 利用Coroutine实现跳动数字效果
  9. CCD与CMOS摄像头的区别
  10. JS的对象及其属性和方法