CSS基本结构

选择器(Selector):选择器是用来“寻找”或“指向”希望添加样式的HTML元素,它可以是元素的类型、类(class)、ID等。
声明块(Declaration Block):一旦选择了元素,声明块则用来定义应该应用到这些元素上的样式,声明块由大括号 {} 包围,里面可以有多条声明。
属性(Properties):每个声明都包括一个属性,它指定了要应用于元素的具体样式方面,如颜色、字体、高度等。
属性值(Value):属性后面总跟着一个值,这个值定义了应该如何应用这个属性。
CSS选择器的分类

类型选择器:通过元素类型选取页面中的元素,如p 会选择所有段落。
类选择器:通过类名选取元素,类名由用户自定义,如.intro 会选择所有拥有类名 "intro" 的元素。
ID选择器:通过唯一标识符选取元素,页面中每个ID应该是唯一的,如#header 将选择ID为 "header" 的元素。
伪类选择器:允许用户选择特定状态下的元素,如:hover 用于选择鼠标悬停时的元素。
属性选择器:通过元素的属性选取元素,如[type="text"] 会选择所有类型为 "text" 的元素。

子代选择器和后代选择器:分别选取直接的子元素和所有的后代元素,如ul > li 只选ul直接的li子元素,而ul li 选择所有在ul内的li元素。
CSS规则命名
BEM命名方法:BEM(Block, Element, Modifier)是一种流行的CSS命名约定,旨在提高代码的可读性和复用性。
简写命名法:使用简短且具有描述性的词汇,通常不包含冗余的上下文信息。
连字符分隔法:采用小写字母和连字符来创建CSS类名和ID名,例如.footermenu 或#maincontent。
驼峰式命名法:适用于JavaScript等其他编程语境,但在CSS中通常避免使用,以减少跨语言合作时的混淆。
CSS解析过程
请求响应阶段:浏览器从服务器请求HTML、CSS和JavaScript文件。
解析HTML代码:浏览器解析HTML代码,生成DOM树。
解析CSS代码:解析CSS代码生成CSS对象模型。
合并生成渲染树:将DOM和CSSOM合并生成渲染树。
布局计算阶段:计算每个对象的位置和大小。
绘制阶段:在屏幕上绘制最终的图形界面。
调试与开发者工具
网络面板:查看文件请求和响应状态。
元素面板:查看和编辑页面上的DOM元素和它们的样式。
控制台面板:运行JavaScript代码和查看日志输出。
源代码面板:查看和调试JavaScript、HTML和CSS代码。
性能面板:分析加载时间和运行时性能问题。
相关问题与解答
问题1: 为什么CSS命名推荐使用连字符而不是驼峰式?
答案: CSS选择器的命名推荐使用连字符是因为它能提高代码的可读性,尤其是在CSS的上下文中,连字符分隔的命名方式(hyphenation)更易于阅读和理解,特别是在处理多个单词组成的长类名时,连字符在CSS中是传统的命名习惯,这有助于保持代码的一致性和标准化。
问题2: CSS解析过程中,渲染树是如何生成的?
答案: 在CSS解析过程中,渲染树是由DOM树和CSS对象模型(CSSOM)结合生成的,这一步骤涉及将DOM树上的元素与它们在CSSOM中的样式信息相匹配,确定每个节点的样式,浏览器会计算出每个节点的大小及其在屏幕上的确切位置,从而形成渲染树,渲染树是视觉呈现的最终产物,它决定了网页在浏览器中显示的方式。