欢迎观阅本本篇文章,我是Sam9029
上下左右居中--方法总结大全
的水平垂直居中
的方法总结这就是一篇页面 上下左右居中–方法总结
旨在温习,和拓展
说到这,不妨说出你认为的 上下左右居中的方法有多少种
(我之前,就会只常见的三种(
flex
,定位+transform
,gird
))
今天我将重新学习 上下左右居中方法
在实现 上下左右(水平垂直)居中时,我们总需要考虑的两个主要对象
父元素
和 子元素(即被实现-上下左右居中的元素)
所以我们在使用不同的方法时就必须考虑父元素的某些问题
对,如下
块元素
(或者行内块元素
)
宽高
块元素
(或者行内块元素
),且有宽高问题又来了,你想想,既然父元素必有宽高
,那我们一定需要知道它的具体数值
吗?
私房钱(父元素宽高的具体数值)
?,你想要(上下左右居中)
相当于找老爸要零花钱
,但你不需要知道老爸到底有多少私房钱(因为老妈也可能不知道)零花钱
一样所以我们在实现上下左右居中时,就会有两种情况
每种实现方式都会给出使用场景
6种
实现元素 上下左右居中方法<body>
<div class="fa">
<div class="son">div>
div>
<style>
/* 注意消去默认的margin+padding影响 */
body,div{
box-sizing:border-box;
margin:0;
padding:0;
}
.fa{
width:100vw;
height: 100vh;
border:5px solid tomato;
position:relative;
}
.son{
width:100px;
height: 100px;
border:5px solid black;
position:absolute;
top:50%;
left:50%;
transform:translate(-50%,-50%);
}
style>
使用场景:
- 未知宽高 父元素
- 已知宽高 父元素
效果演示:
上下左右居中–定位+transform-SAM9029-codepen
实现过程讲解,很详细,推荐:#HTML元素居中方法总结 - 暮冬有八 - 博客园 (cnblogs.com) (B友笔记)
<body>
<div class="fa">
<div class="son">div>
div>
<style>
/* 注意消去默认的margin+padding影响 */
body,div{
box-sizing:border-box;
margin:0;
padding:0;
}
.fa{
width:100vw;
height: 100vh;
border:5px solid tomato;
display:flex;
justify-content:center;
align-items:center;
}
.son{
width:100px;
height: 100px;
border:5px solid black;
}
style>
body>
使用场景:
- 未知宽高 父元素
- 已知宽高 父元素
效果演示:
上下左右居中–Flex实现–SAM9029-codepen
实现过程讲解,很详细,推荐:#HTML元素居中方法总结 - 暮冬有八 - 博客园 (cnblogs.com) (B友笔记)
CSS Grid布局可以说是现代Web布局中的银弹。它也是到目前为止布局系统中唯一一个二维布局系统。
<body>
<div class="fa">
<div class="son">div>
div>
<style>
/* 注意消去默认的margin+padding影响 */
body,div{
box-sizing:border-box;
margin:0;
padding:0;
}
.fa{
width:100vw;
height: 100vh;
border:5px solid tomato;
display:grid;
/*or*/
/*display:inline-gird;*/
/*对 没错 仅一句话 即可实现上下左右居中*/
place-items: center
}
.son{
width:100px;
height: 100px;
border:5px solid black;
}
style>
body>
使用场景:
- 未知宽高 父元素
- 已知宽高 父元素
效果演示:
上下左右居中–Gird实现–SAM9029-codepen
display:table
实现display:table
实现,❗得多讲两句需要注意得地方div.fa
>div.son
>img
)
son内部
)display设置为table-cell 内部的 元素应该是 行内块元素或者行内元素
table元素
)就该写内容,内部应该在嵌套元素了<body>
<div class="fa">
<div class="son">
<img src="./dog.png" alt="">
div>
div>
<style>
body,div{
box-sizing:border-box;
margin:0;
padding:0;
}
body{
width:100vw;
height:100vh;
}
.fa{
width: 80%;
height: 80%;
display: table;
border:5px solid skyblue;
}
.son{
border:10px solid tomato;
display: table-cell;
vertical-align: middle;
text-align: center;/*单元格是行内元素*/
}
img,.item{
display:inline-block;
width:100px;
height:100px;
border:1px solid black;
}
style>
body>
使用场景:
- 未知宽高 父元素
- 已知宽高 父元素
效果演示:
上下左右居中–display-table实现 sam9029-codepen.io
div.fa > text(直接是内容)
行内块元素或者行内元素
line-height
和text-align
设置 仅对元素内的 行内块元素和行内元素生效,对块元素无效vertical-align
同样仅对元素内的 行内块元素和行内元素生效,<body>
<div class="fa">
text
div>
<style>
body,div{
box-sizing:border-box;
margin:0;
padding:0;
}
body{
width:100vw;
height:100vh;
}
.fa{
width: 500px;
height: 500px;
border:5px solid skyblue;
/*左右居中,text-align设置 仅对元素内的 行内块元素和行内元素生效*/
text-align:center;
line-height:500px;
}
/* 将son 设置为行内款元素*/
.son{
display:inline-block;
width: 100px;
height: 100px;
border:2px solid black;
}
style>
body>
使用场景:
- 已知宽高 父元素
效果演示:
上下左右居中–line-height实现 sam9029-codepen.io
<body>
<div class="fa">
<div class="son">
div>
div>
<style>
body,div{
box-sizing:border-box;
margin:0;
padding:0;
}
body{
width:100vw;
height:100vh;
}
.fa{
width: 80%;
height: 80%;
border:5px solid skyblue;
position:relative;
}
.son{
width: 100px;
height: 100px;
border:2px solid black;
margin:auto;
position:absolute;
top:0;
left:0;
right:0;
bottom:0;
}
style>
body>
演示效果
上下左右居中–未知名称法(使用纯定位)SAM9029-codepen
margin
+padding
影响margin
+padding
影响/* 注意默认的margin+padding消去影响 */
body,div{
box-sizing:border-box;
margin:0;
padding:0;
}
text-align
/line-height
/vertical-align
设置 仅对元素内的 行内块元素和行内元素生效
- [HTML] 上下左右置中对齐的三种方法-CodingStartup起码课-bilibili
- #HTML元素居中方法总结 - 暮冬有八 - 博客园 (cnblogs.com) (B友笔记)
- 讲解了 定位,flex,display:table 的实现,推荐观阅
文章若有错误,敬请指正
Sam9029-CSDN主页
**恭喜你,都看到这了,求赞,求收藏,求评论不过分吧**