前言: Css中水平居中的问题非常常见, 下面就根据自己的经验和网上相关的文章总结有关Css水平居中的相关知识, 如果对你有帮助的话可以多多点赞哦!!!
1. 居中
1.1 水平居中
-
文本, 图片等行内元素水平居中
-
父级元素为块状元素
<style> #father { width: 500px; height: 300px; background-color: skyblue; text-align: center; } </style> </head> <body> <div id="father"> <span id="son">我是行内元素</span> </div> </body>
-
父级元素不是块级元素
思路: 设置父级元素为块级元素
<style> #father { display: block; width: 500px; height: 300px; background-color: skyblue; text-align: center; } </style> </head> <body> <span id="father"> <span id="son">我是行内元素</span> </span> </body>
-
-
块级元素水平居中
- 元素的宽度已知
思路: 直接设置
margin: auto
或者margin: 0 auto
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> #father { width: 500px; height: 300px; background-color: skyblue; } #son { width: 100px; height: 100px; background-color: green; margin: 0 auto; } </style> </head> <body> <div id="father"> <div id="son">我是块级元素</div> </div> </body> </html>
-
元素的宽度未知
-
使用css3新特性transform
主要思路:
父级元素设置
position: relative
本身设置为
position: absolute
本身相对父级元素
left: 50%
清除自身宽度的影响
transform: translateX(-50%);
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> #father { width: 500px; height: 300px; background-color: skyblue; position: relative; } #son { height: 100px; background-color: green; position: absolute; left: 50%; transform: translateX(-50%); } </style> </head> <body> <div id="father"> <div id="son">我是块级元素</div> <div class="other">主要内容区</div> </div> </body> </html>
注意, 使用此种布局后面的元素需要注意absolute布局脱离文档流的影响
-
使用flex布局实现(推荐使用, 但不能兼容比较老的浏览器)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> #father { width: 500px; height: 300px; background-color: skyblue; display: flex; justify-content: center; } #son { height: 100px; background-color: green; } </style> </head> <body> <div id="father"> <div id="son">我是块级元素</div> <div class="other">主要内容区</div> </div> </body> </html>
-
设置子元素为行内元素, 同时设置父元素
text-align: center
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> #father { width: 500px; height: 300px; background-color: skyblue; text-align: center; } #son { height: 100px; background-color: green; display: inline-block; } </style> </head> <body> <div id="father"> <div id="son">我是块级元素</div> <div class="other">主要内容区</div> </div> </body> </html>