CSS 概述
CSS 介绍
CSS(Cascading Style Sheets)通常称为 CSS 样式或层叠样式表,是一种用来为结构化文档(如 HTML 文档或 XML 应用)添加样式(字体、间距和颜色等)以及版面的布局等外观显示样式的计算机语言,CSS 文件扩展名为 .css。
- 样式:给 HTML 标签添加需要显示的效果。
- 层叠:使用不同的添加方式,给同一个 HTML 标签添加样式,最后所有的样式都叠加到一起,共同作用于该标签。
CSS 可以使 HTML 页面更好看,CSS 色系的搭配可以让用户更舒服,CSS + DIV 布局更佳灵活,更容易绘制出用户需要的结构。
CSS 样式规则
-
CSS 样式规则需要写在一个 **style(样式)**标签中
-
CSS 样式规则由两个主要的部分构成:选择器,以及一条或多条声明
-
选择器通常是需要改变样式的 HTML 元素
选择要添加 CSS 样式的 html 标签的方式:根据标签的名称,标签的 id 属性值,标签的 class 属性值等方式
-
每条声明由一个属性和一个值组成
属性(property)是希望给标签设置的样式属性(style attribute),例如大小,颜色等。
每个属性有一个值。属性和值被冒号分开。
-
-
格式:
<style type="text/css">选择器{属性名:属性值;...属性名:属性值;} </style>
CSS 声明总是以分号 ; 结束,声明总以大括号 {} 括起来
-
CSS 注释
注释是用来解释代码,并且可以随意编辑它,浏览器会忽略它。
CSS注释以 /* 开始, 以 */ 结束,实例如下:
/*这是个注释*/
-
示例:
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>CSS样式规则</title><style type="text/css">/*使用标签选择器:根据标签名称选择到对应的标签*/h1{/*给h1标签添加一个字体颜色*/color: red;}h2,div{/*字体颜色*/color: blue;/*字体大小*/font-size: 50px;}</style> </head> <body><h1>我是一个h1标题标签</h1><h1>我是一个h1标题标签</h1><h1>我是一个h1标题标签</h1><h2>我是一个h2标题标签</h2><div>我是div标签</div> </body> </html>
引入 css 样式的方式
-
方式1:行内样式:在标签上直接写 style 属性,属性值就是要设置的样式
格式:
<标签 style="属性名:属性值;属性名:属性值;属性名:属性值;..属性名:属性值;"></标签>
作用域:只针对当前的标签有效
-
方式2:内部(内嵌)样式:在页面中创建一个 style 标签,在标签中写 css 的样式规则
格式:
<style type="text/css">选择器{属性名:属性值;...属性名:属性值;} </style>
作用域:在当前页面中,针对选择器选择到的所有标签都有效
-
方式3:外部(外联)样式:把 css 的样式规则,写在一个以 .css 结尾的文件中
需要在 html 中使用 link 标签引入外部的 css 文件使用
格式:
<link href="外部css文件的路径" type="text/css" rel="stylesheet" />
- href=“外部css文件的路径” :css 文件一般都放在当前项目的 css 文件夹中,所以一般使用相对路径
- type=“text/css” :说明引入的文件是文本类型的 css 文件(固定写法),可省略
- rel=“stylesheet” :stylesheet:样式表,说明引入的 css 文件,是 html 文件的一个样式表(固定写法)
作用域:css 文件可以被多个页面同时引用,哪个页面引用的,对哪个页面中的标签有效
-
样式的优先级:行内样式 > 内部样式|外部样式(内部和外部写在后边的样式会覆盖前边的样式)
-
示例:
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>引入css样式的方式</title> </head> <!--内部(内嵌)样式--> <style>/*选择所有的h1标签*/h1{color: pink;} </style> <!--外部(外联)样式--> <link href="css/1.css" rel="stylesheet"/> <body><!--1.行内样式--><div style="color: red;font-size: 20px">我是一个div</div><div style="color: green">我是一个div</div><div style="color:yellow;">我是一个div</div><!--2.内部(内嵌)样式--><h1 style="color: gold">我是h1标题标签</h1><h1>我是h1标题标签</h1> </body> </html>
1.css文件
h1{color: blue;font-size: 50px; }
CSS 的选择器
使用何种方式选择要添加样式的 html 标签
基本选择器(元素、id、class 选择器)
-
元素(标签,标记)选择器:根据元素(标签,标记)的名称,选择对应的元素
格式:
元素(标签,标记)的名称{属性名:属性值;...}
示例:
<h1></h1> 选择器: h1{属性名:属性值;...} <div></div> 选择器: div{属性名:属性值;...}
-
id 选择器
id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式
需要给元素添加一个 id 属性,通过 id 的属性值选择到元素
格式:
#元素id的属性值{属性名:属性值;...}
示例:
<h1 id="d001"></h1> <div id="d002"></div>选择器:#d001{属性名:属性值;...}
注:
-
html 标签的 id 属性不要以数字开头,数字开头的 id 在 Mozilla/Firefox 浏览器中不起作用
-
不可以给多个 html 元素添加相同的 id 属性值,id 在页面中具有唯一性
如果多个元素的 id 属性值是相同的,JavaScript 可能会出错
-
-
class(类)选择器
class 选择器用于描述一组元素的样式,class 选择器有别于 id 选择器,class 可以在多个元素中使用
需要给元素添加一个 class 属性,通过 class 的属性值选择到元素
格式:
.元素的class属性值{属性名:属性值;...}
示例:
<h1 class="c001"></h1> <div class="c001"></div>选择器: .c001{属性名:属性值;...}
注:
-
**类名的第一个字符不能使用数字!**它无法在 Mozilla 或 Firefox 中起作用。
-
多个 class 选择器可以使用空格分开
-
可以指定特定的 HTML 元素使用 class
例如:所有的 p 元素使用 class=“center” 让该元素的文本居中
p.center {text-align:center;}
-
-
案例
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>CSS的选择器</title> </head><style>/*1.元素(标签,标记)选择器*/h1{color: red;}a{color: green;}/*2.id选择器*/#d001{color: #880088;}/*2.class(类)选择器*/.c001{color: chocolate;}</style> <body><!--元素(标签,标记)选择器--><h1>标题标签</h1><h1>标题标签</h1><a href="#">我是一个超链接标签</a><a href="#">我是一个超链接标签</a><!--id选择器--><div id="d001">我是一个div</div><h2 id="d002">我是一个h2标题标签</h2><!--class(类)选择器--><div class="c001">我是一个div</div><h2 class="c001">我是一个h2标题标签</h2> </body> </html>
扩展选择器(属性、包含、伪类选择器)
-
属性选择器:在一个标签选择器后面使用中括号标记,是对一组标签进一步过滤
语法格式:
标签选择器[标签属性=’标签属性值’]{属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }
-
包含选择器:两个标签之间使用空格,给指定父标签的后代标签设置样式,是对一个标签内部所有后代标签进一步过滤
格式:
父标签选择器 后代标签选择器{属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }
-
案例:
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>CSS的扩展选择器</title><style>/*input{!*背景色*!background-color: green;}*//*给type="text"标签添加样式*/input[type='text']{background-color: green;}/*给type="password"标签添加样式*/input[type='password']{background-color: pink;}/*2.包含选择器(子父类选择器)*//*给div中的div添加样式*/div div{color: yellow;}#d001 h3{color: aqua;}</style> </head> <body><!--1.属性选择器--><input type="text" name="username"/><input type="password" name="password"/><!--2.包含选择器(子父类选择器)--><div>我是div</div><div id="d001"><div>我是div中的div</div><h3>我是div中的h3</h3></div> </body> </html>
伪类选择器
-
伪类选择器:描述一个元素的特殊状态
由于状态的变化是非静态的,所以元素达到一个特定状态时,它可能得到一个伪类的样式;当状态改变时,它又会失去这个样式。由此可以看出,它的功能和 class 有些类似,但它是基于文档之外的抽象,所以叫伪类。
-
常用的伪类选择器:
-
动态伪类选择器
- :link :元素被定义了超链接但并未被访问过
- :visited :元素被定义了超链接并已被访问过
- :active :元素被激活
- :hover :鼠标悬停
- :focus :元素获取焦点
注:在 CSS 定义中,a:hover 必须被置于 a:link 和 a:visited 之后;a:active 必须被置于 a:hover 之后。所以,a 标签的这四种伪类选择器的顺序为:
a:link ,a:visited,a:hover ,a:active
。必须严格按照此规则来设置属性,否则无效。 -
UI 元素状态伪类选择器
- :checked :选中的复选按钮或者单选按钮表单元素
- :enabled :所有启用的表单元素
- :disabled :所有禁用的表单元素
注:UI 元素状态伪类选择器主要是针对 Form 表单元素进行操作,最常见的使用方式如设置 "type=“text” 有 enable 和 disabled 两种状态,enable 为可写状态,disabled 为不可状态。
-
结构伪类选择器
- :fisrt-child :父元素的第一个子元素
- :last-child :父元素的最后一个子元素的元素
- :root :元素所在文档的根元素。在 HTML 文档中,根元素始终是 html,此时该选择器与 html 类型选择器匹配的内容相同
- :nth-child(n) :父元素的第 n 个子元素。其中 n 可以是整数(1,2,3)、关键字(even,odd)、也可以是公式(2n+1),而且 n 值起始值为 1,而不是 0。
- :nth-last-child(n) :父元素的倒数第 n 个子元素。此选择器与 :nth-child(n) 选择器计算顺序刚好相反,但使用方法都是一样的,其中 :nth-last-child(1) 始终匹配最后一个元素,与 last-child 等同。
- :nth-of-type(n) :父元素内具有指定类型的第 n 个元素
- :nth-last-of-type(n) :父元素内具有指定类型的倒数第 n 个元素
- :first-of-type :父元素内具有指定类型的第一个元素,与 nth-of-type(1) 等同
- :last-of-tye :父元素内具有指定类型的最后一个元素,与 :nth-last-of-type(1) 等同
- :only-child :父元素只包含一个子元素,且该子元素匹配元素
- :only-of-type :选择父元素只包含一个同类型子元素,且该子元素匹配选择元素
- :empty :选择没有子元素的元素,而且该元素也不包含任何文本节点
注:使用结构伪类选择器的好处是可以根据元素在文档中所处的位置,来动态地选择元素,从而减少 HTML 文档对 id 或类的依赖,有助于保持代码干净整洁。另外需要注意的是,在结构伪类选择器中,子元素的序号是从 1 开始的。
-
否定伪类选择器
- E:not(F) :选择所有除元素 F 外的 E 元素
-
案例:
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>CSS的扩展选择器</title><style>/*伪类选择器*/ a:link {color: #FF0000} /* 未访问的链接 */a:visited {color: #00FF00} /* 已访问的链接 */a:hover {color: #FF00FF} /* 鼠标移动到链接上 */a:active {color: #0000FF} /* 选定的链接 */</style> </head> <body><a href="http://www.itcast.cn" target="_blank">点击我到传智</a> </body> </html>
-