一、水平居中方法
1.行内元素、字体的水平居中
1.对于行内元素(display值为inline或inline-block都可以)或者字体:父元素添加css规则:text-align:center;
<style> p { /*关键*/ text-align: center; } ul { /*关键*/ text-align: center; } /*这里li设置inline-block*/ .item { /*关键*/ display: inline-block; } </style> <!--字体--> <p>I am ry</p> <!--行内元素--> <ul> <li class="item">1</li> <li class="item">2</li> <li class="item">3</li> <li class="item">4</li> </ul>
2.块元素的水平居中
1.使用margin实现水平居中
将margin-left 和 margin-right 设置为auto,块元素将会自动匹配适应,实现水平居中
<style> *{ margin:0; padding:0; } .box1{ height:300px; background:blue; } .item1{ /*关键,margin-left,margin-right设置为auto*/ margin: 0 auto; 100px; height: 100px; background:red; } </style> <body> <div class="box1"> <div class="item1"></div> </div> </body>
3.如果是多个块元素在同一水平线居中排列,则将其display设置成inline-block,还有一种是使用flexbox的布局方式来实现。
块元素设置了inline-block后,拥有行内元素并排特点,只要父元素设置text-align即可使其水平居中。
<style> .box3{ /* 关键,对于行内元素水平居中 */ text-align: center; } .item3{ /* 关键,将块元素设置成行内块接元素 */ display:inline-block; 100px; height: 100px; background:red; } </style> <body> <div class="box3"> <div class="item3"></div> <div class="item3"></div> <div class="item3"></div> <div class="item3"></div> </div> </body>
注:如若去除中间的间隔空隙 需设置父类 font-size: 0;
二、垂直居中
1.行内元素或者文字(单行情况)
1.可以直接使用line-height属性来设置: 将line-height设置成和height一样即可
<style> .text{ height:100px; line-height:100px; border:1px solid red; } </style> <body> <div class="text"> we dont talk anymore </div> </body> 2.使用padding(top,bottom)通过增加内边距来实现垂直的居中 <style> .ctext{ /*关键*/ padding-top:30px; padding-bottom:30px; border:1px solid red; } </style> <body> <div class="ctext">确认过眼神,我遇上对的人</div> </body>
2.行内元素或者文字(多行情况)
1.照样可以使用padding(top 和 bottom)
2.对父元素设置display:table-cell 和 vertical-align:middle
<style> .box{ /* 将其变成单元格的形式 */ display: table-cell; /* 100px; */ height:300px; border:1px solid red; /* 设置内联元素的垂直对齐的方式 */ vertical-align: middle; } </style> <body> <div class="box"> <span>how to love</span><br> <span>I knoe I need somebody</span><br> <span>I know I need somebody</span><br> <span>pary for me</span> </div> </body>
三、水平且垂直居中
1.position 和 margin 配合
<style> *{ margin: 0 ; padding: 0 ; } .box1{ position:relative; height:400px; background:blue; } .item1{ /*关键*/ position: absolute; top: 50%; left: 50%; margin-top:-50px; margin-left:-50px; 100px; height:100px; background: red; } </style> <body> <div class="box1"> <div class="item1"></div> </div> </body>
2.使用flex布局
<style> .box2{ display: flex; /*关键*/ justify-content: center; /*关键*/ align-items: center; height:300px; background:yellow; } .item2{ 50px; height:50px; background:red; } </style> <body> <div class="box1"> <div class="item1"></div> </div> <div class="box2"> <div class="item2"></div> </div> </body>