20200817 岳浩天
学习知识
1.opacity=0,该元素隐藏起来了,但不会改变页面布局,并且,如果该元素已经绑定-些事件,如点击事件, 那么点击该区域,也能触发点击事件的
visibility: hidden;隐藏,该元素隐藏起来了,但不会改变页面布局,但是不会触发该元素已经绑定的事件
display:none,把元素隐藏起来,并且会改变页面布局,可以理解成在页面中把该元素删除掉--样
浮动float
将元素排除在文档流之外即脱离文档流,元素不再占据页面空间(但依然会显示),其他未
浮动元素要往前补位
浮动定位的特点:
①元素一旦浮动,脱离文档流,便不再占据页面空间,后面未浮动元素上前补位
②浮动元素会停靠在父元素的左边或者右边,或者其他已浮动元素的左边或者右边
③浮动元素依然会在包含框内,元素只会在当前行浮动
④父级元素横向显示不下所有的浮动元素,显示不下的元素会自动换行
⑤浮动元素能够让多个块级元素在一行内显示
4.元素一旦浮动就回脱离文档流变为块级元素
5.文本、行内元素、行内块 遇到浮动元素的特殊情况:他们如果不浮动,是不会被浮动元素覆盖的,而是巧妙的避开环绕着浮动元素显示
高度坍塌
定义
块级元素的高,如果不设置,默认靠内容撑开,如果没有设置高的块级元素,内部的所有子元素都浮动,这个块级元素认为自己内部没有元素,所以就没有高了,这种现象叫做高度坍塌
解决高度坍塌
- 父元素设置高度,弊端:不是每次都能明确知道具体高度
- 父元素设置浮动,弊端:会影响父元素后续元素
-
为父元素设置overflow属性,弊端:如果有内容要溢出显示(弹出菜单),也会被一同隐藏,,取值:hidden/auto
-
父元素设置display:table,弊端:盒模型属性已经改变,会造成其他问题
-
在父元素中追加一个空的,没有宽高的div,设置clear:both;
-
使用内容生成的方式清除浮动:
.clear:after{
content:"";
display:block;
clear:both;
}
z-index
特点
- 根据html代码,后定位的元素,丢叠顺序高
- 只有已定位的元素,才有丢叠顺序
- 定位的脱离文档流和浮动的脱离文档流不是一个体系
- 父子元素都定位,都设置z-index,儿子永远在父亲上面显示
定位的堆叠和浮动有什么关系?
浮动和定位不是体系,不能比较,浮动永远只在一层,不能设置,而定位可以设置堆叠顺序
弹性布局
特点
1.元素设置弹性容器之后,该元素所有的子元素都变为弹性项目, 弹性项目将按照弹性布局的方式排列
2.元素设置为弹性容器之后,项目的float/clear失效,容器的vertical-align/text-align失效
3.父元素设置了宽高就没有项目根据尺寸变小的效果了
4.默认主轴为x轴,主轴起点在左边,主轴终点在右边
5.交叉轴是永远与主轴方向垂直的一根轴,项目在交叉轴上的对齐方式,称为交叉轴的起点和终点
设置主轴方向flex-direction
row 主轴是x轴,起点在左边
row-reverse主轴是x轴,起点在右边
column主轴是y轴,起点在顶端
column-reverse主轴在y轴,起点在低端
设置项目换行flex-wrap
nowrap默认值,空间不够,也不换行,顶部自动缩小
wrap空间不够就换行,顶部缩小
wrap-reverse空间不够,换行并反转
同时设置主轴方向和项目换行:flex-flow: 设置主轴方向 设置项目换行
定义项目在主轴上的对齐方式justify-content
flex-start默认值,主轴起点对齐
flex-end主轴终点对齐
center主轴中间对齐
space-between两端对齐,两端无空白
space-around两端对齐,两端有空白,每个空白距离相等
定义项目在交叉轴上的对齐方式align-items
flex-start交叉轴起点对齐
flex-end交叉轴终点对齐
center交叉轴居中对齐
baseline交叉轴基线对齐,就是交叉轴起点
stretch项目不写高,占满交叉轴所有空间
项目
定义
弹性布局的子元素们,称之为弹性项目,项目属性只能设置在某一个项目上,不影响其他项目效果
设置项目在主轴上的排列顺序order
无单位整数
注意:定义项目的排列顺序,值越小越靠近主轴起点,默认为0
定义项目的放大比例flex-grow
定义项目放大比例,如果容器有足够的剩余空间,项目将按比例放大
定义项目的缩小比例flex-shrink
定义项目的缩小比例,默认为1,取值越大,缩小的越快
设置每个项目的占主轴的空间flex-basis
1.默认值 auto,按照项目设置的尺寸显示
2.具体数值,设置了具体数字,就不听从之前设置的尺寸值了
3.%
简写:flex-grow flex-shrink flex-basis
设置项目在交叉轴上的位置align-self
flex-start交叉轴起点对齐
flex-end交叉轴终点对齐
center交叉轴居中对齐
baseline交叉轴基线对齐,就是交叉轴起点
stretch项目不写高,占满交叉轴所有空间
auto该项目使用容器的align-items的值
心得
今天是浮动和弹性定位两个重点,也是之前最欠缺的两个点,
所以刚开始还有点懵,梳理了两遍好很多。
评论