9. CSS 引入方式

CSS 引入方式

CSS 的三种引入方式

按照 CSS 样式书写的位置(或者引入的方式),CSS 样式表可以分为三大类:

  • 行内样式表(行内式)
  • 内部样式表(嵌入式)
  • 外部样式表(外链式)

行内样式表

行内样式表(内联样式表)是在元素标签内部的 style 属性中设定 CSS 样式,适合于修改简单样式。

html 复制代码
<div style="color: red; font-size: 12px;">青春不常在,抓紧谈恋爱</div>
  • style 其实就是标签的属性
  • 在双引号中间,写法要符合 CSS 规范
  • 可以控制当前的标签设置样式
  • 由于书写繁琐,并且没有体现出结构与样式相分离的思想,所以不推荐大量使用,只有对当前元素添加简单样式的时候,可以考虑使用
  • 使用行内样式表设定 CSS,通常也被称为 行内式引入

问题:使用内联样式,样式只能对一个标签生效。如果希望影响到多个元素,必须在每一个元素中都复制一遍;并且当样式发生变化时,我们必须要一个一个的修改,非常的不方便。(注意:开发时绝对不要使用内联样式)

内部样式表

将样式编写到head中的style标签里然后通过 css 的选择器来选中元素并为其设置各种样式可以同时为多个标签设置样式,并且修改时只需要修改一处即可。内部样式表更加方便对样式进行复用

html 复制代码
<style type="text/css">
  div {
    color: red;
    font-size: 12px;
  }
</style>
  • <style> 标签理论上可以放在 HTML 文档的任何地方,但一般会放到文档的 <head> 标签中
  • 目前的浏览器已经支持省略 type 属性
  • 通过此种方式,可以方便控制当前整个页面中的元素样式设置
  • 代码结构清晰,但是并没有实现结构与样式完全分离
  • 使用内部样式表设定 CSS,通常也被称为 嵌入式引入,这种方式是我们练习时常用的方式

问题:我们的内部样式表只能对一个网页起作用,它里边的样式不能跨页面进行复用

外部样式表

实际开发都是外部样式表,适合于样式比较多的情况,核心是:样式单独写到 CSS 文件中,之后把 CSS 文件引入到 HTML 页面中使用。

引入外部样式表分为两步:

  • 新建一个后缀名为:.css 的样式文件,把所有的 CSS 代码都放入此文件中
  • 在 HTML 页面中,使用 <link> 标签引入这个文件
html 复制代码
<link rel="stylesheet" type="text/css" href="css文件路径" />
属性 作用
rel 定义当前文档与被链接文档之间的关系,在这里需要指定为 "stylesheet",表示被链接的文档是一个样式表文件
type 定被链接文档的 MIME 类型,该属性最常见的 MIME 类型是 "text/css",该类型描述样式表,目前的浏览器已经支持省略 "type" 属性
href 定义所链接外部样式表文件的 URL,可以是相对路径,也可以是绝对路径

注意:使用外部样式表设定 CSS,通常也被称为 外链式链接式引入,这种方式是开发中常用的方式。

外部样式表需要通过link标签进行引入,意味着只要想使用这些样式的网页都可以对其进行引用使样式,可以在不同页面之间进行复用

将样式编写到外部的 CSS 文件中,可以使用到浏览器的缓存机制,从而加快网页的加载速度,提高用户的体验。
link 和 @import 导入外部样式表有何区别?

在前端开发中,link@import都是用于导入外部样式表的方法,但它们之间存在一些关键的区别。以下是两者的主要区别:

  1. 语法与用法

    • link:是一个 HTML 标签,它可以直接在 HTML 文档中使用,通过href属性指定外部样式表的 URL。例如:<link rel="stylesheet" href="styles.css">
    • @import:是 CSS 的一个指令,它只能在 CSS 文件中使用,通过@import关键字和url()函数指定外部样式表的 URL。例如:@import url("styles.css");
  2. 加载顺序

    • link:在页面加载时,浏览器会同时加载和渲染link引用的外部样式表。
    • @import:浏览器会在整个页面和 CSS 文件加载完成后,再加载@import引用的外部样式表。这可能会导致页面渲染的延迟。
  3. 兼容性

    • link:在所有现代浏览器中都有良好的兼容性。
    • @import:虽然大多数现代浏览器都支持@import,但在一些较旧的浏览器中可能存在兼容性问题,特别是旧版本的 Internet Explorer。
  4. 权重与覆盖

    • 由于link引用的样式表在页面加载时即被加载和渲染,因此它们具有更高的权重。如果有相同的样式规则,link引用的样式表将覆盖@import引用的样式表中的规则。
  5. 使用场景

    • link:更常用,特别是在 HTML 文档中直接引用外部样式表时。它也支持在 HTML 中同时引用多个外部样式表。
  • @import:可以在 CSS 文件中使用,以引入其他 CSS 文件或媒体查询。然而,由于加载顺序和兼容性问题,它的使用场景相对较少。
  1. 性能考虑
    • 使用@import可能会导致页面渲染的延迟,因为它是在页面和 CSS 文件加载完成后才加载样式表的。这可能会影响到用户体验。
    • 另一方面,link标签由于在页面加载时即加载样式表,因此通常具有更好的性能。

综上所述,尽管@importlink都可以用于导入外部样式表,但在实际开发中,link标签由于更好的兼容性、加载顺序和性能,通常被更广泛地使用。

总结

样式表 优点 缺点 使用情况 控制范围
行内样式表(行内式) 书写方便,权重高 结构样式混写 较少 控制一个标签
内部样式表(嵌入式) 部分结构和样式分离 没有彻底分离 较多 控制一个页面
外部样式表(外链式) 完全实现结构和样式相分离 需要引入 最多 控制多个页面
相关推荐
brzhang1 小时前
我操,终于有人把 AI 大佬们 PUA 程序员的套路给讲明白了!
前端·后端·架构
倔强青铜32 小时前
苦练Python第18天:Python异常处理锦囊
开发语言·python
止观止2 小时前
React虚拟DOM的进化之路
前端·react.js·前端框架·reactjs·react
goms2 小时前
前端项目集成lint-staged
前端·vue·lint-staged
谢尔登2 小时前
【React Natve】NetworkError 和 TouchableOpacity 组件
前端·react.js·前端框架
u_topian2 小时前
【个人笔记】Qt使用的一些易错问题
开发语言·笔记·qt
Lin Hsüeh-ch'in2 小时前
如何彻底禁用 Chrome 自动更新
前端·chrome
珊瑚里的鱼3 小时前
LeetCode 692题解 | 前K个高频单词
开发语言·c++·算法·leetcode·职场和发展·学习方法
AI+程序员在路上3 小时前
QTextCodec的功能及其在Qt5及Qt6中的演变
开发语言·c++·qt
xingshanchang3 小时前
Matlab的命令行窗口内容的记录-利用diary记录日志/保存命令窗口输出
开发语言·matlab