参考链接: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>