【C3】01 概述
CSS (层叠样式表) 让你可以创建好看的网页,但是它具体是怎么工作的呢?
这篇文章通过一些很简单的例子,告诉我们什么是 CSS,
同时还会涉及一些和 CSS 相关的专业术语。
| 预备知识: | 基本的计算机知识,安装基础软件, 文件处理 的基础知识, 还有HTML基础 (学习 HTML概述。) |
|---|---|
| 目标: | 了解什么是CSS。 |
在 HTML概述 模块我们学习了HTML是什么,以及如何使用它来组成页面。
浏览器能够解析这些页面。
标题部分看起来会比正常文本更大,段落则会另起一行,并且相互之间会有一定间隔。
链接通过下划线和不同的颜色与其他文本区分开来。
这些都是浏览器的默认样式——当开发者没有指定样式时,浏览器通过这些最简单的样式使页面具有基本可读性。

如果所有网站都像上图那样,互联网就会非常枯燥。
但是使用 CSS 就可以完全控制浏览器如何显示 HTML 元素,从而充分展示你喜欢的设计样式。
CSS用来干什么?
前文提到过, CSS 是用来指定文档如何展示给用户的一门语言——如网页的样式、布局、等等。
一份文档是由标记语言组织起来的文本文件 —— HTML 是最常见的标记语言, 但你可能也听说过其他可标记语言,如 SVG 或 XML。
展示一份文档给用户实际上是将文档变成用户可用的文件。
Browsers:如 Firefox,Chrome, 或 Edge,都可以将文档在电脑屏幕、投影仪或打印机等设备上进行可视化。
注意: 浏览器有时候也被称为 user agent,大致可以当这个程序是一个存在于计算机系统中的人。
当我们讨论CSS时,浏览器是 User agent 的主要形式, 然而它并不是唯一的一个。
还有其他可用的user agents — 像是那些可以把HTML和CSS文档转换为可以打印的PDF文档的软件。
CSS 可以用于给文档添加样式 —— 比如改变标题和链接的颜色及大小。
它也可用于创建布局 —— 比如将一个单列文本变成包含主要内容区域和存放相关信息的侧边栏区域的布局。
它甚至还可以用来做一些特效,比如动画。查看本段内容中所给出的特定案例。
CSS 语法
CSS是一门基于规则的语言 —— 你能定义用于你的网页中特定元素样式的一组规则. 比如“我希望页面中的主标题是红色的大字”
下面这段代码使用非常简单的 CSS 规则实现了之前提到的效果:
h1 {
color: red;
font-size: 5em;
}
语法由一个 选择器(selector)起头。 它 选择(selects) 了我们将要用来添加样式的 HTML 元素。
在这个例子中我们为一级标题(主标题<h1>)添加样式。
接着输入一对大括号{ }。 在大括号内部定义一个或多个形式为 属性(property):值(value); 的 声明(declarations)。
每个声明都指定了我们所选择元素的一个属性,之后跟一个我们想赋给这个属性的值。
冒号之前是属性,冒号之后是值。不同的 CSS 属性(properties) 对应不同的合法值。
在这个例子中,我们指定了 color 属性,它可以接受许多颜色值;还有 font-size 属性,它可以接收许多 size units 值。
一个 CSS 样式表可以包含很多个规则。
h1 {
color: red;
font-size: 5em;
}
p {
color: black;
}
你会发现你已经很快掌握了一些属性的值,但是属性可以接受的值远不止这些。
在MDN上每个属性都有单独的页面,不论你是忘记了某个属性,还是想要知道一个属性还能接受什么其它的值,这些页面都可以帮助你。
注意:在MDN上的 CSS reference 页面列举了所有的 CSS属性页面(同时也包括其它的CSS特性)。
另外,当你想要寻找一个CSS特性的更多内容时,多使用你的搜索引擎来搜索 "mdn css-feature-name" 。
例如,搜索 "mdn color" 和 "mdn font-size"!
CSS 模块
你可以通过 CSS 为许多东西添加样式,CSS 由许多模块(modules) 构成。
你可以在 MDN 上浏览这些模块的参考内容(MDN reference),许多模块都被组织在自己单独的文档页面。
例如,我想查找一下 MDN reference 的 Backgrounds and Borders 模块的相关内容,来了解它是用来做什么的、它还包括什么属性、它还有什么其它特性等。你也可以在 CSS Specification 查找(见下文),它定义了CSS规范 。
在这个阶段你不必过于担心 CSS 是如何组织的(how CSS is structured),但是它能帮助你更好的掌握 CSS。
例如,你注意到某个属性和另外一些属性的相似点,并且它们可能确实是相同的格式。
举个具体点的例子:
如上文中的 Backgrounds and Borders 模块 — 你会发现 background-color 和 border-color 这两个属性在逻辑上相通。
并且它也确实如此。
CSS 规范
所有的标准Web技术(HTML, CSS, JavaScript等) 都被定义在一个巨大的文档中,称作 规范specifications (或者简称为 "specs"),它是由 (像是 W3C, WHATWG, ECMA 或 Khronos) 这些规范化组织所发布的,其中还定义了各种技术是如何工作的。
CSS 也不例外 — 它是由W3C(万维网联盟)中的一个名叫 CSS Working Group 团体发展起来的。
这个团体是由浏览器厂商和其他公司中对 CSS 感兴趣的人作为代表组成的。
也有其他的人员,比如受邀专家(invited experts),他们作为不从属于任何组织的独立声音加入团体。
新的 CSS 特性被开发出来,或是因为某个浏览器热衷于开发新功能,或是因为Web设计人员与开发者要求增加一个新特性,又或是 CSS Working Group 内部的讨论决定。
CSS 始终在发展,并伴随着新的特性。
然而,有一件事情从始至终都未改变,那就是不让新的改变破坏旧的网站,即使是2000年建立的网站,如今也能正常访问!
作为一个 CSS 新手,你会发现阅读 CSS 规范 中的内容非常吃力 — 它旨在为工程师在用户代理(user agents)中实现对 CSS 各种特性的支持,而不是作为一本为Web开发者理解 CSS 内容的教程。
即使是有经验的开发者,也更倾向于使用 MDN 文档或者其它教程。
但是,知晓它的存在,理解 CSS、规范 和 浏览器支持(见下文) 之间的关系是很有价值的。
浏览器支持
当一个浏览器支持 CSS 后,我们就可以用它来进行Web开发了。
这意味着我们写在 CSS 文件中的代码可以被指令执行,展示到荧幕中。
在 CSS 如何工作 一节中我们会学习到更多的相关知识。
但是让所有的浏览器都同时支持一个 CSS 新特性是不现实的,通常都会一个空档期 — 一些浏览器已经支持而另一些仍未支持。
因此,查看特性的实现状态(implementation status)是非常有用的。
在 MDN 上的每个属性的页面中都标有它们对应的状态,你可以通过这种方法来查看你是否可以去使用它。
以下是 CSS font-family 属性的兼容数据表。
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | Android webview | Chrome for Android | Firefox for Android | Opera for Android | Safari on iOS | Samsung Internet | |
font-family |
Full support1 | Full support12 | Full support1
Notes
打开 |
Full support3 | Full support3.5 | Full support1 | Full support1 | Full support18 | Full support4 | Full support10.1 | Full support1 | Full support1.0 |
system-ui |
Full support56 | Full support79 | No supportNo打开 | No supportNo | Full support43 | Full support9
Notes Alternate Name
打开 |
Full support56 | Full support56 | No supportNo | Full support43 | Full support9
Alternate Name
打开 |
Full support6.0 |
Legend
- Full support
- Full support
- No support
- No support
- See implementation notes.
- See implementation notes.
- Uses a non-standard name.
- Uses a non-standard name.
下一步
现在你对 CSS 已经有了一定的理解,接下来,通过 CSS 入门的学习,你将可以自己写一些 CSS 代码了。
【C3】01 概述的更多相关文章
- kafka详解(01) - 概述
kafka详解(01) - 概述 定义:Kafka是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域. 消息队列 MQ传统应用场景之异步处理 使用消 ...
- Zookeeper详解(01) -概述
Zookeeper详解(01) -概述 概念 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目. Zookeeper从设计模式角度来理解,是一个基于观察者模式设计的分 ...
- 01 - 概述 VTK 6.0 迁移
摘要 对vtk版本4和5的管道机制重新架架构的主要目的是:迁移数据对象和算法对象中的管道执行逻辑到一个新集合的类中,我们称这个集合类叫executives.分离数据和执行模型的代码后,可以双双简化修改 ...
- Redis数据库 01概述| 五大数据类型
1.NoSQL数据库简介 解决应用服务器的CPU和内存压力:解决数据库服务的IO压力: ----->>> ① session存在缓存数据库(完全在内存里),速度快且数据结构简单: 打 ...
- Hive 01 概述、安装配置
概述 数据仓库:是一个面向主题的.集成的.不可更新的.随时间不变化的数据集合,它用于支持企业或组织的决策分析处理. 数据仓库的结构和建立过程: 数据源 数据存储及管理 ETL Extract 提取 T ...
- 【OracleDB】 01 概述和基本操作
实例概念: Oracle有一个特殊的概念 Oracle数据库 = 数据库 + Oracle文件系统 + Oracle实例 实例处理Oracle的请求,调用文件系统 然后返回结果响应给客户端 单实例和多 ...
- 【大数据面试】Flink 01 概述:包含内容、层次架构、运行组件、部署模式、任务提交流程、任务调度概念、编程模型组成
一.概述 1.介绍 对无界和有界数据流进行有状态计算的分布式引擎和框架,并可以使用高层API编写分布式任务,主要包括: DataSet API(批处理):静态数据抽象为分布式数据集,方便使用操作符进行 ...
- Headfirst JSP 01 (概述)
HTTP 协议 http 是tcp/ip上层协议, 如果你对这些网络协议还不是太熟悉, 下面提供一个非常简单的解释, tcp负责确保从一个网络节点向另一个网络节点发送文件能作为一个完整的文件到达目的地 ...
- Python学习笔记 :01概述
Python基础 首先推荐学习Python基础的教程和书籍 视频教程推荐南京大学张莉老师在cousera上的教程用Python玩转数据 入门教程<Python基础教程> 数据挖掘教程< ...
- 重学C语言---01概述
1.什么是C语言 C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点.计算机语言是从第二次世界大战以后,经历了戏剧性的发展过程.从机器语言到汇编语言和高级语言.C语言是与硬件 ...
随机推荐
- kettle从入门到精通 第二十九课 job 循环 检验字段的值
1.平常我们在用kettle设计job的时候,会用到循环来处理一些业务逻辑,比如循环检测某个表中的数据条数等.这个时候就会用到一个特别重要的步骤:检验字段的值. 下图是一个的通过初始化DNOE变量为f ...
- INFINI Labs 产品更新 | Console 数据迁移支持 Percentiles 均匀分区
INFINI Labs 产品又更新啦~,包括 Console v1.14.0,Gateway 1.21.0.其中 Console 数据迁移支持 Percentiles 均匀分区,修复已知 Bug 等. ...
- ubuntu server 安装慢 安装卡
无论是桌面版本ubuntu,还是server 版本,都喜欢在安装过程中联网下东西: 默认的软件包镜像地址下载非常慢,你自身的网络再差点,可能会安装好几个小时. 解决方案: 方案1: 安装前拔网线. 方 ...
- 微软新Edge浏览器 WIN7 无法登录
由于设备上的系统组件过期,不支持登录.请确保 Windows 为最新版本,然后重新尝试登录.访问 https://go.microsoft.com/fwlink/?linkid=2107246 了解详 ...
- Java类加载和对象创建
引言 Java代码需要被使用,必须要经过类加载器加载到内存中,然后对应的类才能够被创建使用,这文对类加载和对象创建和过程进行分析. 类加载 Java类通过懒加载的方式,经过了Loading.Linki ...
- 使用Kimi+Markmap总结网页内容生成思维导图
AI可以帮助我们更高效地阅读文章进行提炼总结,像上图这张思维导图,就是使用Kimi进行内容提炼,再使用markmap生成思维导图,下面讲解下详细实现步骤: 一.工具准备 Kimi,将文章或一篇网页投给 ...
- 使用GET方法访问网站
使用GET方法访问网站 服务器接收get参数 server.py import flask app = flask.Flask(__name__) @app.route('/') def index( ...
- CAP 8.2 版本发布通告
前言 今天我们很高兴宣布 CAP 发布 8.2 版本正式版,我们在这个版本中主要致力于对订阅着并行执行的特性提供支持,同时添加了对在订阅者中对消息头的控制行为. 下面,具体看一下我们新版本的功能吧. ...
- STM32 学习:IAP 简单的IAP例子
--- title: mcu-stm32-IAP-1-sample date: 2020-05-27 18:21:53 categories: tags: - iap - stm32 --- 章节概述 ...
- 【基础推导】MPC控制器及其车辆模型详细推导 (附代码链接及详细推导说明)
0. 参考与前言 Python 代码:github AtsushiSakai/PythonRobotics C++ 代码:github jchengai/gpir/mpc_controller 相关参 ...