网页常见布局方式
1 标准流
1 块级元素独占一行 → 垂直布局
2 行内元素/行内块元素一行显示多个 → 水平布局
2 浮动
可以让原本垂直布局的 块级元素变成水平布局
3 定位
1 可以让元素自由的摆放在网页的任意位置
2 一般用于 盒子之间的层叠情况定位的常见应用场景
1 可以解决盒子与盒子之间的层叠问题
2 可以让盒子始终固定在屏幕中的某个位置
使用定位的步骤
1 设置定位方式
属性名:position
常见属性值:
1 静态定位 static
2 相对定位 relative
3 绝对定位 absolute
3 固定定位 fixed
2 设置偏移值
方向 属性名 属性值 含义
水平 left 数字+px 距离左边的距离
水平 right 数字+px 距离右边的距离
垂直 top 数字+px 距离顶部的距离
垂直 bottom 数字+px 距离底部的距离
四种定位方式
1 静态定位
介绍:静态定位是默认值,就是之前认识的标准流。
代码:position:static
注意点:
1 静态定位就是之前标准流,不能通过方位属性进行移动
2 之后说的定位不包括静态定位,一般特指后几种:相对、绝对、固定2 相对定位
介绍:自恋型定位,相对于自己之前的位置进行移动
代码:position:relative
特点:
1 需要配合方位属性实现移动
2 相对于自己原来位置进行移动
3 在页面中占位置 → 没有脱标
应用场景:
1 配合绝对定位组CP(子绝父相)
2 用于小范围的移动3 绝对定位
介绍:拼爹型定位,相对于已经定位的父元素进行定位移动
代码:position:absolute
特点:
1 需要配合方位属性实现移动
2 默认相对于浏览器可视区域进行移动
3 在页面中不占位置 → 已经脱标
4 如果绝对定位的父级元素都没有设置定位,它会参照body进行移动
5 如果父级元素有定位(除了静态定位),它会参照最近一个父元素进行移动
应用场景:
配合相对定位组CP(子绝父相)4 固定定位
介绍:死心眼型定位,相对于浏览器进行定位移动
代码:position:fixed
特点:
1 需要配合方位属性实现移动
2 相对于浏览器可视区域进行移动
3 在页面中不占位置 → 已经脱标
应用场景:
让盒子固定在屏幕中的某个位置
代码:相对定位
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .box{ width: 200px; height: 200px; background-color: pink; /* 相对定位 */ position: relative; /* 相对自己向右移动200px */ left: 200px; } </style> </head> <body> <div class="box"></div> </body> </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> <style> .father{ width: 300px; height: 300px; background-color: pink; margin-left: 200px; margin-top: 200px; /* 父元素相对定位 */ position: relative; } .son{ width: 100px; height: 100px; background-color: blue; /* 子元素绝对定位 */ position: absolute; top: 50px; } </style> </head> <body> <!-- 先注释div.father标签,看son的位置。打开注释,再看son的位置 --> <!-- <div class="father"> --> <div class="son"></div> <!-- </div> --> </body> </html>
效果图:
代码:固定定位
<!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>Document</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; } .w { width: 600px; height: 3000px; background-color: skyblue; margin: 0 auto; } .box { position: fixed; left: 50%; margin-left: 320px; top: 50px; width: 50px; height: 300px; background-color: orange; } .box1 { position: fixed; right: 50%; margin-right: 320px; top: 50px; width: 50px; height: 300px; background-color: orange; } </style> </head> <body> <div class="box"></div> <div class="box1"></div> <div class="w"> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> <h1>滚动条</h1> </div> </body> </html>
效果图: