注:纯手打,如有错误欢迎评论区交流!
转载请注明出处:https://blog.youkuaiyun.com/testleaf/article/details/144204872
编写此文是为了更好地学习前端知识,如果损害了有关人的利益,请联系删除!
本文章将不定时更新,敬请期待!!!
欢迎点赞、收藏、转发、关注,多谢!!!
1、使用Flexbox
Flexbox 是一种非常强大且简洁的布局方式,可以非常方便地实现水平垂直居中。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
body {
margin: 0;
}
.container {
display: flex;
justify-content: center; /* 水平居中 */
align-items: center; /* 垂直居中 */
height: calc(
100vh - 2px
); /* 使容器占满整个视口高度,减去border的上下共2px */
border: 1px solid #000; /* 只是为了可视化效果 */
}
.centered-div {
width: 200px;
height: 200px;
background-color: lightblue;
}
</style>
</head>
<body>
<div class="container">
<div class="centered-div">我是居中的div</div>
</div>
</body>
</html>
效果如下:

2、使用 CSS Grid
CSS Grid 也是一种现代布局方式,可以非常简洁地实现居中对齐。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
body {
margin: 0;
}
.container {
display: grid;
place-items: center; /* 水平和垂直居中 */
height: calc(
100vh - 2px
); /* 使容器占满整个视口高度,减去border的上下共2px */
border: 1px solid #000; /* 只是为了可视化效果 */
}
.centered-div {
width: 200px;
height: 200px;
background-color: lightgreen;
}
</style>
</head>
<body>
<div class="container">
<div class="centered-div">我是居中的div</div>
</div>
</body>
</html>
效果如下:

3、使用绝对定位和变换
这种方法需要知道被居中元素的尺寸,并且父元素需要设置为相对定位。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
body {
margin: 0;
}
.container {
position: relative;
height: calc(
100vh - 2px
); /* 使容器占满整个视口高度,减去border的上下共2px */
border: 1px solid #000; /* 只是为了可视化效果 */
}
.centered-div {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 200px;
height: 200px;
background-color: lightcoral;
}
</style>
</head>
<body>
<div class="container">
<div class="centered-div">我是居中的div</div>
</div>
</body>
</html>
效果如下:

4、使用内联块和文本对齐(不推荐,但了解)
这种方法通过设置父元素为表格单元格样式,并设置子元素为内联块来实现居中。不过,这种方法不太常用,因为不如前几种方法灵活和简洁。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<style>
body {
margin: 0;
}
.container {
display: table;
width: calc(100% - 2px);
height: calc(
100vh - 2px
); /* 使容器占满整个视口高度,减去border的上下共2px */
border: 1px solid #000; /* 只是为了可视化效果 */
}
.centered-wrapper {
display: table-cell;
vertical-align: middle; /* 垂直居中 */
text-align: center; /* 水平居中 */
}
.centered-div {
display: inline-block;
width: 200px;
height: 200px;
background-color: lightpink;
}
</style>
</head>
<body>
<div class="container">
<div class="centered-wrapper">
<div class="centered-div">我是居中的div</div>
</div>
</div>
</body>
</html>
效果如下:

5、总结
可以选择以上任意一种方法来实现div元素的水平垂直居中。Flexbox 和 CSS Grid 是现代布局的首选方法,因为它们更简洁和强大。
3646



被折叠的 条评论
为什么被折叠?



