一.子元素排序属性order
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.container {
width: 800px;
height: 600px;
border: 1px solid red;
/* 把父元素设置为 弹性盒模型 */
display: flex;
}
.container .item {
width: 100px;
height: 100px;
border: 1px solid blue;
}
/* order规定子元素 (项目)的排列顺序 */
/* order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。 */
.container .item:nth-child(3) {
order: 1;
}
.container .item:nth-child(1) {
order: 0;
}
.container .item:nth-child(2) {
order: 3;
}
</style>
</head>
<body>
<div class="container">
<div class="item">item1</div>
<div class="item">item2</div>
<div class="item">item3</div>
<div class="item">item4</div>
<div class="item">item5</div>
</div>
</body>
</html>
二.子元素平均分配和放大属性flex-grow
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.container {
width: 800px;
height: 600px;
border: 1px solid red;
/* 把父元素设置为 弹性盒模型 */
display: flex;
}
.container .item {
/* width: 100px; */
height: 100px;
border: 1px solid blue;
/* 如果每一个项目没有宽度 那么 flex-grow: 1; 就代表平均分配宽度*/
flex-grow: 1;
}
/* flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。 */
.container .item:nth-child(3) {
flex-grow: 2;
}
.container .item:nth-child(4) {
flex-grow: 3;
}
</style>
</head>
<body>
<div class="container">
<div class="item">item1</div>
<div class="item">item2</div>
<div class="item">item3</div>
<div class="item">item4</div>
<div class="item">item5</div>
</div>
</body>
</html>
三.子元素缩小属性flex-shrink
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.container {
width: 800px;
height: 600px;
border: 1px solid red;
/* 把父元素设置为 弹性盒模型 */
display: flex;
}
.container .item {
width: 200px;
height: 100px;
border: 1px solid blue;
flex-grow: 1;
}
/* flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。值越大,越缩小 */
.container .item:nth-child(2){
flex-shrink: 2;
}
.container .item:nth-child(3){
flex-shrink: 5;
}
</style>
</head>
<body>
<div class="container">
<div class="item">item1</div>
<div class="item">item2</div>
<div class="item">item3</div>
<div class="item">item4</div>
<div class="item">item5</div>
</div>
</body>
</html>
四.子元素属性flex-basis
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.container {
width: 800px;
height: 600px;
border: 1px solid red;
/* 把父元素设置为 弹性盒模型 */
display: flex;
}
.container .item {
width: 100px;
height: 100px;
border: 1px solid blue;
flex-basis: auto;
flex-grow: 1;
}
/* flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间 */
/* flex-basis 跟width一样 */
.container .item:nth-child(3) {
flex-basis: 200px;
}
</style>
</head>
<body>
<div class="container">
<div class="item">item1</div>
<div class="item">item2</div>
<div class="item">item3</div>
<div class="item">item4</div>
<div class="item">item5</div>
</div>
</body>
</html>
五.子元素属性flex
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.container {
width: 800px;
height: 600px;
border: 1px solid red;
/* 把父元素设置为 弹性盒模型 */
display: flex;
}
.container .item {
width: 100px;
height: 100px;
border: 1px solid blue;
/* flex: 1 1 auto*/
flex: auto;
/* flex: 0 1 auto*/
flex: none;
/* flex:0 1 0% */
flex: 0;
/* flex:1 1 0% */
flex: 1;
}
/* flex: 0 1 auto | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ] */
</style>
</head>
<body>
<div class="container">
<div class="item">item1</div>
<div class="item">item2</div>
<div class="item">item3</div>
<div class="item">item4</div>
<div class="item">item5</div>
</div>
</body>
</html>
六.不一样的对齐方式align-self
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.container {
width: 800px;
height: 600px;
border: 1px solid red;
/* 把父元素设置为 弹性盒模型 */
display: flex;
justify-content: center;
align-items: center;
}
.container .item {
width: 100px;
height: 100px;
border: 1px solid blue;
}
/* align-self: auto | flex-start | flex-end | center | baseline | stretch; */
/* align-self属性允许单个项目有与其他项目不一样的对齐方式 */
.container .item:nth-child(1) {
align-self: flex-start;
height: 200px;
}
.container .item:nth-child(2) {
align-self: flex-end;
height: 200px;
}
.container .item:nth-child(3) {
height: 300px;
align-self: flex-start;
/* align-self: flex-end;
align-self: center;
align-self: baseline;
align-self: stretch; */
}
.container .item:nth-child(4) {
align-self: flex-end;
height: 200px;
}
.container .item:nth-child(5) {
align-self: flex-start;
height: 300px;
}
.move {
font-size: 40px;
position: absolute;
}
</style>
</head>
<body>
<div class="container">
<div class="item">item1</div>
<div class="item">item2</div>
<div class="item">item3</div>
<div class="item">item4</div>
<div class="item">item5</div>
</div>
<span class="move"> 🐇 🐅 🐀 🐂 🐎 🐉 🐍 🐏 🐒 🐥 🐕 🐖</span>
<script>
var _move = document.querySelector(".move");
// document.onmousemove = function (e) {
// var _left = e.clientX - _move.offsetWidth / 2;
// var _top = e.clientY - _move.offsetHeight / 2;
// _move.style.left = _left + "px";
// _move.style.top = _top + "px";
// }
</script>
</body>
</html>