表示对页面中的显示效果进行一些排列浏览器
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
等高布局 - 表示在一行中的元素拥有相同的高度code
<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>
<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>
表示对整个页面进行布局orm
<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>