CSS 如何工作的
CSS(层叠样式表) 是一种样式表语言,用于在网页上添加视觉效果。它被用来描述页面布局和HTML元素的显示。通过CSS可以节省大量的时间。使用它可以同时管理多个网页的布局。它使开发人员能够对不同的元素实现各种自定义属性,从而增强网页的外观。在这篇文章中,我们将了解CSS以及它是如何工作的。
CSS基本上被分为3种类型 –
- 外部CSS --在每个页面上,都会使用元素,link>标签属于head部分。如果你想一次对几个页面进行修改,就使用外部样式表。在这种情况下,它是非常好的,因为它使你只需修改一个文件就能改变整个网站的外观。
-
内联CSS - 如果一个HTML页面有独特的风格,可以使用内部样式表。head部分的style>元素包含了内部样式的定义。
-
内部CSS - 要给一个单一的元素一个独特的外观,可以使用内联样式。通过在适当的元素上添加style属性来使用内联样式。样式属性是任何CSS属性的一个容器。
语法
selector{
property: value;
}
例子
下面是一个如何在HTML页面中使用CSS的例子。在这里,我们有内联CSS。h1元素是下划线,而div元素是绿色的。
<!DOCTYPE html>
<html>
<head>
<title> Using CSS within a HTML page </title>
<style>
h1{
text-decoration: underline;
}
div{
width: 30%;
height: 30px;
background-color: green;
}
</style>
</head>
<body>
<h1> Inline CSS </h1>
<div> This is an example. </div>
</body>
</html>
我们为什么要使用CSS
- 节省时间 - 它可以节省大量时间。由于CSS样式定义被保存在独立的CSS文件中,改变其中一个文件可能会对整个网站产生影响。
-
多种属性 - 与普通的HTML相比,CSS为确定网站的外观和感觉提供了更精确的选择。
-
快速的页面加载 - 在使用CSS时,不一定需要编写HTML标签属性。可以只为一个标签写一次规则,并让它适用于该标签的所有实例。因为CSS使用的代码较少,所以下载速度也比较快。
-
网站维护 - 一个网站需要它来维护。只要改变样式,如果我们需要对文件进行全局修改,网页上的所有组件都会即时更新。由于CSS文件的灵活性,网站的设计可以随时修改。
-
多设备兼容性 --我们可以在以前的语言版本中使用CSS,因为它在传统上与它们是兼容的。正因为如此,如果使用较早版本的编程语言创建CSS应用程序,而开发者将其与较新的发展合并,那么CSS可能很容易与所需的调整相融合,使开发者能够成功地更新现有代码。使用CSS的内容可以满足多种设备类型的需要。
CSS在引擎盖下的工作
为一个给定的HTML元素计算最终的CSS属性的实际程序是一系列极其复杂的步骤–
数据积累
在这个阶段,一个特定元素的所有样式声明都是从用户代理、编写者和用户等不同来源收集的。这些声明必须经过过滤和验证,以确定它们是否来自现在适用于这个文档的样式表,并且在语法上是有效的。
级联
CSS这个词代表层叠样式表,这是CSS的基本概念。这个阶段必须被彻底理解,因为它是唯一一个受开发者影响很大的阶段,是作者的起源。这个阶段采用上一步收集到的无序的声明列表,并使用以下标准将它们按优先级降序排列-
- 基于声明来源(用户代理、用户、作者、过渡、动画)和!重要注释的混合。
-
基于选择器的特殊性
-
基于它们的编写顺序
设置默认值
当没有声明时,当试图为一个元素的CSS属性设置一个值时,会调用这个步骤。
修复
为了在响应式设计中获得最大的灵活性,我们使用一些相对单位(auto, em, rem, vh)、相对URL、百分比或某些人类可读的关键词(small, normal, bold)。这个阶段将尝试解决尽可能多的属性值,而不需要铺设文档,执行网络查询,或从其父级以外的地方获取数值。
格式化
这一阶段将对整个文档进行格式化,并通过尝试计算文档布局中所使用的绝对理论值来完成上一步骤的任何遗留工作。这个阶段的重点是元素的相对协调、自动布局和灵活布局等情况。它需要进行多次计算,但产生的绝对数字几乎是完全可用的,供浏览器使用。
最终修改
在绘制之前,这个最后阶段会根据冲浪环境进行一些修改,如浏览器引擎、媒体种类、设备像素密度或操作系统。将浮点数四舍五入为整数,或根据可用字体改变字体大小,是两个经常发生的变化。
结论
由于CSS层叠是CSS中最容易被误解的方面之一(而且经常是许多错误的源头),了解它的工作原理将为你保持你的样式表的可管理性提供一个重要优势。然而,更多的责任感来自于对CSS级联的理解。级联中更专业的部分(如!重要、内联样式和id选择器)产生的样式表更难在将来被改变或覆盖。