HTML的布局方式多的不能再多了,而博主我最近也是学了几种简单的,这不,就来分享一些了!
多栏式布局
盒布局
弹性布局
排列方式,空间的分配
justify-content属性
align-self
align-content
多栏式布局
1.为什么需要?
在我们日常布局中,会经常使用浮动和定位进行布局,就会出现两个元素不能底部对齐的情况。
2.案例介绍。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div class="a">
<p>111111111111111111
1111111111111111111111111
11111111111111111111111111111111
111111111111111111111111111
11111111111111111111111111
11111111111111111111111111111111
1111111111111111
1111111111111111
1111111111111111
1111111111111111
1111111111111111
111111111111111111111111111111111111111111
11111111111111111111111111111111
1111111111111111
1111111111111111
1111111111111111
1111111111111111
1111111111111111
1111111111111111
</p>
<p>222222222222222222222222
222222222222222222222222
222222222222222222222222
222222222222222222222222
222222222222222222222222
</p>
</div>
<div class="b">
saddqwdasds
</div>
</body>
<style>
.a{
column-count: 2;
-webkit-column-count: 2;
/* 2栏 */
column-width: 40em;
/* 每一栏的宽度 */
column-gap: 100px;
/* 间隔距离 */
column-rule: 1px solid red;
/* 间隔线 */
}
.b{
width: 100%;
background-color: rebeccapurple;
height: 100px;
}
</style>
</html>
盒布局
1.为什么需要?
当使用浮动时,左右栏之间不能对齐。
2.案例介绍。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div class="first">
<div class="left">
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
</div>
<div class="lr">
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
</div>
<div class="right">
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
<a href="#">asdasdas</a>
</div>
</div>
</body>
<style>
.first{
display: -webkit-box;
/* 盒布局 */
}
.left{
/* float: left; */
width: 30%;
background-color: skyblue;
box-sizing: border-box;
}
.lr{
/* float: left; */
width: 30%;
background-color: slategray;
box-sizing: border-box;
}
.right{
/* float: left; */
width: 30%;
box-sizing: border-box;
background-color: tan;
}
</style>
</html>
弹性布局
1.为什么需要?
flex布局能够改变元素的排列方式和排列顺序,
2.方法和属性的介绍。
order:改变元素顺序
<div class="box">
<div class="a">1</div>
<div class="b">2</div>
<div class="c">3</div>
</div>
<style>
.box{
display: flex;
}
.a{
width: 200px;
height: 100px;
background-color: red;
order: 3;
}
.b{
width: 200px;
height: 100px;
background-color: hotpink;
order: 2;
}
.c{
order: 1;
width: 200px;
height: 100px;
background-color: gainsboro;
}
</style>
排列方式,空间的分配
<div class="box">
<div class="a">1</div>
<div class="b">2</div>
<div class="c">3</div>
</div>
<style>
.box{
display: flex;
width: 800px;
height: 100px;
/* flex-direction: column; */
/* 纵向排列 */
/* flex-direction: row; */
/* 横向排列 */
/* flex-direction: column-reverse; */
/* 纵向反向排列 */
/* flex-direction: row-reverse; */
/* 横向反向排列 */
}
.a{
width: 200px;
height: 100px;
background-color: red;
order: 3;
/* 排列顺序 */
/* flex: 1; */
/* 将空白的区域分成3份,一个div一份,(就等于自己加上另外一份的,就等于它的高度或者宽度) */
flex-grow: 2;
/* 计算方式:父元素-子元素的总和,一份flex-grow的总数=(父元素-子元素的总和)除以flex-grow的总数,子元素=自身+2份的flex-grow */
flex-shrink: 1;
/* 当子元素的宽度总和大于父元素时,可以用flex-shrink属性去调整。计算方式:子元素总和-父元素,再求出每一份flex-shrink的大小,子元素的宽度=自身-自己所占的flex-shrink的份数的大小 */
}
.b{
width: 200px;
height: 100px;
background-color: hotpink;
order: 2;
/* 排列顺序 */
/* flex: 1; */
/* 将空白的区域分成3份,一个div一份,(就等于自己加上另外一份的,就等于它的高度或者宽度) */
flex-grow: 1;
/* 计算方式:父元素-子元素的总和,一份flex-grow的总数=(父元素-子元素的总和)除以flex-grow的总数,子元素=自身+2份的flex-grow */
flex-shrink: 1;
/* 当子元素的宽度总和大于父元素时,可以用flex-shrink属性去调整。计算方式:子元素总和-父元素,再求出每一份flex-shrink的大小,子元素的宽度=自身-自己所占的flex-shrink的份数的大小 */
}
.c{
order: 1;
/* 排列顺序 */
width: 200px;
height: 100px;
background-color: gainsboro;
/* flex: 1; */
/* 将空白的区域分成3份,一个div一份,(就等于自己加上另外一份的,就等于它的高度或者宽度) */
flex-grow: 1;
/* 计算方式:父元素-子元素的总和,一份flex-grow的总数=(父元素-子元素的总和)除以flex-grow的总数,子元素=自身+2份的flex-grow */
flex-shrink: 1;
/* 当子元素的宽度总和大于父元素时,可以用flex-shrink属性去调整。计算方式:子元素总和-父元素,再求出每一份flex-shrink的大小,子元素的宽度=自身-自己所占的flex-shrink的份数的大小 */
}
</style>
justify-content属性
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div class="box">
<div class="first"></div>
<div class="second"></div>
<div class="three"></div>
</div>
</body>
<style>
.box{
display: flex;
/* justify-content: space-between; */
/* 两端靠边,中间一只 */
/* justify-content: space-around; */
/* 两端留有一样的边距,中间的元素和两端元素都有一样的边距 */
/* justify-content: flex-end; */
/* 靠最右边 */
/* justify-content: flex-start; */
/* 靠最左边 */
justify-content: center;
/* 居中 */
}
.first{
width: 200px;
height: 100px;
background-color: red;
}
.second{
width: 200px;
height: 100px;
background-color: gold;
}
.three{
width: 200px;
height: 100px;
background-color: green;
}
</style>
</html>
space-between
space-around
start
end
center
align-items:指定的是交叉轴方向(横向布局时交叉轴方向为垂直方向,纵向布局时交叉轴方向为水平方向)
flex-start(向顶部对齐)
flex-end(向下对齐)
center(上下居中)
baseline(如果子元素和容器的布局方式不是一个方向,则该作用相当于flex-start,如果是一个方向,则子元素沿基线对齐)
stretch(如果子元素没有指定高度,则子元素的高度相当于)
align-self:用于单独设定元素的对齐方式
align-self和align-items的属性相同,所以这里不多介绍了。
align-content:用于指定多行布局的对齐方式
align-content和align-items的属性相同,所以这里不多介绍了。