首发地址: http://ieun.gitee.io/blog/pages/c5f19f/

概要

CSS 与 HTML 关联方式共有三种:内联式嵌入式外联式,其中还包括了一种特殊的 @import 指令。本篇文章将详细介绍这四种关联方式以及它们之间的区别。

内联式

将样式代码通过 style 属性写在 HTML 标签中。多条 CSS 样式之间使用;隔开。

<p style="color:red;font-size:12px"></p>

嵌入式(内部样式表)

将样式代码写在<style></style>标签中。通常情况下<style></style>标签写在<head></head>中,其涉及了页面渲染问题,后续会总结输出。

<head> <style type="text/css">          span {         color: red;font-size:12px;      }    </style>
</head>

外联式(外部样式表)

将样式代码写在单独的 CSS 文件中,通过 <link> 标签引用。通常情况下<link>标签也是写在<head></head>中。

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

@import

@import 指令可用于内部样式表和外部样式表,且必须放在其他 CSS 规则之前,否则不起作用。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>@charset "utf-8";@import './demo.css';.test {color: red;}/* 放在此处无效 *//* @import './demo.css'; */</style>
</head>
<body><div class="test">测试 @import </div>
</body>
</html>

四种关联方式区别

内联式、嵌入式、外联式都是在页面加载时,同时加载的。HTML 页面从头开始解析,当遇到 CSS 样式时就会开始加载并解析样式,此过程不会阻塞 HTML 的解析。

当一个页面中通过 <link> 引入多个外部样式表时,浏览器会并行下载多个 CSS 文件,以提高性能。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="./demo.css"><link rel="stylesheet" href="./demo1.css">
</head>
<body>
</body>
</html>


@import 指令引入的样式,是在开始解析 CSS 后,遇到 @import 指令时,才开始加载的,也就是串行加载,会导致页面渲染时间变长。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="./demo.css">
</head>
<body>
</body>
</html>

demo.css 内容:

@import './demo1.css';
.test {background: green;
}

demo1.css 内容:

.test {background: red;
}

除此之外,<link>@import 指令的其他区别:

  • <link> 是 HTML 标签,除了可以链接外部资源(样式、favicon)外,还可以通过设置不同的 rel 属性做其他事情,如超链接型 link(rel="search"),用于链接到站内搜索页面;
  • <link> 可以通过 DOM 操作,如动态加载样式;
  • @import 是 CSS2.1 提供的语法,不兼容 IE5 及以下浏览器,只能用于引入 CSS 文件;
  • 样式的优先级问题:权重相同的情况下,@import引入的样式优先级低于书写在@import指令后的样式(CSS 层叠特性)。我个人理解产生这种问题的原因是,@import相当于一个占位符,通过它引入的样式最终会填充到@import书写的位置,而与@import引入样式的加载时间无关。由于浏览器的流式渲染,使用 @import 可能会触发重排、重绘等问题。

请避免使用 @import

CSS 与 HTML 关联方式详解相关推荐

  1. html css主题,HTML+CSS=无限可能——案例详解:我的POI主题作品

    原标题:HTML+CSS=无限可能--案例详解:我的POI主题作品 在微博发了这个作业,收到很多好评,实在太开心! 斌叔让我来投稿,那今天就以这个网页为案例,把制作过程中我的方法和经验分享给大家. 作 ...

  2. LSTM入门必读:从入门基础到工作方式详解 By 机器之心2017年7月24日 12:57 长短期记忆(LSTM)是一种非常重要的神经网络技术,其在语音识别和自然语言处理等许多领域都得到了广泛的应用

    LSTM入门必读:从入门基础到工作方式详解 By 机器之心2017年7月24日 12:57 长短期记忆(LSTM)是一种非常重要的神经网络技术,其在语音识别和自然语言处理等许多领域都得到了广泛的应用. ...

  3. mysql二进制方式_MySQL数据库之MySql二进制连接方式详解

    本文主要向大家介绍了MySQL数据库之MySql二进制连接方式详解 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 使用mysql二进制方式连接 您可以使用MySQL二进制方式进 ...

  4. vue划入划出事件_基于vue中对鼠标划过事件的处理方式详解

    鼠标事件进行监听 需求中,在一个table(组件)表中,对于其中一列(该列为图片列),当鼠标划过该列的某个单元格子(图片)时,需要展示出该单元格子对应的遮罩层 翻阅了一些博客,发现好多都提到了mous ...

  5. 前端实现动画的6种方式详解

    前端实现动画的6种方式详解 一.总结 一句话总结:一般是css样式改变加setInterval 二.[前端动画]实现动画的6种方式 通常在前端中,实现动画的方案主要有6种: javascript直接实 ...

  6. python定位相邻节点_Python selenium 父子、兄弟、相邻节点定位方式详解

    今天跟大家分享下selenium中根据父子.兄弟.相邻节点定位的方法,很多人在实际应用中会遇到想定位的节点无法直接定位,需要通过附近节点来相对定位的问题,但从父节点定位子节点容易,从子节点定位父节点. ...

  7. php获取数据3中方式,PHP面向对象之3种数据访问方式详解(代码实例)

    PHP面向对象之3种数据访问方式详解(代码实例) 本文目标 掌握PHP中数据访问的3种方式的定义和作用 1.public 2.protected 3.private (一).数据访问的3种方式 1.P ...

  8. 视频流TS打包方式详解

    视频流TS打包方式详解 文章目录 视频流TS打包方式详解 TS流包头封装 PSI(程序特殊信息表) PAT:节目关联表 PMT:节目映射表 TS抓包实例解析 总结 前文介绍过PS流打包详解,从中可以看 ...

  9. 定义html表格的大小和位置,点晴OA工作流表单设计:表格table及宏控件的HTML、CSS、字体参数教程详解...

     点晴OA工作流表单设计:表格table及宏控件的HTML.CSS.字体参数教程详解 说明:虽然点晴OA内置了强大的富文本编辑器,但是很多时候还是难以实现理想的精确显示效果,为了实现满意的显示效果,网 ...

最新文章

  1. mysql中sql语句
  2. NeHe教程Qt实现——lesson07
  3. 111 第一章操作系统概述总结思维导图+错题整理
  4. SQL 2005各版本的区别
  5. 华为杯数学建模优秀论文_数学建模经典例题(2011年国赛A题与优秀论文)
  6. 解读:百度官方公告对于6.22、6.28事件解释
  7. linux内存碎片malloc,linux_ptmalloc下malloc()的过程:有 ptmalloc 源码
  8. 【渝粤题库】陕西师范大学163212旅游地理学 作业(专升本)
  9. MAC下go语言的安装和配置
  10. 全源最短路径 - floyd算法 - O(N ^ 3)
  11. Atitit 软件设计中的各种图纸 uml 之道 1. 常见设计成果与图纸 2 1.1. 总图 2 1.2. ui原型图与html 2 1.3. 业务逻辑 伪代码 各种uml图 2 1.4. 总体
  12. 移动端 1px 像素处理
  13. 【论文翻译】Class-Incremental Few-Shot Object Detection
  14. 计算机网络微课笔记03
  15. Grid Control 和 Database Control
  16. 18W快充长续航 魅族魅蓝Note5金色版19日开售
  17. 如何给excel添加开发者选项
  18. 用树莓派都可以DIY“波士顿机器狗”!
  19. 小白兔卖菜是计算机作文,白兔的菜作文
  20. linux 下shell中if的“-e,-d,-f”是什么意思

热门文章

  1. 用c 语言如何实现鼠标画图,C在控制台上实现鼠标画图功能
  2. 河北欧格教育:人群标签如何布局
  3. 第4关:字符串中各类字符数的统计-------C语言程序设计技术(循环结构程序设计1)
  4. ubuntu系统下ftp服务器配置,如何在Ubuntu中安装和配置FTP服务器
  5. 安全传输平台项目——配置管理终端-框架搭建-初始化
  6. Spring实例(IOC)——动物吃水果
  7. mathtype公式向量显示乱码
  8. 数据库内联接、左外联接、右外联接和全联接
  9. js利用本地储存开获取商品足迹
  10. Windows电脑如何更改账户类型