定位和居中对齐
定位
相对定位
- 属性值:
relative - 元素相对于它在文档流中的位置的起始点进行移动。有一点要注意, 在使用相对定位时, 就算元素被偏移了,但是他仍然占据着它没偏移前的空间。
#box_relative {
position: relative;
left: 30px;
top: 20px;
}
效果如下:
绝对定位
- 属性值:
absolute - 绝对定位使元素的位置与文档流无关,因此不占据空间。 生成绝对定位的元素,相对于 static 定位以外的第一个父元素(body)进行定位。
#box_absolute {
position: absolute;
left: 30px;
top: 20px;
}
效果如下:
居中对齐
水平居中对齐
实现方式:
text-align: center;margin: auto;,注意margin需要有width才能生效position: absolute;+left: 50%;+margin-leftdisplay: flex;+justify-content: center;
具体实现:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.container {
border: 1px solid #ccc;
margin: 10px;
padding: 10px;
width: 500px;
}
.item {
background-color: #eee;
}
.div1 .item {
text-align: center;
}
.div2 .item {
width: 200px;
margin: auto;
text-align: center;
}
.div3 {
position: relative;
height: 20px;
}
.div3 .item {
width: 200px;
position: absolute;
left: 50%;
margin-left: -100px;
text-align: center;
}
.div4 {
display: flex;
justify-content: center;
}
</style>
</head>
<body>
<!-- 1 -->
<div class="container div1">
<div class="item">this is a text</div>
</div>
<!-- 2 -->
<div class="container div2">
<div class="item">this is a block text</div>
</div>
<!-- 3 -->
<div class="container div3">
<div class="item">this is a absolute text</div>
</div>
<!-- 4 -->
<div class="container div4">
<div class="item">this is a absolute text</div>
</div>
</body>
</html>
实现效果:
垂直居中对齐
实现方式:
line-height和元素高度一样position: absolute;+top: 50%;+margin-topposition: absolute;+top: 50%;+transform: translate(-50%, -50%);display: flex;+align-items: center;position: absolute;+top、left、bottom、right为0+margin: auto;
具体实现:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.container {
border: 1px solid #ccc;
margin: 10px;
padding: 10px;
width: 500px;
height: 80px;
}
.item {
background-color: #eee;
}
.div1 .item {
text-align: center;
line-height: 80px;
}
.div2 {
position: relative;
}
.div2 .item {
width: 200px;
height: 20px;
text-align: center;
position: absolute;
top: 50%;
margin-top: -10px;
left: 50%;
margin-left: -100px;
}
.div3 {
position: relative;
}
.div3 .item {
width: 200px;
position: absolute;
text-align: center;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
.div4 {
display: flex;
justify-content: center;
align-items: center;
}
.div5 {
position: relative;
}
.div5 .item {
width: 200px;
height: 20px;
text-align: center;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
margin: auto;
}
</style>
</head>
<body>
<!-- 1 -->
<div class="container div1">
<div class="item">this is a text</div>
</div>
<!-- 2 -->
<div class="container div2">
<div class="item">this is a absolute text</div>
</div>
<!-- 3 -->
<div class="container div3">
<div class="item">this is a absolute text</div>
</div>
<!-- 4 -->
<div class="container div4">
<div class="item">this is a absolute text</div>
</div>
<!-- 5 -->
<div class="container div5">
<div class="item">this is a absolute text</div>
</div>
</body>
</html>