实现div特定布局的方法

要实现一个 div
垂直居中且左右各留 10px
的边距,并且高度为宽度的一半,可以使用以下方法:
方法 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>
body, html {
margin: 0;
padding: 0;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
.container {
width: calc(100% - 20px); /* 左右各留 10px */
height: 50%; /* 高度为宽度的一半 */
background-color: lightblue;
display: flex;
justify-content: center;
align-items: center;
}
</style>
</head>
<body>
<div class="container">
内容
</div>
</body>
</html>
方法 2:使用 Grid 布局
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Grid 布局</title>
<style>
body, html {
margin: 0;
padding: 0;
height: 100%;
display: grid;
place-items: center;
}
.container {
width: calc(100% - 20px); /* 左右各留 10px */
aspect-ratio: 2 / 1; /* 高度为宽度的一半 */
background-color: lightblue;
display: grid;
place-items: center;
}
</style>
</head>
<body>
<div class="container">
内容
</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">
<title>绝对定位</title>
<style>
body, html {
margin: 0;
padding: 0;
height: 100%;
position: relative;
}
.container {
position: absolute;
left: 10px;
right: 10px;
top: 50%;
transform: translateY(-50%);
aspect-ratio: 2 / 1; /* 高度为宽度的一半 */
background-color: lightblue;
display: flex;
justify-content: center;
align-items: center;
}
</style>
</head>
<body>
<div class="container">
内容
</div>
</body>
</html>
解释
-
Flexbox 布局:
display: flex;
使容器成为一个弹性盒子。justify-content: center;
和align-items: center;
使内容在水平和垂直方向上居中。width: calc(100% - 20px);
确保左右各留10px
的边距。height: 50%;
使高度为宽度的一半。
-
Grid 布局:
display: grid;
使容器成为一个网格容器。place-items: center;
使内容在水平和垂直方向上居中。aspect-ratio: 2 / 1;
使高度为宽度的一半。
-
绝对定位:
position: absolute;
使容器相对于最近的定位祖先元素(这里是body
)进行定位。left: 10px;
和right: 10px;
确保左右各留10px
的边距。top: 50%;
和transform: translateY(-50%);
使容器垂直居中。aspect-ratio: 2 / 1;
使高度为宽度的一半。
这些方法都可以实现你所需的布局效果,选择哪种方法取决于你的具体需求和项目中的其他布局要求。