参考链接:http://dengdongxia.com/2018/05/13/2018-05-13-Css-horizontal-centering-method/
1、对于行内元素
text-align:center;
2、对于确定宽度的块级元素
1、margin和width实现水平居中
常用(前提是:已设置width值):
margin-left:auto;
margin-right:auto;
2、绝对定位和margin-left:(-宽度值/2)实现水平居中
固定宽度块级元素水平居中,通过使用绝对定位,以及设置margin-left为其宽度的一半
3、定宽,绝对定位
left:0
right:0;
top:0
bottom:0
margin:auto;
未知宽度的块级元素
1.table标签配合margin左右auto实现水平居中
2.inline-block和text-align
3.绝对定位实现水平居中
绝对定位+transform,translateX可以移动本省元素的50%
.content{
position: absolute;
left: 50%;
transform: translateX(-50%); /* 移动元素本身50% */
background: aqua;
}4.相对定位实现水平居中
用float或者display把父元素变为行内块状元素。
.contentParent{
display: inline-block; /* 把父元素转化为行内块状元素 */
/*float: left; 把父元素转化为行内块状元素 */
position: relative;
left: 50%;
}
/*目标元素*/
.content{
position: relative;
right: 50%;
background-color:aqua;
}5.flex
.contentParent{
display: flex;
flex-direction: column;
}
.content{
align-self:center;
}或者
.contentParent{
display: flex;
}
.content{
margin: auto;
}6.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<!-- 行内 -->
<div class="hangnei1">
<span class="hangnei">
asd
</span>
</div>
<!-- 定宽块级 -->
<!-- 方法1. margin为auto-->
<div class="dingkuan1">
abcdefg
</div>
<!-- 方法2.绝对定位+left:50%+margin-left为负的自身宽度一半 -->
<div class="dingkuan2">
abcdefg
</div>
<!-- 方法3,绝对定位,左右设为0,margin auto -->
<div class="dingkuan3">
abcdefg
</div>
<!-- 不定宽 -->
<!-- 方法1,绝对定位,left 50%,tranform -->
<div class="buding1">
asdc
</div>
<!-- 方法2: -->
<div class="fu2">
<div class="buding2">
as
</div>
</div>
<div class="fu3">
<div class="buding3">
as
</div>
</div>
<div class="fu4">
<div class="buding4">
as
</div>
</div>
</body>
<style>
/* 行内元素的话,父元素设置text-align */
.hangnei1 {
width: 100px;
height: 100px;
background-color: aqua;
text-align: center;
}
/* 定宽方法1 ,直接设margin左右为auto*/
.dingkuan1 {
width: 100px;
height: 100px;
margin-left: auto;
margin-right: auto;
background-color: blue;
}
/* 定宽方法2 */
.dingkuan2 {
width: 100px;
height: 100px;
background-color: red;
position: absolute;
/* left会使元素左边框在中间 */
left: 50%;
/* 让其左移一半的宽度 */
margin-left: -50px;
}
.dingkuan3 {
width: 100px;
height: 100px;
position: absolute;
/* top: 0;
bottom: 0; */
left: 0;
right: 0;
margin: auto;
background-color: brown;
/* 没用的,只是为了布局*/
margin-top: 100px;
}
/* 不定宽 */
/* 方法1 */
.buding1 {
background-color: cornsilk;
position: absolute;
left: 50%;
transform: translateX(-50%);
}
/* 方法2 */
.fu2 {
display: inline-block;
position: relative;
left: 50%;
}
.buding2 {
position: relative;
right: 50%;
background-color: cyan;
/* 没用的 */
margin-bottom: 200px;
}
/* 方法3 */
.fu3{
/* 以列为书写格式 */
display: flex;
flex-direction: column;
align-items: center;
}
.buding3 {
/* 允许单个项目有与其他项目不一样的对齐方式,可以覆盖align-items属性 */
/* align-self:center; */
background-color: darkblue;
}
/* 方法4 */
.fu4{
display: flex;
}
.buding4{
background-color: darkgray;
margin:auto;
}
</style>
</html>
京公网安备 11010502036488号