CSS(层叠样式表,Cascading Style Sheets)是用来描述HTML或XML(包括SVG、MathML或XHTML等)文档的外观和格式的语言。它提供了强大的功能来控制网页的布局、颜色、字体、间距等视觉效果,从而使得网页不仅内容丰富而且美观。CSS 的主要使用场景就是美化网页,布局页面的,CSS 规则由两个主要的部分构成:选择器以及一条或多条声明。
<style type="text/css">
h1 (选择器) { color(属性):red(值); (声明).....}
p { color: blue; font-size: 16px; }
<style>
- 选择器是用于指定CSS 样式的 HTML 标签,花括号内是对该对象设置的具体样式。
- 属性和属性值以“键值对”的形式出现。
- 属性是对指定的对象设置的样式属性,例如字体大小、文本颜色等。
- 属性和属性值之间用英文" : "分开。
书写规范
- 展开格式
- 使用英文小写
- 属性值前面,冒号后面,保留一个空格
- 选择器(标签)和大括号中间保留空格
选择器分基础选择器和复合选择器两个大类
基础选择器是由单个选择器组成的
一、CSS的基础选择器
基础选择器包括:标签选择器、类选择器、id选择器和通配符选择器
1.标签选择器
标签选择器(元素选择器)是指用HTML标签名称作为选择器,按标签名称分类,为页面中某一类标签指定统一的 CSS 样式。
标签名 {
属性1:属性值1;
属性2:属性值2;
属性3:属性值3;
.......
}
2.类选择器
如果想要差异化选择不同的标签,单独选一个或者某几个标签,可以使用类选择器,以.
开头,用于选择具有特定类名的所有元素。
. 类名 {
属性1:属性值1;
属性2:属性值2;
…..
}
.red { color: red; }
.font { font-size: 16px; }
结构需要用 class 属性来调用 class 类的意思
<div class='red'>变红色</div>
注意
- 类选择器使用“.”(英文点号)进行标识,后面紧跟类名(自定义,自己命名的)
- 可以理解为给这个标签起了一个名字,来表示。
- 长名称或词组可以使用中横线来为选择器命名。
- 不要使用纯数字、中文等命名,尽量使用英文字母来表示。
- 命名要有意义,尽量使别人一眼就知道这个类名的目的。
- 命名规范
多类名
可以把一些标签元素相同的样式(共同的部分)放到一个类里面。这些标签都可以调用这个公共的类,然后再调用自己独有的类。从而节省CSS代码,统一修改也非常方便。
使用方式
<div class="red font">优秀</div>
- 在标签class 属性中写 多个类名
- 多个类名中间必须用空格分开
3.Id选择器
id 选择器可以为标有特定id的 HTML元素指定特定的样式。
HTML 元素以id 属性来设置id 选择器,CSS 中 id 选择器|以“#"来定义。
# id名 {
属性1:属性值1;
属性2:属性值2;
…...
}
注意:id 属性只能在每个HTML 文档中出现一次。
id 选择器和类选择器的区别
- 类选择器(class)可以多次使用
- id 选择器只能用一次
4.通配符选择器
在CSS中,通配符选择器使用它表示选取页面中所有元素(标签)
* {
margin: 0px;
padding: 0px;
}
通配符选择器不需要调用,自动就给所有的元素使用样式
基础选择器 | 作用 | 特点 | 使用 | 用法 |
标签选择器 | 可以选出所有相同的标签,比如p | 不能差异化选择 | 较多 | p{ color: red;} |
类选择器 | 可以选出1个或者多个标签 | 可以根据需求选择 | 非常多 | .nav { color:red; } |
id选择器 | 一次只能选择1个标签 | ID属性只能在每个 HTML文档中出现一次 | 一般和js搭配 | #nav {color:red;} |
通配符选择器 | 选择所有的标签 | 选择的太多,有部分不需要 | 特殊情况使用 | * {color: red;} |
二、CSS复合选择器
在 CSS 中,可以根据选择器的类型把选择器分为基础选择器和复合选择器,复合选择器是建立在基础选择器之上,对基本选择器进行组合形成的。
- 复合选择器可以更准确、更高效的选择目标元素(标签)。
- 复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的。
- 常用的复合选择器包括:后代选择器、子选择器、并集选择器、伪类选择器等等。
1.后代选择器
后代选择器又称为包含选择器,可以选择父元素里面子元素。其写法就是把外层标签写在前面,内层标签写在后面,中间用空格分隔。当标签发生嵌时,内层标签就成为外层标签的后代。
元素1 元素2 { 样式声明 }
( 上述语法表示选择元素 1里面的所有元素2(后代元素)。)
ul li { 样式声明 } /* 选择 ul 里面所有的 li标签元素 */
- 元素1和 元素2 中间用空格隔开。
- 元素1是父级,元素2是子级,最终选择的是元素2。
- 元素2 可以是儿子,也可以是孙子等,只要是元素1的后代即可。
2.子选择器
子元素选择器(子选择器)只能选择作为某元素的最近一级子元素。
元素1 > 元素2 { 样式声明 }
(上述语法表示选择元素1 里面的所有直接后代(子元素) 元素2。
div > p { 样式声明 } /+ 选择 div 里面所有最近一级 p 标签元素*/
- 元素1和 元素2 中间用 大于号 隔开。
- 元素1是父级,元素2是子级,最终选择的是元素2。
3.并集选择器
并集选择器可以选择多组标签,同时为他们定义相同的样式。通常用于集体声明。
并集选择器是各选择器通过英文逗号(,)连接而成,任何形式的选择器都可以作为并集选择器的一部分。
元素1 , 元素2 { 样式声明 }
上述语法表示选择元素1和元素2。
ul , div{ 样式声明 } /*选择ul和 div标签元素古*/
- 元素1和元素2中间用英文逗号隔开
- 逗号可以理解为和的意思
- 并集选择器通常用于集体声明
4.伪类选择器
伪类选择器用于向某些选择器添加特殊的效果,比如给链接添加特殊效果,或选择第1个,第n个元素。
伪类选择器书写最大的特点是用冒号( : )表示,比如 : hover、: first-child。
因为伪类选择器很多,比如有链接伪类、结构伪类等。
a : link | /*选择所有未被访问的链接*/ |
a : visited | /*选择所有已被访问的链接*/ |
a : hover | /*选择鼠标指针位于其上的链接*/ |
a : active | /*选择活动链接(鼠标按下未弹起的链接)* |
链接伪类选择器注意事项:
按照 LVHA 的循顺序声明 : link - : visited - : hover- : active 。
5. : focus 伪类选择器
: focus 伪类选择器用于选取获得焦点的表单元素。
焦点就是光标,一般情况<input>类表单元素才能获取,因此这个选择器也主要针对于表单元素来说。
Input : focus {
background-color : yellow ;
}
总结
选择器 | 作用 | 特征 | 使用情况 | 隔开符号及用法 |
后代选择器 | 用来选择后代元素 | 可以是所有的 | 较多 | 符号是空格 .nav a |
子代选择器 | 选择最近一级元素 | 只选最靠近的一个 | 较少 | 符号是大于 .nav>p |
并集选择器 | 选择某些相同样式的元素 | 可以用于集体声明 | 较多 | 符号是逗号.nav,.header |
链接伪类选择器 | 选择不同状态的链接 | 跟链接相关 | 较多 | 重点记住 a{ } 和 a:hover 实际开发的写法 |
:focus 选择器 | 选择获得光标的表单 | 跟表单相关 | 较少 | input:focus 记住这个写法 |
三、引入方式
按照 CSS 样式书写的位置(或者引入的方式),CSS样式表可以分为三大类。
- 行内样式表(行内式)
- 内部样式表(嵌入式)
- 外部样式表(链接式)
1 内部样式表
内部样式表(内嵌样式表)是写到html页面内部,是将所有的 CSS 代码抽取出来,单独放到一个<style>标签中。
- <style> 标签理论上可以放在HTML 文档的任何地方,但一般会放在文档的 <head> 标签中。
- 通过此种方式,可以方便控制当前整个页面中的元素样式设置。
- 代码结构清晰,但是并没有实现结构与样式完全分离。
- 使用内部样式表设定CSS,通常也被称为嵌入式引入,这种方式是我们练习时常用的方式
2 行内样式表
行内样式表(内联样式表)是在元素标签内部的 style 属性中设定 CSS 样式。适合于修改简单样式。
<div style= "color : red ; font-size :12px ; ">2025新年快乐</div>
- style 其实就是标签的属性。
- 在双引号中间,写法要符合CSS规范。
- 可以控制当前的标签设置样式。
- 由于书写繁琐,并且没有体现出结构与样式相分离的思想,所以不推荐大量使用,只有对当前元素添加简单样式的时候,可以考虑使用。
- 使用行内样式表设定CSS,通常也被称为行内式引入。
3 外部样式表
实际开发都是外部样式表,适合于样式比较多的情况,核心是:样式单独写到CSS 文件中,之后把CSS文件引入到 HTML页面中使用.
引入外部样式表分为两步
1.新建一个后缀名为.css 的样式文件,把所有 CSS 代码都放入此文件中。
2.在 HTML页面中,使用<link>标签引入这个文件。
<link rel="stylesheet" href="css文件路径">
四、CSS特性
CSS 有三个非常重要的三个特性:层善性、继承性、优先级。
1 层叠性
相同选择器给设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式。层叠性主要解决样式冲突的问题。
层曼性原则:
- 样式冲突,遵循的原则是就近原则,哪个样式离结构近,就执行哪个样式
- 样式不冲突,不会层叠。
2 继承性
CSS中的继承: 子标签会继承父标签的某些样式,如文本颜色和字号。简单的理解就是:子承父业。
- 恰当地使用继承可以简化代码,降低CSS样式的复杂性。
- 子元素可以继承父元素的样式( text-,font-,line- 这些元素开头的可以继承,以及color属性)
行高的继承性
body {
font : 12px/1.5 Microsoft YaHei ;
}
1.5:指行高是当前文字大小的1.5倍的 1.5*12=18px
- 行高可以跟单位也可以不跟单位
- 如果子元素没有设置行高,则会继承父元素的行高为1.5
- 此时子元素的行高是:当前子元素的文字大小*1.5
3 优先级
当同一个元素指定多个选择器,就会有优先级的产生
- 选择器相同,则执行层叠性
- 选择器不同,则根据选择器权重执行
选择器 | 选择器权重 |
继承 或者 * | 0.0.0.0 |
元素选择器 | 0.0,0 1 |
类选择器,伪类选择器 | 0.0.1.0 |
ID选择器 | 0.1.0.0 |
行内样式 style="" | 1.0.0.0 |
!important 重要的 | ∞ 无穷大 |
注意点:
1.权重是有4组数字组成,但是不会有进位。
2.可以理解为类选择器永远大于元素选择器,id选择器永远大于类选择器,以此类推。
3.等级判断从左向右,如果某一位数值相同,则判断下一位数值。
4.可以简单记忆法: 通配符和继承权重为0,标签选择器为1,类(伪类)选择器为10,id选择器 100,行内样式表为1000,!important无穷大.
5.继承的权重是0,如果该元素没有直接选中,不管父元素权重多高,子元素得到的权重都是 0。
权重叠加 : 如果是复合选择器,则会有权重叠加,需要计算权重。
CSS是一个强大的工具,有丰富的特性和功能,包括但不限于动画、转换、网格布局、Flexbox等,这些特性使得Web界面的设计更加动态和互动。