当前位置:网站首页>Multi row and multi column flex layout
Multi row and multi column flex layout
2022-07-07 12:30:00 【Xiaoding Chong duck!】
1、 Three lines and three columns , Margins are all 20px, Every box Width and height are 200px
Use flex Layout , Set the width and height of the outer box to 640px(200*3+20*2), In the use of align-content: space-between and justify-content: space-between that will do , The code is as follows :
<style>
*{
padding:0;
margin: 0;
}
html,body{
width: 100%;
height: 100%;
}
.box{
width: 640px;
background: rgb(243, 171, 171);
height: 640px;
display: flex;
flex-wrap: wrap;
align-content: space-between;
justify-content: space-between;
}
.Abox{
background: yellow;
width: 200px;
height: 200px;
}
</style>
<body>
<div class="box">
<div class="Abox">1</div>
<div class="Abox">2</div>
<div class="Abox">3</div>
<div class="Abox">4</div>
<div class="Abox">5</div>
<div class="Abox">6</div>
<div class="Abox">7</div>
<div class="Abox">8</div>
<div class="Abox">9</div>
</div>
</body>
2、 Multiple rows and three columns , Margins are all 20px, Every box Width and height are 200px, Highly adaptive content
Or use align-content: space-between and justify-content: space-between, Height has js calculated , In setting up to dom On :
<style>
*{
padding:0;
margin: 0;
}
html,body{
width: 100%;
height: 100%;
}
.box{
width: 640px;
background: rgb(243, 171, 171);
/* height: 640px; */
display: flex;
flex-wrap: wrap;
align-content: space-between;
justify-content: space-between;
}
.Abox{
background: yellow;
width: 200px;
height: 200px;
}
</style>
<body>
<div class="box">
<div class="Abox">1</div>
<div class="Abox">2</div>
<div class="Abox">3</div>
<div class="Abox">4</div>
<div class="Abox">5</div>
<div class="Abox">6</div>
<div class="Abox">7</div>
<div class="Abox">8</div>
<div class="Abox">9</div>
<div class="Abox">10</div>
<div class="Abox">11</div>
<div class="Abox">12</div>
</div>
</body>
<script>
let parentDom = document.querySelector('.box');
let children = parentDom.children;
let rowNums = Math.ceil(children.length / 3);
parentDom.style.height = rowNums * 200 + (rowNums - 1) * 20 + 'px';
</script>
3、 Three rows and many columns , Margins are all 20px, Every box Width and height are 200px, Width adaptive content
Law 1 :
Or use align-content: space-between and justify-content: space-between, At this time, the width is determined by the content , So you can go through js Calculate and dynamically set the width :
<style>
*{
padding:0;
margin: 0;
}
html,body{
width: 100%;
height: 100%;
}
.box{
background: rgb(243, 171, 171);
height: 640px;
display: flex;
flex-wrap: wrap;
flex-direction: column;
align-content: space-between;
justify-content: space-between;
}
.Abox{
background: yellow;
width: 200px;
height: 200px;
}
</style>
<body>
<div class="box">
<div class="Abox">1</div>
<div class="Abox">2</div>
<div class="Abox">3</div>
<div class="Abox">4</div>
<div class="Abox">5</div>
<div class="Abox">6</div>
<div class="Abox">7</div>
<div class="Abox">8</div>
<div class="Abox">9</div>
<div class="Abox">10</div>
<div class="Abox">11</div>
<div class="Abox">12</div>
</div>
</body>
<script>
let parentDom = document.querySelector('.box');
let children = parentDom.children;
let columnNums = Math.ceil(children.length / 3);
parentDom.style.width = columnNums * 200 + (columnNums - 1) * 20 + 'px';
</script>
Law two :
Spindle use justify-content: space-between, Cross axis use align-content: flex-start, At this time, there is margin control , Don't use js Control the width of the parent box ,width Set to fit-content:
The effect is as follows , At this time, the width of the parent box is only the width of a list of child elements , I have encountered this problem before , Namely flex-direction: column when , The width of multiple columns of child elements cannot expand the width of parent elements , Therefore, this plan cannot .
4、 Three lines and three columns , Margins are all 20px, Every box Width and height are 200px, Highly adaptive content , Child elements cannot be covered
The method of question two is used , If you find that the last line is less than three, there will be a space in the middle , It's not the effect we want :
Law 1 :
Use not shown div fill , To carry on the placeholder :
<style>
*{
padding:0;
margin: 0;
}
html,body{
width: 100%;
height: 100%;
}
.box{
width: 640px;
height: 640px;
background: rgb(243, 171, 171);
display: flex;
flex-wrap: wrap;
align-content: space-between;
justify-content: space-between;
}
.Abox{
background: yellow;
width: 200px;
height: 200px;
}
</style>
<body>
<div class="box">
<div class="Abox">1</div>
<div class="Abox">2</div>
<div class="Abox">3</div>
<div class="Abox">4</div>
<div class="Abox">5</div>
<div class="Abox">6</div>
<div class="Abox">7</div>
<div class="Abox">8</div>
</div>
</body>
<script>
let parentDom = document.querySelector('.box');
let children = parentDom.children;
let n = children.length % 3;
// Don't cover
if (n) {
while (3 - n > 0) {
let div = document.createElement('div');
div.className = 'Abox';
div.style.visibility = 'hidden';
parentDom.appendChild(div);
n++;
}
}
</script>
The effect is as follows :
Law two :
Spindle use justify-content: flex-start, Cross axis use align-content: space-between, The right margin is margin Set up , The last column nth-child(3n) Do not set the right margin :
<style>
*{
padding:0;
margin: 0;
}
html,body{
width: 100%;
height: 100%;
}
.box{
width: 640px;
background: rgb(243, 171, 171);
height: 640px;
display: flex;
flex-wrap: wrap;
align-content: space-between;
justify-content: flex-start;
}
.Abox{
background: yellow;
width: 200px;
height: 200px;
margin-right: 20px;
}
.Abox:nth-child(3n) {
margin: 0;
}
</style>
<body>
<div class="box">
<div class="Abox">1</div>
<div class="Abox">2</div>
<div class="Abox">3</div>
<div class="Abox">4</div>
<div class="Abox">5</div>
<div class="Abox">6</div>
<div class="Abox">7</div>
<div class="Abox">8</div>
</div>
</body>
in addition , above 1、2、3 These situations that can be covered can also be realized by using the method of two .
边栏推荐
- Learning and using vscode
- Solve server returns invalid timezone Go to ‘Advanced’ tab and set ‘serverTimezone’ property manually
- @What happens if bean and @component are used on the same class?
- Completion report of communication software development and Application
- 【PyTorch实战】图像描述——让神经网络看图讲故事
- <No. 9> 1805. 字符串中不同整数的数目 (简单)
- Sign up now | oar hacker marathon phase III midsummer debut, waiting for you to challenge
- How to understand the clothing industry chain and supply chain
- 小红书微服务框架及治理等云原生业务架构演进案例
- Completion report of communication software development and Application
猜你喜欢
2022 年第八届“认证杯”中国高校风险管理与控制能力挑战赛
SQL lab 11~20 summary (subsequent continuous update) contains the solution that Firefox can't catch local packages after 18 levels
Several methods of checking JS to judge empty objects
Tutorial on principles and applications of database system (009) -- conceptual model and data model
The IDM server response shows that you do not have permission to download the solution tutorial
PowerShell cs-utf-16le code goes online
数据库系统原理与应用教程(010)—— 概念模型与数据模型练习题
The hoisting of the upper cylinder of the steel containment of the world's first reactor "linglong-1" reactor building was successful
关于 Web Content-Security-Policy Directive 通过 meta 元素指定的一些测试用例
跨域问题解决方案
随机推荐
[pytorch practice] image description -- let neural network read pictures and tell stories
ps链接图层的使用方法和快捷键,ps图层链接怎么做的
Up meta - Web3.0 world innovative meta universe financial agreement
The left-hand side of an assignment expression may not be an optional property access.ts(2779)
关于 Web Content-Security-Policy Directive 通过 meta 元素指定的一些测试用例
Unity map auto match material tool map auto add to shader tool shader match map tool map made by substance painter auto match shader tool
In the small skin panel, use CMD to enter the MySQL command, including the MySQL error unknown variable 'secure_ file_ Priv 'solution (super detailed)
SQL Lab (46~53) (continuous update later) order by injection
Zhimei creative website exercise
SQL head injection -- injection principle and essence
浅谈估值模型 (二): PE指标II——PE Band
Vxlan static centralized gateway
EPP+DIS学习之路(1)——Hello world!
密码学系列之:在线证书状态协议OCSP详解
ENSP MPLS layer 3 dedicated line
Solve server returns invalid timezone Go to ‘Advanced’ tab and set ‘serverTimezone’ property manually
源代码防泄密中的技术区别再哪里
如何理解服装产业链及供应链
idea 2021中文乱码
【统计学习方法】学习笔记——第四章:朴素贝叶斯法