@[toc](CSS 学习总结)
css简要介绍
什么是CSS
css是层叠样式表 (Cascading Style Sheet),又叫级联样式表,简称样式表。
css作用
- 用于HTML文档中元素样式的定义。 实现了将内容与表现分离。 提高代码的可重用性和可维护性。
- 文件后缀是.css。
css与HTML之间的关系
- HTML用于构建网页的结构
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
< meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
内容区域
</body>
</html>
- CSS用于构建HTML元素的样式
- HTML是页面的内容组成,CSS是页面的表现
结构层 HTML 表示层 CSS 行为层 JS
导入CSS的方式
- 内联方式 直接把CSS代码用style属性添加到开始标签中
<p style="color:gold;" >金色字体</p>
- 内部样式 直接把CSS代码添加到头部的style标签中
<head>
<style>
p{color:red;}
</style>
</head>
- 外部样式表
<link rel="stylesheet" href=""/>
引入外部的CSS样式,这样用的比较多 4. 导入式
<head>
<style>
@import url(my.css);
</style>
</head>
优先级:行内样式>内部样式>外部样式>导入样式
CSS的基本使用规则
CSS语法
- CSS是以属性/值对形式出现
- 属性和属性值之间用冒号(:)连接
- 多对属性之间用分号(;)隔开
CSS样式表特征
- 继承性
- 层叠性
- 优先级
CSS基础选择器
- 通用选择器,全局选择器(*) 可以与任何元素匹配 常用于设置一些默认样式 优先级最低
- 元素选择器 HTML文档中的元素 p、b、div、a、img、body等
- 类选择器 如:.body{color:red;} 类名不能以数字开头 一个页面中class名字可以重复
- ID选择器 #box{color:skyblue;} id的名字不能重复ID属性是惟一的
- 合并选择器 语法:选择器1,选择器2,.....{} 可以提取共同的样式,减少重复代码
div+css布局
内容和显示分离,便于维护扩展,网页布局方便,当需求改变的时候,效果最明显 div 1. 可定义文档中的分区 2. 可以把文档分割为独立的、不同的部分 3. 是一个块级元素,独占一行 4. 通常与CSS配合
CSS基础样式
字体的设置
-
color 定义文本的颜色 如:
div{color:red;} div{color:#ffffff} div{color:rgb(255.255.255);} -
font-style 设置文本是否倾斜 normal(正常字体) 默认值 italic 斜体 如
p{font-style:italic;} /* 倾斜 */ -
font-size 设置文本字体的大小
p{font-size:12px;}通过像素来指定字体的大小 1px=1像素
-
font-family 定义文本使用某个字体
p{font-family:microsoft YaHei;}
可以设置多个字体,排名越靠前优先级越高 默认值由浏览器决定
- font-weight 指定文字的粗细
p{ font-weight:normal;} /* 默认值 */ p{ font-weight:bold;} /* 粗体 */ - font 是上面 几个属性的复合属性
font:font-style font-weight font-size/line-height font-family
font-style font-weight 可以不写 也可以交换位置
font-size/line-height font-family 必须写 能交换位置
有继承性:给父元素设置了,子元素也可以继承到 经典应用:给body设置字体相关的属性。
文本属性
- text-align 内容对齐方式,他是针对于元素的内容
属性值:left、center、right
p{text-align:left;} /* 左对齐 */ p{text-align:center;} /* 居中 */ p{text-align:right;} /* 右对齐 */p标签是块级元素,left、center、right会作用于整行
- text-decoration 设置文字是否有修饰线,默认值是none
p{text-decoration:underline;} /* 指定文字的修饰线是下划线 */ p{text-decoration:overline;} /* 指定文字的修饰线是上划线 */ p{text-decoration:through;} /* 指定文字的修饰线是贯穿线,类似于删除标签的效果 */常用text-decoration:none;来去除a标签的下划线
- text-indent 文本缩进
文本缩进属性是用来指定文本的第一行的缩进
也可以隐藏一个盒子中的文本
如
p{text-indent:2em} /* 首行缩进2个文字的大小 */ p{text-indent:-9999em;} /* 用来隐藏文本 */1em和当前字体大小相等。如在谷歌浏览器中默认字体是16px, 那么,1em的默认大小是16px。
- word-wrap 设置当前行超过指定容器的边界时是否换行 首先要知道一种情况:如果容器中的单词过长,超出了容器本身的宽度会造成长单词溢出 word-wrap:break-word;可设置过长的文本自动换行。
- line-height 设置对象的行高(不允许使用负值)
normal 默认,设置合理的行间距
number 设置数字,此数字会与当前的字体尺寸相乘来设置行间距
如果子标签是南标签,行高可以撑起子标签的高度 如果子标签是女标签,行高不能撑起子标签的高度
盒子模型
- 盒子模型是CSS中一个重要的概念,理解了盒子模型才能更好的排版。W3C组织建议把网页上元素看成是一个个盒子。盒模型主要定义四个区域:内容(content)、内边距(padding)、边框(border)、外边距(margin)。
- border 边框
border属性设置一个元素的边框,它有三个要素:宽、样式、颜色,统称边框三要素。
三要素书写的时候一般如下顺序
border:宽度 样式 颜色;
如
div{border:1px solid red;} /* 1像素红色的实线边框 */
div{border:1px dotted red;} /* 1像素红色的点状边框 */
div{border:1px dashed red;} /* 1像素红色的虚线边框 */
div{border:3px double red;} /* 红色的双线边框最小3像素不然显示不下 */
border的三要素可以统一写在"border"属性中,也可以单独设置 border-width: ; border-style: ; border-color: ; 在style属性为空的情况下,整个边框是不会出现的,不写width会有默认3像的值,不写颜色会默认为黑色。
-
margin 外边距
margin是围绕在元素边框周围的空白区域,会在元素外创建额外的空白区域,外边距是透明的
单边设置: margin-top/right/bottom/left:value; value可取值为像素、%、auto、负值 外边框简写: margin:value(四个方向相同); margin:value(上下) value(左右); margin:value(上) value(左右) value(下);
margin:value(上) value(右) value(下) value(左) -
padding 内边距
内容区域和边框之间的空间,会扩大元素边框所占用的区域
语法: padding:value; 单边设置: padding-top/right/bottom/left:value; value可取值为像素,百分比,但不能为负数 padding的简写:
> padding:value(四个方向相同); > padding:value(上下) value(左右); > padding:value(上) value(左右) value(下); > padding:value(上) value(右) value(下) value(左); -
内容区域 width和 height 对于男盒子来说,表示内容区域 对于女盒子来说,width和height不起作用 > 注意点 1)不设有默认值,宽度默认值是auto,对于块级元素来说auto表示尽可能大,对于行内元素来说,auto表示尽可能小。 2)如果不设置高度,男盒子的高度是内容的高度,也就是说高度是由内容撑起来的,对于女盒子来说也是由内容撑起来的,但是和font-size也有关系。 3)宽度和高度可以设置百分比,是占父元素的百分比,一般情况下在移动开发时用的多一点。
-
background 背景 1.background-color:设置盒子的背景颜色 ,背景色可以填充padding,也可以填充margin 2.background-image:设置盒子的背景图片 img标签也是盒子 也可以给img这个盒子设置背景图片
一个盒子大小正好和背景图大小一样:正好装进去 一个盒子如果大于背景图:默认会在x和y轴进行平铺 一个盒子如果小于背景图:只会显示背景图的一部分背景图的左上角和盒子的左上角对齐,左上角是指从padding开始,但是border中也会填充背景图片
3.background-repeat:控制是否平铺 repeat-x 只平铺x轴 repeat-y 只平铺y轴 repeat x和y轴都平铺 no-repeat 不平铺 3.一个盒子中放一个大的或小的背景图,可以使用background-position进行定位
浮动
浮动的初衷:为了实现新闻的自围效果
浮动的元素半脱离标准文档流: 出国了 浮动刚开始是为了实现自围效果,文字并不会钻到浮动的元素后面,文字会环绕浮动的元素分布,就叫自围效果。 现在我们基本上利用浮动并不是为了实现自围效果, 我们主要使用浮动来让块级元素并排显示。
浮动元素的特点: 1.贴靠性 如果都向同一个方向浮动,这两个浮动的元素会紧紧地贴在一起,如果后面的空间不够贴靠的话,它会自动换行。 2.包裹性 如果是一个男盒子,在没有设置宽度的情况下,只要它浮动了,那么它的宽度会尽可能小 3.一个元素内部所有元素都浮动了,如果父元素在没有设置高度的情况下它的高度会变成0,也就是说父元素的高度塌陷了。 4. 如果一个女盒子浮动了,就可以设置宽度和高度,女盒子就变成了男盒子。 元素浮动会造成影响: 1.对父元素造成影响 2.对后面的兄弟元素造成影响 我们需要清除浮动所造成的影响,也叫清除浮动: 清除对父元素造成的影响 1.overflow:hidden 2.加高法 元素浮动也会对他后面的元素造成影响: 后面的元素会钻上去,但是文字不会,文字会形成自围效果。对兄弟元素造成影响,我们需要清除这种影响,也叫清除浮动。 最专业的:clear:left/right/both clear:both
clear:both只能写在第一个受影响的元素上,写在父元素上没效果 注意: DIV中浮动的元素脱离不了父元素,可以影响父元素的高度,会跑到别的盒子中 如果一个盒子浮动,另一个不浮动或者定位(完全脱离标准文档流)可以让两个盒子重叠到一起 两个浮动的元素不能重叠到一起 浮动的元素都实现向上浮动到父盒子的边界
元素
块级元素 div、p、h等 特点: 1.独占一行 2.默认宽度和父元素一样宽 3.css设定的宽高有效
行内元素 span、a、em、strong等 特点: 1.不会独占一行 2.宽度由内容决定 3.在css中设置宽度不起作用
行内块元素 img标签等 特点: 1.不会独占一行 2.可以设置宽高且有效
元素的模式转换 display:block;
把某个元素的显示模式修改为块级元素,在img标签设置这个属性可以去除图片默认的3px间隙
display:inline;
把某个元素的显示模式修改为行内元素
**display:inline-block;
把某个元素的显示模式修改为行内块模式
元素的显示和隐藏
display:none; 没有显示模式,既看不见也不占据位置 visibility:hidden; 隐藏,虽然看不见,但是占据位置 visibility:visible; 可见(visibility的默认值)
伪类
- :link 控制a标签的地址没有被访问过的样式
- :visited 控制a标签的地址已经被访问过的样式
- :hover 控制a标签鼠标移动到之上的时候的样式,且 hover不仅仅是a可以使用,其他的元素也可以使用
- :active 控制a标签,在按下没有松开的时候的样式
定位
-
相对定位 position:relative; 特点 (1)没有脱离标准流,还是会占据在标准流中的位置 (2)没有改变显示模式 (3)定位基准是他自己原来的位置
-
绝对定位 position:absolute; 特点 (1)脱离标准流,不占据原来的位置 (2)改变了元素的显示模式 (3)定位的基准是:
- 如果前代没有定位,绝对定位的基准是浏览器(body) 如果前代定位了,绝对定位的基准就是离最近的定位的前代元素 子绝父相 -- 绝对定位和相对定位一起使用
精灵图
目的 提高页面的加载速度,减少服务器的压力 制作 (1)一定要是小图片(最好是不太会发生变化) (2)精灵图在制作的时候宽度一定要大于最大的那张图片的宽度 (3)图片与图片之间必须要有空隙 (4)在精灵图制作完成之后一定要将精灵图下方留出足够的位置,方便将来进行扩展