长久以来 css的水平居中,垂直居中,水平垂直居中 我都比较混乱 每次都是试对了就行,今天好好总结一下
1.行内元素水平居中
<style> div{ background-color:cadetblue; width: 500px; text-align: center; } </style> <body> <div> 我是文本,我只相对于父元素水平居中 </div> </body>
2.块状元素的水平居中,分为:定宽块状元素和不定宽块状元素
定宽块状元素水平居中显示
- 最常使用的margin 方式 margin: auto auto为垂直水平居中
<style> div{ background-color:cadetblue; width: 500px; /* margin-left和margin-right设置auto,margin-top和margin-bottom可以不为0 */ margin: 0 auto; } </style> <body> <div> 我是定宽块状元素,我想水平居中显示 </div> </body>
- 使用flex布局实现水平垂直居中 一定要把这里的flex-center挂在父级元素,才能使得其中 唯一的子元素居中
<style> .wrapper { width: 300px; height: 300px; border: 1px solid #ccc; } .flex-center { display: flex; /* 水平居中 */ justify-content: center; /* 垂直居中 */ align-items: center; } </style> <body> <div class="wrapper flex-center"> <div> 我要居中 </div> </div> </body>:
不定宽块状元素水平居中
1.给要居中的块状元素外一个table标签,然后让table标签居中,个人不推荐这种方式
<style> table{ background-color: yellow; margin: 0 auto; } </style> <body> <table> <tbody> <tr><td><div> 设置我所在的div容器水平居中 </div> </td></tr> </tbody> </table
2.将不定宽块状元素display为内联元素
<style> ul{ background-color:red; display: inline; text-align: center; } </style> <body> <ul> <li>1</li> <li>2</li> <li>3</li> </ul> </body>
效果(没有弄清楚为什么左上角还有显示红色)