- 一.浮动
- 1.浮动就是可以使一个元素向其父元素的左侧或右侧移动
- 2.通过float属性来设置元素的浮动,可选值如下:
- 3.当元素设置浮动后,水平布局等式就不强制成立
- 4.元素设置浮动后,就会脱离文档流,不在占用文档流的位置,所以原本元素下面的元素会自动向上移动,后边元素不设置浮动会与浮动元素垂直排列,不设置浮动看不到
- 5.浮动元素不会移出父元素,父元素看成他的边界
- 6.浮动元素向左或向右移动时,不会超过前面的浮动元素,会接着之前浮动的元素继续水平排列
- 7.若浮动元素上面有未设置浮动的块元素,即使有位置,也不会向上浮动。也就是说:浮动不会影响它前面的文档流
- 8.浮动元素跟他前面的浮动元素为准,不会超过他前面的浮动元素
- 9.通过浮动可以达到让元素水平布局的效果
- 10.浮动不会遮挡文字,文字会自动围绕在浮动元素的周围,可以用浮动来设置文字围绕图片的效果
- 11.块元素脱离文档流的特点
- 12.行内元素脱离文档流的特点:
- 13.元素脱离文档流后,不再区分块元素和行内元素,都具有行内块元素的特性
- 二.实现简单布局
- 三.高度塌陷和BFC
- 四.clear属性
- 五.after伪类-解决高度塌陷的方案(给父元素添加该属性)
- 六.clearfix(给父元素添加该属性)
- 七.元素的显示与隐藏、
一.浮动
1.浮动就是可以使一个元素向其父元素的左侧或右侧移动
2.通过float属性来设置元素的浮动,可选值如下:
(1)float:none;默认值,表示不浮动
(2)float:left;向左浮动
(3)float:right;向右浮动
3.当元素设置浮动后,水平布局等式就不强制成立
4.元素设置浮动后,就会脱离文档流,不在占用文档流的位置,所以原本元素下面的元素会自动向上移动,后边元素不设置浮动会与浮动元素垂直排列,不设置浮动看不到
5.浮动元素不会移出父元素,父元素看成他的边界
6.浮动元素向左或向右移动时,不会超过前面的浮动元素,会接着之前浮动的元素继续水平排列
7.若浮动元素上面有未设置浮动的块元素,即使有位置,也不会向上浮动。也就是说:浮动不会影响它前面的文档流
8.浮动元素跟他前面的浮动元素为准,不会超过他前面的浮动元素
9.通过浮动可以达到让元素水平布局的效果
10.浮动不会遮挡文字,文字会自动围绕在浮动元素的周围,可以用浮动来设置文字围绕图片的效果
11.块元素脱离文档流的特点
(1)块元素不在独占一行
(2)默认块元素宽度和高度被内容撑开,有内容决定大小
12.行内元素脱离文档流的特点:
13.元素脱离文档流后,不再区分块元素和行内元素,都具有行内块元素的特性
二.实现简单布局
1.效果图:
2.代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>网页布局</title>
<style>
header,main,footer{
width: 1000px;
margin: 0 auto;
}
header{
height: 150px;
background-color: rgb(99, 99, 102);
}
main{
height: 400px;
background-color: rgb(241, 241, 243);
margin: 10px auto;
}
nav{
width: 190px;
height: 100%;
background-color: blueviolet;
float: left;
}
article{
width: 600px;
height: 100%;
background-color: violet;
float: left;
margin: 0 10px;
}
aside{
width: 190px;
height: 100%;
background-color: rgb(153, 10, 10);
float: left;
}
article div{
width: auto;
background-color: teal;
float: left;
}
footer{
height: 150px;
background-color: rgb(149, 173, 13);
}
</style>
</head>
<body>
<header></header>
<main>
<nav></nav>
<article></article>
<aside></aside>
</main>
<footer></footer>
</body>
</html>
三.高度塌陷和BFC
1.如果主类高度写死,内容过多或过少都会体验感不佳,所以设置时高度一般不能写死
2.高度塌陷:在布局中,父元素的高度是被子元素撑开的,子元素变大父元素就变大,反之变小。而在子元素设置浮动后,会完全脱离文档流,就无法撑起父元素,使父元素的高度丢失
3.发生高度塌陷,父元素就会丢失高度,其下的元素会上移,导致页面布局混乱
4.解决高度塌陷的方法:
(1)内容固定的话将高度写死
(2)BFC(Block Formatting Context)-块级格式化环境
(3)clear方法
(4)after伪类
(5)clearfix
5.BFC是CSS中隐含的属性,可以为一个元素开启BFC
(1)开启BFC的元素会变成一个独立的布局区域
(2)元素开启BFC的特点:
- 开启了BFC的元素不会被浮动元素覆盖
- 开启了BFC的元素子元素和父元素的外边距不会重叠
-
6.开启BFC的方法(不能直接开启)
(1)设置元素浮动
(2)将元素设置为行内块元素
(3)给元素的父元素设置overflow属性,设置为一个非visible的值,属性值还有: hidden
- auto
-
四.clear属性
1.作用:清除浮动元素对当前元素的影响
2.属性的可选值:
(1)left:清除左侧浮动元素对当前元素的影响
(2)right:清除右侧浮动元素对当前元素的影响
(3)both:清除两侧中影响最大的一侧3.原理:设置清除浮动后,浏览器会自动为元素添加一个上外边距,使其位置不受影响
五.after伪类-解决高度塌陷的方案(给父元素添加该属性)
1.先选中一个元素,然后::after表示选择该元素最后一个元素
就相当于在最里面设置了一个块元素
六.clearfix(给父元素添加该属性)
1.即解决高度塌陷又解决外间距重叠
七.元素的显示与隐藏、
1.display属性,可选值如下:
(1)none:隐藏对象,不会占有原来的位置
(2)block:除了转为块元素之外,还可以显示元素
(3)还可以用该属性转换元素格式: inline-block:行内块元素;
- block:块元素;
- inline:行内元素
2.visibility属性,可选值如下:
(1)visible:元素可视;
(2)hidden:元素隐藏,但是会继续占有位置3.overflow属性,属性值如下:
(1)visible:超出的部分就超出显示
(2)hidden:超出部分隐藏
(3)scroll:不管超出与否,始终显示滚动条
(4)auto:超出会自动显示滚动条,不超出就没有