您好,欢迎访问一九零五行业门户网

总结css居中问题的解决办法

css居中遇到的问题总结水平居中【行内元素】适用inline,inline-block,inline-table,inline-flex元素
.center {   text-align: center; }
【块级元素】适用于block level元素
①一个块级元素
   .center {  margin: 0 auto;    }
②多个块级元素
方法一:将块级元素变为行内块级元素 html部分: <main class="inline-block-center">   <p>1</p>   <p>2</p>   <p>3</p> </main> css部分: .inline-block-center {   text-align: center; } .inline-block-center p {   display: inline-block;   text-align: left; } 方法二:flex布局 html部分: <main class="flex-center">   <p>1</p>   <p>2</p>   <p>3</p> </main> css部分: .flex-center{     display:flex;   justify-content:center; }
垂直居中【行内元素】
①单个行内元素:
情况一:当link或文本有包裹元素时,设置相等的上下padding
.link {   padding-top: 30px;   padding-bottom: 30px; }
情况二:当link或文本没有包裹时,设置行高和高度相等
.center-text-trick {   height: 100px;   line-height: 100px }
②多个行内元素:
方法一:将多个行内元素分别置于table-cell中 html部分: <table>   <tr> <td>   1 </td>   </tr> </table> css部分: table td {   background: black;   color: white;   padding: 20px;   border: 10px solid white;   /* default is vertical-align: middle; */ } 方法二:将父元素设置为display:table,将自身设置为display:table-cell html部分: <p class="center-table">   <p>1</p> </p> css部分: .center-table {   display: table;   height: 250px;   width: 240px; } .center-table p {   display: table-cell;   vertical-align: middle; } 方法三:使用felex html部分: <p class="flex-center">   <p>1</p> </p> css部分: .flex-center{   display: flex;   justify-content: center;   flex-direction: column;   height: 400px;/*父容器必须有固定高度*/ } 方法四:当以上代码均不可用时,可尝试此奇淫巧技 html部分: <p class="ghost-center">   <p>1</p> </p> css部分: .ghost-center {   position: relative; } .ghost-center::before {   content:  ;   display: inline-block;   height: 100%;   width: 1%;   vertical-align: middle; } .ghost-center p {   display: inline-block;   vertical-align: middle; }
【块级元素】
①已知元素高度(绝对定位+负的margin)
.parent {   position: relative; } .child {   position: absolute;   top: 50%;   height: 100px;   margin-top: -50px; /* 为元素高度的一半,没有box-sizing时,为height+padding+border的一半*/ }
②不知元素高度(与上一方法,大同小异)
.parent {   position: relative; } .child {   position: absolute;   top: 50%;   transform: translatey(-50%); }
③flex布局
.parent {   display: flex;   flex-direction: column;   justify-content: center; }
水平垂直均居中①有固定宽高的元素
.parent {   position: relative; } .child {   width: 300px;   height: 100px;   padding: 20px;   position: absolute;   top: 50%;   left: 50%;   margin: -70px 0 0 -170px;/* 注意此处为height+padding+的一半*/ }
②没有固定宽高的元素(同之前没有固定宽高元素一样,用transform解决)
.parent {   position: relative; } .child {   position: absolute;   top: 50%;   left: 50%;   transform: translate(-50%, -50%); }
③使用flexbox布局
.parent {   display: flex;   justify-content: center;   align-items: center; }
以上就是总结css居中问题的解决办法的详细内容。
其它类似信息

推荐信息