布局
描述
表示对页面中的显示效果进行一些排列
- 水平方向居中
- 垂直方向居中
- 居中布局
水平方向居中
第一种方式
- 水平居中 + 行内块级元素(text-align: center + display: inline-block)
<head>
<meta charset="UTF-8">
<title>水平居中的第一种方法</title>
<style>
/*
text-align: center + display: inline-block
* 该方法需作用在父子结构中
* 为父级设置text-align属性、为子级设置display属性
注意的问题:
* text-align属性
* 是设置文本内容对齐方式的,又是继承属性,会连后代元素一同设置
* display属性
* 要实现水平居中就得改变元素类型为行内块级,也会有行内块级本身的一些问题
*/
#d1 {
height: 200px;
background-color: red;
/* 为父级设置text-align属性 */
text-align: center;
}
#d2 {
width: 200px;
height: 200px;
background-color: green;
/* 为子级设置display属性 */
display: inline-block;
}
</style>
</head>
<body>
<div id="d1">
<div id="d2"></div>
</div>
</body>
第二种方式
- 外边距特性(margin: 0 auto)
<head>
<meta charset="UTF-8">
<title>水平居中的第二种方式</title>
<style>
/*
margin: 0 auto
* 可以利用外边距的特性实现水平居中
* display属性的属性值只能是block或table
*/
#d1 {
width: 100%;
height: 200px;
background-color: red;
}
#d2 {
width: 200px;
height: 200px;
background-color: green;
/* 设置display属性的属性值为 block 或 table */
display: block;
/* 利用外边距实现水平居中 */
margin: 0 auto;
}
</style>
</head>
<body>
<div id="d1">
<div id="d2"></div>
</div>
</body>
第三种方式
- 定位(position属性 + transform属性)
<head>
<meta charset="UTF-8">
<title>水平居中的第三种方式</title>
<style>
/*
position属性 + transform属性
* 可以使用定位属性实现水平居中
* 在使用绝对定位时,注意目标元素的父级元素也要开启定位
* 也可以使用相对定位,相对定位是相对于自身做定位,父级元素可以不用开启定位
*/
#d1 {
width: 100%;
height: 200px;
background-color: red;
/* 父级开启定位 - 配合子级开启绝对定位 */
position: relative;
}
/* 绝对定位的方法 */
#d2 {
width: 200px;
height: 200px;
background-color: green;
/* 开启绝对定位实现水平居中 */
position: absolute;
left: 50%;
/* transform属性 - 用于调整元素的显示位置 */
transform: translateX(-50%);
}
/* 相对定位的方法 */
#d3 {
width: 200px;
height: 200px;
background-color: blue;
/* 开启相对定位实现水平居中 */
position: relative;
left: 50%;
/* transform属性 - 用于调整元素的显示位置 */
transform: translateX(-50%);
}
</style>
</head>
<body>
<div id="d1">
<div id="d2"></div>
</div>
<div id="d3"></div>
</body>
垂直方向居中
第一种方式
- 定义元素类型 + 垂直居中(display: table-cell + vertical-align: middle)
<head>
<meta charset="UTF-8">
<title>垂直居中的第一种方式</title>
<style>
/*
display: table-cell + vertical-align: middle
* 该方法只能使用在目标元素的父级元素上
* display: table-cell - 将元素是定义为表格中的单元格
* vertical-align: middle - 设置垂直居中
*/
#d1 {
width: 200px;
height: 800px;
background-color: red;
/* 将目标元素定义为单元格 */
display: table-cell;
/* 设置垂直居中 */
vertical-align: middle;
}
#d2 {
width: 200px;
height: 200px;
background-color: green;
}
</style>
</head>
<body>
<div id="d1">
<div id="d2"></div>
</div>
</body>
第二种方式
- 定位(position属性 + transform属性)
<head>
<meta charset="UTF-8">
<title>垂直居中的第二种方式</title>
<style>
/*
position属性 + transform属性
* 可以使用定位属性实现垂直居中
* 在使用绝对定位时,注意目标元素的父级元素也要开启定位
* 也可以使用相对定位,相对定位是相对于自身做定位,父级元素可以不用开启定位
*/
#d1 {
width: 200px;
height: 800px;
background-color: red;
/* 父级开启定位 - 配合子级开启绝对定位 */
position: relative;
}
/* 绝对定位的方法 */
#d2 {
width: 200px;
height: 200px;
background-color: green;
/* 开启绝对定位实现垂直居中 */
position: absolute;
left: 50%;
/* transform属性 - 用于调整元素的显示位置 */
transform: translateY(-50%);
}
/* 相对定位的方法 */
#d3 {
width: 200px;
height: 200px;
background-color: blue;
/* 开启相对定位实现垂直居中 */
position: relative;
left: 50%;
/* transform属性 - 用于调整元素的显示位置 */
transform: translateY(-50%);
}
</style>
</head>
<body>
<div id="d1">
<div id="d2"></div>
</div>
<div id="d3"></div>
</body>
居中布局
- 表示水平方向和垂直方向同时居中
第一种方式
- 水平方向 – 外边距(margin: 0 auto)
- 垂直方向 – 定义元素类型 + 垂直居中(display: table-cell + vertical-align: middle)
<head>
<meta charset="UTF-8">
<title>居中布局的第一种方式</title>
<style>
/*
居中布局 - 表示水平方向和垂直方向同时居中
* 水平方向 - margin: 0 auto
* 垂直方向 - display: table-cell + vertical-align: middle
*/
#d1 {
width: 800px;
height: 600px;
background-color: lightgray;
/* 父级元素设置垂直居中 */
display: table-cell;
vertical-align: middle;
}
#d2 {
width: 200px;
height: 200px;
background-color: lightcoral;
/* 子级元素设置水平居中 */
display: table;
margin: 0 auto;
}
</style>
</head>
<body>
<div id="d1">
<div id="d2"></div>
</div>
</body>
第二种方式
- 定位(position属性 + transform属性)
<head>
<meta charset="UTF-8">
<title>居中布局的第二种方式</title>
<style>
/*
position属性 + transform属性
* 可以使用定位属性实现居中布局的效果
* 在使用绝对定位时,注意目标元素的父级元素也要开启定位
* 也可以使用相对定位,相对定位是相对于自身做定位,父级元素可以不用开启定位
*/
#d1 {
width: 800px;
height: 800px;
background-color: red;
/* 开启定位 - 配合子级元素开启绝对定位 */
position: relative;
}
#d2 {
width: 200px;
height: 200px;
background-color: green;
/* 开启绝对定位实现居中布局效果 */
position: absolute;
left: 50%;
top: 50%;
/* 调整元素的显示位置 */
transform: translate(-50%, -50%);
}
/* 相对定位的方式 */
#d3 {
width: 200px;
height: 200px;
background-color: blue;
/* 开启相对定位实现居中布局的效果 */
position: relative;
left: 50%;
top: 50%;
/* 调整元素的显示位置 */
transform: translate(-50%, -50%);
}
</style>
</head>
<body>
<div id="d1">
<div id="d2"></div>
</div>
<div id="d3"></div>
</body>
两列布局
- 表示水平排列的元素布局方式
第一种方式
- 浮动 + 外边距
<head>
<meta charset="UTF-8">
<title>第一种两列布局</title>
<style>
/*
两列布局 - 表示水平排列的元素布局方式
* 一列定宽,一列自适应
* 浮动 + 外边距
*/
div {
height: 300px;
}
.d1 {
/* 设置定宽 */
width: 300px;
background-color: red;
/* 设置浮动 */
float: left;
}
.d2 {
width: 100%;
background-color: green;
/*
使用外边距调整显示位置
* 调整的距离等于定宽的宽度
*/
margin-left: 300px;
}
</style>
</head>
<body>
<div class="d1"></div>
<div class="d2"></div>
</body>
第二种方式
- 通过浮动 + 外边距 + 父级容器实现两列布局
<head>
<meta charset="UTF-8">
<title>第二种两列布局</title>
<style>
/*
通过浮动 + 外边距 + 父级容器实现两列布局
* 为自适应的列添加父级容器
* 通过外边距调整位置让元素显示在一列中(调整的数值为等于定宽的宽度)
*/
.d1, .d2 {
height: 300px;
}
.d1 {
/* 定宽 */
width: 300px;
background-color: red;
float: left;
/* 开启定位 - 用于提高优先层次 */
position: relative;
}
.rongqi {
background-color: blue;
float: right;
/* 设置浮动后的宽度 */
width: 100%;
/* 通过外边距控制当前元素的显示位置 */
margin-left: -300px;
}
.d2 {
background-color: green;
margin-left: 300px;
}
</style>
</head>
<body>
<div class="d1"></div>
<div class="rongqi">
<div class="d2"></div>
</div>
</body>
第三种方式
- 浮动 + BFC模式
<head>
<meta charset="UTF-8">
<title>第三种两列布局</title>
<style>
/*
第三种两列布局
* 浮动 + BFC模式
*/
div {
height: 300px;
}
.d1 {
/* 设置定宽 */
width: 300px;
background-color: red;
/* 设置浮动 */
float: left;
}
.d2 {
background-color: green;
/* 开启BFC模式 - 解决浮动后的堆叠显示问题 */
overflow: hidden;
}
</style>
</head>
<body>
<div class="d1"></div>
<div class="d2"></div>
</body>
第四种方式
- 通过display属性实现两列布局
<head>
<meta charset="UTF-8">
<title>第四种两列布局</title>
<style>
/*
通过display属性实现两列布局
* 将指定元素定义为表格中的单元格
* 将指定元素的父级元素定义为表格
* 通过表格特性实现两列不急
*/
.rongqi {
/* 通过display属性定义为表格 */
display: table;
table-layout: fixed;
width: 100%;
}
.d1, .d2 {
height: 300px;
/* 通过display属性定义为表格中的单元格 */
display: table-cell;
}
.d1 {
/* 定宽 */
width: 300px;
background-color: red;
}
/* 由于表格中的单元格的特性,自适应的宽度会自行分配 */
.d2 {
background-color: green;
}
</style>
</head>
<body>
<div class="rongqi">
<div class="d1"></div>
<div class="d2"></div>
</div>
</body>
三列布局
- 右边自适应三列布局
- 中间自适应三列布局
右边自适应三列布局
- 在两列布局的基础上在加上一列定宽
- 可以按照两列布局的方式来实现
<head>
<meta charset="UTF-8">
<title>三列布局 - 右自适应</title>
<style>
/*
右自适应的三列布局
* 可以按照两列布局的方式来实现
*/
body {
margin: 0;
}
div {
height: 300px;
}
.left {
/* 设置浮动 - 让元素在一行中显示 */
float: left;
/* 设置定宽 */
width: 200px;
background-color: red;
}
.center {
/* 设置浮动 - 让元素在一行中显示 */
float: left;
/* 设置定宽 */
width: 200px;
background-color: green;
}
.right {
background-color: blue;
/* 设置外边距 - 调整覆盖问题,调整的距离为两列定宽的宽度之和 */
margin-left: 400px;
}
</style>
</head>
<body>
<div class="left"></div>
<div class="center"></div>
<div class="right"></div>
</body>
中间自适应三列布局
第一种方式
- 改变HTML代码顺序结构
<head>
<meta charset="UTF-8">
<title>三列布局 - 中间自适应</title>
<style>
/*
中间自适应的三列布局 - 第一种方式
* 由于浮动的问题右侧定宽的元素无法和其他元素显示在一行中
* 可以通过改变HTML代码顺序结构来解决
* 在对中间自适应的列进行压缩,解决覆盖问题
*/
body {
margin: 0;
}
div {
height: 400px;
}
.left {
/* 设置浮动 - 让元素显示在一行 */
float: left;
/* 设置定宽 */
width: 200px;
background-color: red;
}
.center {
background-color: blue;
/* 设置外边距 - 解决覆盖问题 */
margin: 0 200px 0;
}
.right {
/* 设置浮动 - 让元素显示在一行 */
float: right;
/* 设置定宽 */
width: 200px;
background-color: green;
}
</style>
</head>
<body>
<div class="left"></div>
<!-- 改变HTML代码顺序结构 -->
<div class="right"></div>
<div class="center"></div>
</body>
第二种方式
- 为中间自适应的区域添加子级,解决覆盖问题
<head>
<meta charset="UTF-8">
<title>三列布局 - 中间自适应</title>
<style>
/*
中间自适应的三列布局 - 第二种方式
* 为中间自适应的区域添加子级
* 调整子级的显示区域,解决覆盖问题
* 对三列设置浮动,利用外边距调整位置使其显示在一行中
*/
body {
margin: 0;
}
div {
height: 400px;
}
.left {
/* 设置浮动 - 让元素显示在一行 */
float: left;
/* 设置定宽 */
width: 200px;
/* 开启定位 - 用于提高覆盖后的显示层级 */
position: relative;
background-color: red;
}
.center {
background-color: blue;
/* 设置浮动 - 用于让后面的下一个元素可以显示在同一行 */
float: left;
/* 设置宽度 - 自适应不能是定宽 */
width: 100%;
/* 利用外边距移动元素,使其在一行中显示 */
margin-left: -200px;
}
.right {
/* 设置浮动 - 让元素显示在一行 */
float: left;
/* 设置定宽 */
width: 200px;
/* 利用外边距移动元素,使其在一行中显示 */
margin-left: -200px;
background-color: green;
}
.neirong {
/* 设置外边距压缩元素,解决覆盖问题 */
margin: 0 200px 0;
background-color: yellow;
}
</style>
</head>
<body>
<div class="left"></div>
<div class="center">
<!-- 通过子级解决覆盖问题 -->
<div class="neirong"></div>
</div>
<div class="right"></div>
</body>
第三种方式
- 简易圣杯布局
<head>
<meta charset="UTF-8">
<title>三列布局 - 中间自适应</title>
<style>
/*
中间自适应的三列布局 - 第三种方式
* 圣杯布局
* 添加整体容器
* 通过设置内边距挤压出两边定宽的区域
* 在通过定位将定宽的两列移动到指定区域,解决覆盖问题
*/
* {
box-sizing: border-box;
}
body {
margin: 0;
}
.rongqi {
/* 设置内边距 - 挤压出两侧定宽的显示区域 */
padding: 0 200px 0;
}
.rongqi > div {
height: 400px;
}
.left {
/* 设置浮动 - 让元素显示在一行 */
float: left;
/* 设置定宽 */
width: 200px;
/* 通过定位将元素移动到指定区域解决覆盖问题 */
position: relative;
left: -200px;
background-color: red;
}
.center {
background-color: blue;
/* 设置浮动 - 用于让后面的下一个元素可以显示在同一行 */
float: left;
/* 设置宽度 - 自适应不能是定宽 */
width: 100%;
/* 利用外边距移动元素,使其在一行中显示 */
margin-left: -200px;
}
.right {
/* 设置浮动 - 让元素显示在一行 */
float: left;
/* 设置定宽 */
width: 200px;
/* 利用外边距移动元素,使其在一行中显示 */
margin-left: -200px;
/* 通过定位将元素移动到指定区域解决覆盖问题 */
position: relative;
right: -200px;
background-color: green;
}
</style>
</head>
<body>
<!-- 添加整体容器 -->
<div class="rongqi">
<div class="left"></div>
<div class="center"></div>
<div class="right"></div>
</div>
</body>
第四种方式
- 简易双飞翼布局
<head>
<meta charset="UTF-8">
<title>三列布局 - 中间自适应</title>
<style>
/*
中间自适应的三列布局 - 第四种方式
* 双飞翼布局
* 改变HTML代码顺序结构
* 为中间自适应的区域添加子级
* 调整子级的显示区域,解决覆盖问题
* 对三列设置浮动,利用外边距调整位置使其显示在一行中
*/
body {
margin: 0;
}
div {
height: 400px;
}
.left {
/* 设置浮动 - 让元素显示在一行 */
float: left;
/* 设置定宽 */
width: 200px;
/* 利用外边距移动元素,使其在一行中显示 */
margin-left: -100%;
background-color: red;
}
.center {
background-color: blue;
/* 设置浮动 - 用于让后面的下一个元素可以显示在同一行 */
float: left;
/* 设置宽度 - 自适应不能是定宽 */
width: 100%;
}
.right {
/* 设置浮动 - 让元素显示在一行 */
float: left;
/* 设置定宽 */
width: 200px;
/* 利用外边距移动元素,使其在一行中显示 */
margin-left: -200px;
background-color: green;
}
.neirong {
/* 设置外边距压缩元素,解决覆盖问题 */
margin: 0 200px 0;
background-color: yellow;
}
</style>
</head>
<body>
<!-- 改变HTML代码顺序结构 - 便于浏览器搜索抓取 -->
<div class="center">
<!-- 通过子级解决覆盖问题 -->
<div class="neirong"></div>
</div>
<div class="left"></div>
<div class="right"></div>
</body>
定分布局
表示子级元素平均分配父级元素的宽度
- 没有间隙的等分布局
- 有间隙的等分布局
没有间隙的等分布局
通过百分比来设置
<head>
<meta charset="UTF-8">
<title>等分布局</title>
<style>
/*
等分布局 - 表示子级元素平均分配父级元素的宽度
* 通过百分比来设置
* 用父级元素的宽度(100%)除以子级元素的个数,得到每个子级元素所占的百分比宽度值
*/
body {
margin: 0;
}
div {
/* 设置浮动 - 让元素水平排列 */
float: left;
/* 设置百分比宽度值会自行等分在父级元素中的所占区域 */
width: 25%;
height: 400px;
}
.d1 {
background-color: red;
}
.d2 {
background-color: green;
}
.d3 {
background-color: blue;
}
.d4 {
background-color: yellow;
}
</style>
</head>
<body>
<div class="d1"></div>
<div class="d2"></div>
<div class="d3"></div>
<div class="d4"></div>
</body>
通过display属性来实现等分布局
<head>
<meta charset="UTF-8">
<title>等分布局</title>
<style>
/*
等分布局 - 表示子级元素平均分配父级元素的宽度
* 通过display属性来实现等分布局
* 为指定元素添加父级元素,并通过display属性将其定义为表格(table属性值)
* 通过display属性将指定元素定义为表格中的单元格(table-cell属性值)
* 通过表格的特性实现等分布局
*/
body {
margin: 0;
}
.table {
/* 将该元素定义为表格 */
display: table;
/* 设置宽度 - 没有宽度表格没有显示 */
width: 100%;
}
.table > div {
/*
将该元素定义为单元格
* 不需要设置单元格的宽度,通过表格的特性,会自行等分表格的宽度
*/
display: table-cell;
height: 400px;
}
.d1 {
background-color: red;
}
.d2 {
background-color: green;
}
.d3 {
background-color: blue;
}
.d4 {
background-color: yellow;
}
</style>
</head>
<body>
<!-- 添加容器 - 定义为表格 -->
<div class="table">
<!-- 再将指定元素定义为表格中的单元格 -->
<div class="d1"></div>
<div class="d2"></div>
<div class="d3"></div>
<div class="d4"></div>
</div>
</body>
有间隙的等分布局
添加容器 + 外边距 + overflow属性
<head>
<meta charset="UTF-8">
<title>等分布局 - 有间距</title>
<style>
/*
有间距的等分布局 - 第一种方式
* 为指定元素添加整体容器,并在整体容器之上添加可视容器
* 整体容器的宽度等于 指定元素的宽度之和 加上 指定元素的外边距之和
* 可视容器的宽度等于 指定元素的宽度之和 加上 指定元素的外边距之和减一(一个元素的外边距)
* 通过对可视容器设置overflow属性来去除对出的外边距
*/
body {
margin: 0;
}
.keshi {
/* 设置可视容器的宽度 - 四个指定元素的宽度 + 三个指定元素的外边距 */
width: 1260px;
/*
用解决内容溢出的方式去除第四的外边距
同时解决由于子级设置浮动引出的高度塌陷问题
*/
overflow: hidden;
border: 1px solid blueviolet;
}
.keshi > .rongqi {
/* 设置整体容器宽度 - 四个指定元素的宽度 + 四个指定元素的外边距 */
width: 1280px;
/* 设置高度解决高度塌陷 */
/*height: 400px;*/
/* 通过设置浮动开启BFC模式,解决高度塌陷 */
float: left;
background-color: #ff6700;
}
.keshi > .rongqi > div {
/* 设置浮动 - 让元素水平排列显示 */
float: left;
width: 300px;
height: 400px;
/* 通过外边距设置元素间的间隙 */
margin-right: 20px;
}
.d1 {
background-color: red;
}
.d2 {
background-color: green;
}
.d3 {
background-color: blue;
}
.d4 {
background-color: yellow;
}
</style>
</head>
<body>
<!-- 添加可视容器 -->
<div class="keshi">
<!-- 添加整体容器 -->
<div class="rongqi">
<div class="d1"></div>
<div class="d2"></div>
<div class="d3"></div>
<div class="d4"></div>
</div>
</div>
</body>
添加容器 + 外边距 + 定位
<head>
<meta charset="UTF-8">
<title>等分布局 - 有间距</title>
<style>
/*
有间距的等分布局 - 第二种方式
* 为指定元素添加整体容器,并在整体容器之上添加可视容器
* 整体容器的宽度等于 指定元素的宽度之和 加上 指定元素的外边距之和
* 可视容器的宽度等于 指定元素的宽度之和 加上 指定元素的外边距之和减一(一个元素的外边距)
* 对整体容器开启定位,通过调整定位的显示位置来去除多余的外边距
*/
body {
margin: 0;
}
.keshi {
/* 设置可视容器的宽度 - 四个指定元素的宽度 + 三个指定元素的外边距 */
width: 1260px;
border: 1px solid blueviolet;
}
.keshi > .rongqi {
/* 设置整体容器宽度 - 四个指定元素的宽度 + 四个指定元素的外边距 */
width: 1280px;
/* 开启BFC模式解决高度塌陷 */
overflow: hidden;
/* 开启相对定位 */
position: relative;
/* 定位的距离等于外边距的数值 */
left: -20px;
background-color: #ff6700;
}
.keshi > .rongqi > div {
/* 设置浮动 - 让元素水平排列显示 */
float: left;
width: 300px;
height: 400px;
/* 通过外边距设置元素间的间隙 */
margin-left: 20px;
}
.d1 {
background-color: red;
}
.d2 {
background-color: green;
}
.d3 {
background-color: blue;
}
.d4 {
background-color: yellow;
}
</style>
</head>
<body>
<!-- 添加可视容器 -->
<div class="keshi">
<!-- 添加整体容器 -->
<div class="rongqi">
<div class="d1"></div>
<div class="d2"></div>
<div class="d3"></div>
<div class="d4"></div>
</div>
</div>
</body>
等高布局
等高布局 – 表示在一行中的元素拥有相同的高度
- 简单粗暴的方式 – 直接设置统一高度
- 通过display属性设置等高布局
- 通过设置 内、外边距 进行挤压实现伪等高
通过display属性设置等高布局
- 为指定元素添加整体容器,并且设置display属性,定义为表格(table属性值)
- 为指定元素设置display属性,定义为表格中的单元格(table-cell属性值)
- 通过表格的特性实现等高布局
<head>
<meta charset="UTF-8">
<title>等高布局</title>
<style>
/*
等高布局 - 表示在一行中的元素拥有相同的高度
* 简单粗暴的方式 - 直接设置统一高度
* 通过display属性设置等高布局
* 为指定元素添加整体容器,并且设置display属性,定义为表格(table属性值)
* 为指定元素设置display属性,定义为表格中的单元格(table-cell属性值)
* 通过表格的特性实现等高布局
*/
body {
margin: 0;
}
.rongqi {
/* 将整体容器定义为表格 */
display: table;
}
.rongqi > div {
/* 将指定元素定义为单元格 */
display: table-cell;
width: 300px;
}
.left {
background-color: red;
}
.right {
background-color: green;
}
</style>
</head>
<body>
<!-- 添加整体容器 - 将容器定义为表格 -->
<div class="rongqi">
<!-- 将指定元素定义为单元格 -->
<div class="left">我是谁、我在那、我要干啥</div>
<div class="right">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus ad amet blanditiis cum enim inventore iure nihil odit, optio porro quasi reiciendis similique sit tempora voluptate voluptates voluptatibus. Amet, iure!</div>
</div>
</body>
通过设置 内、外边距 进行挤压实现伪等高
- 为指定元素设置下内边距,向下拉伸
- 为指定元素设置下外边距(负值),向上挤压
- 为整体容器设置overflow属性,隐藏多余的部分实现伪等高布局
<head>
<meta charset="UTF-8">
<title>等高布局</title>
<style>
/*
等高布局 - 表示在一行中的元素拥有相同的高度
* 通过设置 内、外边距 进行挤压实现伪等高
* 为指定元素设置下内边距,向下拉伸
* 为指定元素设置下外边距(负值),向上挤压
* 为整体容器设置overflow属性,隐藏多余的部分实现伪等高布局
*/
body {
margin: 0;
}
.rongqi {
width: 600px;
/* 解决内容溢出 - 实现伪等高 */
overflow: hidden;
}
.rongqi > div {
float: left;
width: 300px;
/* 设置下内边距 */
padding-bottom: 999px;
/* 设置下外边距 */
margin-bottom: -999px;
}
.left {
background-color: red;
}
.right {
background-color: green;
}
</style>
</head>
<body>
<!-- 添加整体容器 -->
<div class="rongqi">
<div class="left">我是谁、我在那、我要干啥</div>
<div class="right">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus ad amet blanditiis cum enim inventore iure nihil odit, optio porro quasi reiciendis similique sit tempora voluptate voluptates voluptatibus. Amet, iure!</div>
</div>
</body>
全局布局
表示对整个页面进行布局
- 可以通过固定定位来实现
<head>
<meta charset="UTF-8">
<title>全屏布局</title>
<style>
/*
全局布局 - 表示对整个页面进行布局
* 可以通过固定定位来实现
* 当偏移量的left和right的属性值都为 0 时,可以不设置宽度
* 设置高度为百分值时,相对父级不能是页面
*/
body {
margin: 0;
}
header {
/* 设置定高 */
height: 100px;
/* 设置固定定位 - 将顶部内容固定在页面顶部 */
position: fixed;
left: 0;
top: 0;
right: 0;
background-color: #c9c9c9;
}
main {
/* 设置固定定位 - 通过固定定位实现主体内容自适应 */
position: fixed;
left: 0;
top: 100px;
right: 0;
bottom: 100px;
overflow: auto;
background-color: #00c3f5;
}
main > .left {
/* 设置定宽 */
width: 300px;
height: 100%;
position: fixed;
background-color: #6fc749;
}
main > .right {
height: 1000px;
/* 通过外边距解决覆盖问题 */
margin-left: 300px;
background-color: yellow;
}
footer {
height: 100px;
/* 设置固定定位 - 将底部内容固定在页面底部 */
position: fixed;
left: 0;
bottom: 0;
right: 0;
background-color: #666666;
}
</style>
</head>
<body>
<!-- 页面顶部 -->
<header></header>
<!-- 页面主体 -->
<main>
<div class="left"></div>
<div class="right"></div>
</main>
<!-- 页面底部 -->
<footer></footer>
</body>