FlexBox弹性盒布局和order属性
程序员文章站
2022-03-07 19:29:00
...
1. FlexBox弹性盒布局
1.1 FlexBox弹性盒布局快速预览
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>FlexBox弹性盒布局快速预览</title>
<style>
.container{
width: 300px;
/* 如果这个容器中的内容要使用flexbox布局,第一步就是必须将这个容器转为弹性盒子 */
display: flex;
}
.container > .item{
/* 一旦将父元素转为弹性容器,内部的“子元素”就会自动成为:弹性项目 */
/* 不管这个项目标签之前是什么类型,统统转为“行内块” */
/* 行内:全部在一排显示 */
/* 块:可以设置宽和高 */
flex: auto;
/* width: 60px;
height: 60px; */
}
</style>
</head>
<body>
<div class="container">
<div class="item">1</div>
<span class="item">2</span>
<a class="item">3</a>
<a class="item">4</a>
<a class="item">5</a>
<a class="item">6</a>
<a class="item">7</a>
</div>
</body>
</html>
1.2 FlexBox弹性盒布局换行显示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>FlexBox弹性盒布局快速预览</title>
<style>
.container{
width: 300px;
/* 弹性容器 */
display: flex;
}
.container > .item{
/* width: 60px; */
/* width: 50px; */
width: 150px;
}
/* 换行显示 */
.container{
flex-wrap: wrap;
}
</style>
</head>
<body>
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
</div>
</body>
</html>
1.3 单行容器中的项目对齐方式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>单行容器中的项目对齐方式</title>
<style>
.container{
display: flex;
width: 300px;
/* justify-content: 控制所有项目在主轴上的对齐方式; */
/* 本质是:设置容器中的剩余空间在所有“项目之间”的分配方案 */
/* 1.容器剩余空间在所有项目两边的如何分配,将全部项目视为一个整体 */
/* justify-content: flex-start;
justify-content: flex-end;
justify-content: center; */
/* justify-content: start;
justify-content: left; */
/* 2.容器剩余空间在所有项目之间的如何分配,将项目视为一个独立的个体 */
/* justify-content: space-between; */
/* 分散对齐:剩余空间在所有项目两侧评价分配 */
justify-content: space-around;
justify-content: space-evenly;
}
.container > .item{
width: 60px;
}
</style>
</head>
<body>
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>
</body>
</html>
1.4 多行容器中的项目对齐方式
由于代码过多重复只写重点代码:
<style>
.container{
display: flex;
width: 300px;
/* 多行容器 */
flex-wrap: wrap;
height: 150px;
/* align-content: 设置多行容器中的项目排列; */
/* 1.容器剩余空间在所有项目两边的如何分配,将全部项目视为一个整体 */
align-content: stretch;
align-content: flex-start;
align-content: flex-end;
align-content: center;
/* 2.容器剩余空间在所有项目之间的如何分配,将项目视为一个独立的个体 */
align-content: space-between;
align-content: space-around;
align-content: space-evenly;
}
.container > .item{
width: 60px;
}
</style>
1.5 主轴为垂直方向时的项目排列
<style>
.container{
display: flex;
width: 300px;
height: 150px;
/* 主轴方向:默认为行 */
/* flex-direction: row; */
flex-direction: column;
/* 项目两边分配 */
justify-content: flex-start;
justify-content: flex-end;
justify-content: center;
/* 项目之间分配 */
justify-content: space-between;
justify-content: space-around;
justify-content: space-evenly;
}
</style>
1.6 项目在交叉轴上的排列
<style>
.container{
display: flex;
width: 300px;
height: 200px;
/* 项目在交叉轴上默认是自动伸缩的 */
align-items: stretch;
align-items: flex-start;
align-items: flex-end;
align-items: center;
}
.container >.item{
width: 60px;
}
</style>
1.7 flex容器属性实战:快速鲁一个主导航
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-scale=1.0">
<title>flex容器属性实战:快速鲁一个主导航</title>
<style>
/* 初始化 */
*{
padding: 0;
margin: 0;
box-sizing: border-box;
}
a{
text-decoration: none;
color: #ccc;
}
nav{
height: 40px;
background-color: #333;
padding: 0 50px;
/* 转为弹性盒布局 */
display: flex;
}
nav a{
height: inherit;
line-height: 40px;
padding: 0 10px;
}
nav a:hover{
background-color: seagreen;
color: white;
}
/* 登录注册放在最右边 */
nav a:last-of-type{
margin-left: auto;
}
</style>
</head>
<body>
<header>
<nav>
<a href="">首页</a>
<a href="">视频教程</a>
<a href="">社区问答</a>
<a href="">资源下载</a>
<a href="">登录/注册</a>
</nav>
</header>
</body>
</html lang="en">
2.order属性
2.1 order控制项目顺序
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-scale=1.0">
<title>项目属性:order控制项目顺序</title>
<style>
.container{
width: 300px;
display: flex;
}
.container > .item{
width: 60px;
}
.container > .item:first-of-type{
/* order: 默认是0; */
order: 3;
}
.container > .item:last-of-type{
order: 5;
}
</style>
</head>
<body>
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>
</body>
</html>
2.2 order小案例,调整元素顺序
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-scale=1.0">
<title>order小案例,调整元素顺序,比如小相册</title>
<style>
.container{
width: 300px;
display: flex;
flex-direction: column;
}
.container > .item{
border: 1px solid #000;
padding: 10px;
display: flex;
position: relative;
}
.container >.item>div{
display: flex;
}
</style>
</head>
<body>
<div class="container">
<div class="item">
<div>1.jpg
<button onclick="up(this)">Up</button>
<button onclick="down(this)">down</button>
</div>
</div>
<div class="item">2.jpg
<div>
<button onclick="up(this)">Up</button>
<button onclick="down(this)">down</button>
</div>
</div>
<div class="item">3.jpg
<div>
<button onclick="up(this)">Up</button>
<button onclick="down(this)">down</button>
</div>
</div>
</div>
<script>
let up=(ele) => (ele.offsetParent.style.order -=1);
let down=(ele) => (ele.offsetParent.style.order +=1);
</script>
</body>
</html>
注意:个人建议使用火狐浏览器(FIREFOX)
推荐阅读
-
实例讲解CSS3中的box-flex弹性盒属性布局
-
浅谈CSS属性之布局--flex布局<弹性盒模型>
-
CSS3弹性布局align-items和align-self垂直轴方向行对齐属性详解及实例_html/css_WEB-ITnose
-
CSS3中的box-flex弹性盒属性布局的示例介绍
-
详细介绍H5弹性盒布局的使用(父容器属性)
-
CSS3弹性布局align-items和align-self垂直轴方向行对齐属性详解及实例_html/css_WEB-ITnose
-
FlexBox弹性盒布局和order属性
-
详细介绍H5弹性盒布局的使用(父容器属性)
-
CSS3中的box-flex弹性盒属性布局的示例介绍
-
CSS3 弹性布局弹性流(flex-flow)属性详解和实例_html/css_WEB-ITnose