CSS 是层叠样式表 ( Cascading Style Sheets ) 的简称.
CSS 是也是一种标记语言,CSS 主要用于设置 HTML 页面中的文本内容(字体、大小、对齐方式等)、图片的外形(宽高、边框样式、边距等)以及版面的布局和外观显示样式。
一、CSS样式的使用
1.三种样式
1. 内联样式 * 在标签内使用style属性指定css代码 * 如:<div style="color:red;">hello css</div> 2. 内部样式 * 在head标签内,定义style标签,style标签的标签体内容就是css代码 * 如: <style> div{ color:blue; } </style> <div>hello css</div> 3. 外部样式 1. 定义css资源文件。 2. 在head标签内,定义link标签,引入外部的资源文件 * 如: * a.css文件: div{ color:green; } <link rel="stylesheet" href="css/a.css"> <div>hello css</div> <div>hello css</div> * 注意: * 1,2,3种方式 css作用范围越来越大 * 1方式不常用,后期常用2,3 * 3种格式可以写为: <style> @import "css/a.css"; </style>
二、选择器分类
选择器分为基础选择器和复合选择器两个大类
1. 基础选择器
基础选择器又包括:标签选择器、类选择器、id 选择器和通配符选择器
1.标签选择器
语法:
标签名{ 属性1: 属性值1; 属性2: 属性值2; 属性3: 属性值3; ... }
- 优点
能快速为页面中同类型的标签统一设置样式。 - 缺点
不能设计差异化样式,只能选择全部的当前标签。
2. 类选择器
如果想要差异化选择不同的标签,单独选一个或者某几个标签,可以使用类选择器。
语法:
.类名 { 属性1: 属性值1; ... }
注:我们可以给一个标签指定多个类名,从而达到更多的选择目的。 这些类名都可以选出这个标签.
如:
<div class="red font20">亚瑟</div>
多类名应用场景:
(1) 可以把一些标签元素相同的样式(共同的部分)放到一个类里面.
(2) 这些标签都可以调用这个公共的类,然后再调用自己独有的类.
(3) 从而节省CSS代码,统一修改也非常方便
3. id 选择器
id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式。
HTML 元素以 id 属性来设置 id 选择器,CSS 中 id 选择器以“#" 来定义。
语法:
#id名 { 属性1: 属性值1; ... }
注意:id 属性只能在每个 HTML 文档中出现一次。
id 选择器和类选择器的区别
① 类选择器(class)好比人的名字,一个人可以有多个名字,同时一个名字也可以被多个人使用。
② id 选择器好比人的身份证号码,全中国是唯一的,不得重复。
③ id 选择器和类选择器最大的不同在于使用次数上。
④ 类选择器在修改样式中用的最多,id 选择器一般用于页面唯一性的元素上,经常和 JavaScript 搭配使用。
4. 通配符选择器
在 CSS 中,通配符选择器使用“*”定义,它表示选取页面中所有元素(标签)。
语法:
* { 属性1: 属性值1; ... }
注:
- 通配符选择器不需要调用, 自动就给所有的元素使用样式
- 特殊情况才使用,如清除所有的元素标签的内外边距
* { margin: 0; padding: 0; }
基础选择器总结
2. 复合选择器
- 复合选择器可以更准确、更高效的选择目标元素(标签)
- 复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的
常用的复合选择器包括:后代选择器、子选择器、并集选择器、伪类选择器等等
1. 后代选择器 (☆)
语法:
元素1 元素2 { 样式声明 }
表示选择元素 1 里面的所有元素 2 (后代元素)。
注意:
- 元素1 和 元素2 中间用空格隔开
- 元素1 是父级,元素2 是子级,最终选择的是元素2
- 元素2 可以是儿子,也可以是孙子等,只要是元素1 的后代即可
- 元素1 和 元素2 可以是任意基础选择器
2. 子代选择器
语法:
元素1 > 元素2 { 样式声明 }
表示选择元素1 里面的所有直接后代(子元素) 元素2。
元素1 和 元素2 中间用 大于号 隔开
元素1 是父级,元素2 是子级,最终选择的是元素2
元素2 必须是亲儿子,其孙子、重孙之类都不归他管. 你也可以叫他 亲儿子选择器
3. 并集选择器
并集选择器可以选择多组标签, 同时为他们定义相同的样式。通常用于集体声明.
语法:
元素1,元素2 { 样式声明 }
表示选择元素1 和 元素2。
注:
元素1 和 元素2 中间用逗号隔开
逗号可以理解为和的意思
并集选择器通常用于集体声
4. 伪类选择器
伪类选择器用于向某些选择器添加特殊的效果,比如给链接添加特殊效果,或选择第1个,第n个元素。
伪类选择器书写最大的特点是用冒号(:)表示,比如 :hover 、 :first-child 。
如:①连接伪类选择器:链接伪类选择器link,:visited,:hover,:active。
/* :hover 是链接伪类选择器 鼠标经过 */ a:hover { color: red; /* 鼠标经过的时候,由原来的 灰色 变成了红色 */ }
②:focus 伪类选择器
:focus 伪类选择器用于选取获得焦点的表单元素。
焦点就是光标,一般情况 类表单元素才能获取,因此这个选择器也主要针对于表单元素来说.
如:
input:focus { background-color:yellow; }
复合选择器总结
三、CSS属性
1. 字体属性
font-size:字体大小 font-family:字体 font-weight: 粗细 nromal(默认值,不加粗的,400)/bold(加粗的,700)/ 100-900 font-style:字体样式 italic:倾斜, normal:正常
字体复合属性
body { font: font-style font-weight font-size/line-height font-family; }
- 使用 font 属性时,必须按上面语法格式中的顺序书写,不能更换顺序,并且各个属性间以空格隔开
- 不需要设置的属性可以省略(取默认值),但必须保留 font-size 和 font-family 属性,否则 font 属性将不起作用
2. 文本属性
color:文本颜色2 属性值:RGB,十六进制,英文颜色 text-align:置元素内文本内容的水平对齐方式。 属性值:left,right,center text-decoration :规定添加到文本的修饰。可以给文本添加下划线、删除线、上划线等。 属性值:none 默认,没有装饰线; underline: 下划线; overline: 上划线; line-through: 删除线. text-indent : 用来指定文本的第一行的缩进,通常是将段落的首行缩进。 line-height:用于设置行间的距离(行高)。可以控制文字行与行之间的距离.
注:
- text-indent的使用
//使用px div { text-indent: 10px; } //使用em 通过设置该属性,所有元素的第一行都可以缩进一个给定的长度,甚至该长度可以是负值 p { text-indent: 2em; } //em 是一个相对单位,就是当前元素(font-size) 1 个文字的大小, 如果当前元素没有设置大小,则会按照父元 素的 1 个文字大小。
- line-height 属性用于设置行间的距离(行高)。可以控制文字行与行之间的距离.
p { line-height: 26px; }
图解:
3. 背景样式
background-color:颜色值; 默认为transparent background-image : none | url (url) background-repeat: repeat | no-repeat | repeat-x | repeat-y 背景平铺:在纵向和横向平铺,不平铺,在横向上平铺,在纵向上平铺. background-position: x y; 参数代表的意思是:x 坐标和 y 坐标。 可以使用 方位名词(top/center/bottom/left/right) 或者 精确单位(像素/百分数) background-attachment : scroll | fixed 背景图像是否固定或者随着页面的其余部分滚动。 背景色复合写法: background: transparent url(image.jpg) repeat-y fixed top ; 背景颜色 背景图片地址 背景平铺 背景图像滚动 背景图片位置; background: rgba(0, 0, 0, 0.3); 背景颜色半透明 * 最后一个参数是 alpha 透明度,取值范围在 0~1之间 * 我们习惯把 0.3 的 0 省略掉,写为 background: rgba(0, 0, 0, .3); * 注意:背景半透明是指盒子背景半透明,盒子里面的内容不受影响
注意:
页面元素既可以添加背景颜色也可以添加背景图片,只不过背景图片会压住背景颜色.
四、CSS的元素显示模式
元素显示模式就是元素(标签)以什么方式进行显示,比如<‘div’>自己占一行,比如一行可以放多个 span。
HTML 元素一般分为块元素和行内元素两种类型。
1. 块状元素
常见的块元素有<h1>~<h6>、<p>、<div>、<ul>、<ol>、<li>等,其中 <div> 标签是最典型的块元素。
特点:
① 比较霸道,自己独占一行。
② 高度,宽度、外边距以及内边距都可以控制。
③ 宽度默认是容器(父级宽度)的100%。
④ 是一个容器及盒子,里面可以放行内或者块级元素。
⑤ 高度由子元素撑开
注意:
1. 文字类的元素内不能使用块级元素 2. <p> 标签主要用于存放文字,因此 <p> 里面不能放块级元素,特别是不能放<div> 3. 同理, <h1>~<h6>等都是文字类块级标签,里面也不能放其他块级元素
2. 行内元素
常见的行内元素有 <a>、<strong>、<b>、<em>、<i>、<del>、<s>、<ins>、<u>、<span>等. 其中<span> 标签是最典型的行内元素。有的地方也将行内元素称为内联元素。
行内元素的特点:
① 相邻行内元素在一行上,一行可以显示多个。
② 高、宽直接设置是无效的。
③ 默认宽度就是它本身内容的宽度。
④ 行内元素只能容纳文本或其他行内元素。
注意:
链接里面不能再放链接
特殊情况链接 <‘a’> 里面可以放块级元素,但是给 <‘a’> 转换一下块级模式最安全
行内元素是否可以设置padding和margin?
1.inline元素设置width,height无效
2.inline元素的padding和margin可以设置.但padding垂直方向上padding-top,padding-bottom会合并;margin垂直方向上无效;
综上incline元素水平方向上的padding和margin有效.
3. 行内块元素
在行内元素中有几个特殊的标签 —— <img />、<input />、<td>,它们同时具有块元素和行内元素的特点。有些资料称
行内块元素的特点:
- ① 和相邻行内元素(行内块)在一行上,但是他们之间会有空白缝隙。一行可以显示多个(行内元素特点)。
- ② 默认宽度就是它本身内容的宽度(行内元素特点)。
- ③ 高度,行高、外边距以及内边距都可以控制(块级元素特点)。
4. 元素显示模式总结
注意:
- 特殊:p元素内不能放div元素
- 特殊:a元素里面可以放块状元素
- text-align:center仅对行内元素或行内块元素有效.但对p也有效.
学习元素显示模式的主要目的就是分清它们各自的特点,当我们网页布局的时候,在合适的地方用合适的标签元素
5. 元素的显示模式转换
- 转换为块元素:display:block;
- 转换为行内元素:display:inline;
- 转换为行内块:display: inline-block;
6. 一个妙用—单行文字垂直居中
CSS 没有给我们提供文字垂直居中的代码. 这里我们可以使用一个小技巧来实现.
解决方案: 让文字的行高等于盒子的高度 就可以让文字在当前盒子内垂直居中
简单理解: 行高的上空隙和下空隙把文字挤到中间了. 是如果行高小于盒子高度,文字会偏上,如果行高大于盒子高度,则文字偏下