css居中学习笔记
一、水平居中
以下面的代码为例:
<body> <div class="parent"> <div class="child"> hello world ! </div> </div> </body>
方法一:inline-block + text-align
<style type="text/css"> body{ margin: 0px; padding: 0px; } .parent{ background-color: antiquewhite; text-align: center; } .child{ background-color: #000000; color: white; display: inline-block; } </style>
评价:优点:兼容性好;缺点:元素居中且元素里面的文字也居中
方法二:display:table
<style type="text/css"> body{ margin: 0px; padding: 0px; } .parent{ background-color: antiquewhite; } .child{ background-color: #000000; color: white; display: table; margin: 0px auto; } </style>
评价:优点:只需要调用child里面的;缺点:兼容性
方法三:通过定位的方法
<style type="text/css"> body{ margin: 0px; padding: 0px; } .parent{ background-color: red; position: relative; } .child{ background-color: #000000; color: white; position: absolute; left: 50%; transform: translateX(-50%); } </style>
评价:优点:不会对其他元素产生影响;缺点:兼容性
方法四:
<style type="text/css"> body{ margin: 0px; padding: 0px; } .parent{ background-color: red; display: flex; justify-content: center; } .child{ background-color: #000000; color: white; } </style>
评价:优点:只需要设置parent就可以了;缺点:兼容性
方法五:
<style type="text/css"> body{ margin: 0px; padding: 0px; } .parent{ background-color: red; display: flex; } .child{ background-color: #000000; color: white; margin: 0px auto; } </style>
评价:优点:简单易操作;缺点:兼容性
二、垂直居中问题
方法一:table-cel + vertical-align
<style type="text/css"> body{ margin: 0px; padding: 0px; } .parent{ background-color: red; height: 200px; display: table-cell; vertical-align: middle; } .child{ background-color: #000000; color: white; } </style>
评价:优点:兼容性好
方法二:
<style type="text/css"> body{ margin: 0px; padding: 0px; } .parent{ background-color: red; height: 400px; position: relative; } .child{ background-color: #000000; color: white; position:absolute; top:50%; transform: translateY(-50%); } </style>
方法三:
<style type="text/css"> body{ margin: 0px; padding: 0px; } .parent{ background-color: red; height: 400px; display: flex; align-items: center; } .child{ background-color: #000000; color: white; } </style>
三、水平和垂直都居中
方法一:
<style type="text/css"> body{ margin: 0px; padding: 0px; } .parent{ background-color: red; width: 500px; height: 500px; text-align: center; display: table-cell; vertical-align: middle; } .child{ background-color: #000000; color: white; display: inline-block; } </style>
方法二:
<style type="text/css"> body{ margin: 0px; padding: 0px; } .parent{ background-color: red; width: 600px; height: 600px; position: relative; } .child{ background-color: #000000; color: white; position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); } </style>
方法三:
<style type="text/css"> body{ margin: 0px; padding: 0px; } .parent{ background-color: red; width: 100%; height: 800px; display: flex; justify-content: center; align-items: center; } .child{ background-color: #000000; color: white; } </style>