软件的两部分
客户端和服务器
html中的实体(转义字符)
&+实体的名字
eg:空格
css选择器权重
内联样式(1,0,0,0) > id选择器(0, 1, 0, 0) > 类和伪类选择器(0, 0, 1, 0) > 元素选择器(0, 0,0, 1) > 通配选择器(0, 0, 0, 0)> 继承的样式(没有优先级)
可以在某一个样式的后面加 !important,则此时该样式会获取到最高的优先级,但不推荐使用。
像素和百分比
像素:屏幕实际是一个个的小点点构成的
不同屏幕的像素大小是不同的,像素越小的屏幕显示的效果越清晰
百分比:可以设置属性值设置为相对于父元素的百分比
可以使子元素跟随父元素的改变而改变
em:是相对于元素自身的字体大小来计算的
1em = 1 font-size, 会根据字体的大小而改变
rem: 是相对于根元素的字体大小来计算(html里的字体大小)
文档流
最底下的一层为文档流,是网页的基础,我们所创建的元素默认都是在文档流进行排列
-状态: 在文档流和脱离文档流
元素在文档流中的特点
块元素
会在页面中独占一行
默认宽度是父元素的全部(会把父元素撑满)
默认高度是被内容撑开(子元素)
行内元素
不会独占一行,只占自身的大小,不能设置宽度和高度
在页面中自左向右水平排列
盒模型、框模型:
css将页面中的所有元素都设置为一个矩形的盒子
将元素设置为矩形的盒子后,对页面的布局就变成将不同的盒子摆放到不同的位置一个盒子的可见框的大小,由内容区内边距和边框共同决定,所以在计算盒子大小时,需要三个区域加到一起。
组成:
内容区(content):由width和height两个属性设置
内边距(padding);
边框(border):
需要设计边框三个样式
颜色: border-color
宽度:border-width (四个值:上 右 下 左, 三个值:上 左右 下)
边框样式:border-style
外边距(margin)
不会影响盒子可见框的大小,但是会影响盒子的位置,和影响盒子实际占用空间
水平布局
一个元素在父元素中,水平布局必须满足父元素宽度,
即,margin-left+border-left+padding-left+width+padding-right+border-right+margin-right = 父元素宽度
在纵向布局
不需要去刻意满足父元素的高度
overflow属性来设置父元素如何处理溢出的
visible默认值子元素会从父元素中溢出,在父元素外部的位置显示
hidden 溢出内容将会被裁剪不会显示
scroll 生成两个滚动条,通过滚动条来查看完整内容
auto 根据需要生成滚动条
阴影
box-shadow
第一个值水平偏移量,第二个值垂直偏移量,第三个值阴影的模糊半径,第四个值为阴影颜色
浮动(进行块元素水平布局)
通过浮动可以使一个元素向其父元素的左侧或右侧移动
使用float属性来设置于元素的浮动
注:元素设置浮动以后,水平布局的等式便不需要强制执行
元素设置浮动以后,会完全从文档流中脱离,不再占用文档流的位置,所有元素下边的还在文档流中的元素会自动向上移动。
特点:
1、元素设置浮动以后,会完全从文档流中脱离,不再占用文档流的位置
2、设置浮动以后元素会向父元素的左侧或右侧移动
3、浮动元素默认不会从父元素中移出
4、浮动元素向左或向右移动时,不会超过它前面的其他浮动元素
5、浮动元素不会超过它上边的浮动的兄弟元素,最多最多就是和它一样高
6、浮动元素不会盖住文字,文字会自动环绕在浮动元素的周围(可实现文字环绕的功能)
7、元素浮动从文档流中脱离后,元素也会发生一些特点
脱离文档流的特点
块元素:
1、块元素不在独占一行
2、脱离文档流之后,块元素的宽度和高度默认都被内容撑开
行内元素
行内元素脱离文档流以后会变成块元素,特点和块元素相同
问题:
高度塌陷
在浮动布局中,父元素的高度默认是被子元素撑开的
当子元素浮动后,其会完全脱离文档流,子元素从文档流中脱离
将会无法撑起父元素的高度,导致父元素的高度丢失
父元素高度丢失以后,其下的元素会自动消失,导致页面的布局混乱
高度塌陷问题是浮动布局中比较常见的一个问题,这个问题我们必须要进行处理
BFC(块级格式化环境)
BFC是一个CSS中的一个隐藏的属性,可以为一个元素开启BFC, 开启后该元素会变成一个独立的布局区域
开启BFC后的特点:
1、开启BFC的元素不会被浮动元素所覆盖
2、开启BFC的元素子元素和父元素外边距不会重叠
3、开启BFC的元素可以包含浮动的子元素
可以通过一些特俗方式来开启BFC
1、设置元素的浮动 (不推荐)
2、将元素设置为行内块元素(不推荐)
3、将元素的overflow设置为一个非visible的值(副作用最小)
常用的方式为浮动元素的父元素/兄弟元素设置overflow:hidden开启BFC以使其可以包含浮动元素
可以通过clear属性来清除浮动元素对当前元素的影响
原理:设置清除浮动之后,浏览器会自动为元素添加一个上外边距,使其位置不受其他元素影响
高度塌陷问题的最终解决方案
利用after伪元素可以完美高度塌陷问题(最外层元素后加)
clearfix这个样式可以同时解决高度塌陷和外边距重叠的问题,当你在遇到这些问题时,直接使用即可
.clearfix::before,
.clearfix::after{
content: '';
display: table;
clear: both;
}
定位
通过定位可以将元素摆放到页面任意位置
使用position属性来设置定位
可选值:
static默认值,元素是静止的没有开启定位
relative开启元素的相对定位
特点:
1、元素开启相对定位后,如果不设置偏移量元素不会发生任何的变化
2、相对定位是参照于元素在文档流中的位置进行定位的
3、相对定位会提升元素的层级
4、相对定位不会使元素脱离文档流
5、相对定位不会改变元素的性质
absolute开启绝对定位
特点:
1、元素开启绝对定位后,如果不设置偏移量元素位置不会发生任何的变化
2、开启绝对定位后,元素会从文档流中脱离
3、绝对定位会改变元素的性质,行内变成块,块的高度被内容撑开
4、绝对定位回事元素提升一个层级
5、绝对定位是相对于其包含块进行定位的
fixed开启元素的固定定位
特点:
1、固定定位也是一种绝对定位,所有固定定位的大部分特点于绝对定位相同
2、固定定位永远参照于浏览器的视口进行定位
3、固定定位不会随网页的滚动条滚动
sticky开启元素的粘滞定位
特点:
1、粘滞定位和相对定位的特点基本一致,
不同的是粘滞定位可以在元素到达某个位置时将其固定
偏移量offset
当开启了定位后,可以通过偏移量来设置元素的位置,只影响开启定位元素,不影响其他元素
top:
定位元素和定位位置上边的位置
bottom,left,right
包含块:
1、正常情况下:
包含块就是离当前元素最近的祖先块元素
2、绝对定位的包含块:
包含块就是离它最近的开启了定位的祖先元素
如果所有的祖先元素都没有开启定位则根元素就是它的包含块
HTML:根元素、初始包含块
绝对定位元素的布局
当开启绝对定位后:
水平方向的布局等式就需要添加left和right两个值
此时规则和之前一样只是多出两个值
当发生过度约束:
如果9个值中没有auto,则自动调整right值以使等式满足
可设置auto的值
margin、width、left、right
垂直方向的等式也必须满足等于包含块高度
对于开启了定位的元素,可以通过z-index属性来指定元素的层级
需要一个整数作为参数,值越大元素的层级越高,元素的层级越高越优先显示
如果元素的层级相同时,优先显示靠下的元素
祖先的元素的层级再高也不会盖住后代元素
图标字体
fontawesome库
通过伪元素设置图标字体::before/::after
通过实体&#x