多种方法实现水平居中和垂直居中总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a18716374124/article/details/79428465

水平居中和垂直居中在编写HTML5静态页面过程中经常遇到,现在就来总结一下对于不同的元素如何实现居中。

一、水平居中:
1、对于行内元素,在父级块级元素css属性中使用 text-align:center即可。
2、对于width固定的块级元素,使用margin:20px auto; /* margin-left 与 margin-right 设置为 auto */
3、对于width不固定的块级元素,有三种常用方法:
(1) 使用table标签,为什么选择方法一加入table标签? 是利用table标签的长度自适应性—即不定义其长度也不默认父元素body的长度(table其长度根据其内文本长度决定),因此可以看做一个定宽度块元素,然后再利用定宽度块状居中的margin的方法,使其水平居中。
下面看实现步骤:
第一步:为需要设置的居中的元素外面加入一个 table 标签 ( 包括 、、 )。
第二步:为这个 table 设置“左右 margin 居中”(这个和定宽块状元素的方法一样)。
第三步:把需要水平居中的元素放到table标签中的td标签中。

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>不定宽块状元素水平居中</title>
<style>
table{
    margin:20px auto;
}

/*下面是任务区代码*/
.wrap{
    background:#ccc;
}
</style>
</head>
<body>
<table><tbody>
    <tr><td>
    <p>设置我所在的div容器水平居中 </p> 
    </td></tr>
    </tbody>
</table>
</body>
</html>

(2) 改变块级元素的 display 为 inline 类型(设置为 行内元素 显示),然后使用 text-align:center 来实现居中效果

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>不定宽块状元素水平居中</title>
<style>
.container{text-align:center;}
.container div{margin:0;padding:0;display:inline;}
</style>
</head>

<body>
<div class="container">
    <div>
        <span><a href="#">1</a></span>
        <span><a href="#">2</a></span>
        <span><a href="#">3</a></span>
    </div>
</div>
</body>
</html>

(3) 通过给父元素设置 float,然后给父元素设置 position:relative 和 left:50%,子元素设置 position:relative 和 left: -50% 来实现水平居中。

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>不定宽块状元素水平居中</title>
<style>
.container{
    float:left;
    position:relative;
    left:50%;
}
.container ul{
/*  margin:0;
    padding:0;*/
    position:relative;
    left:-50%;
}
.container li{display:inline;}
</style>
</head>
<body>
<div class="container">
    <ul>
        <li><a href="#">11111111111</a></li>
        <li><a href="#">22222222222</a></li>
        <li><a href="#">33333333333</a></li>
    </ul>
</div>
</body>
</html>

二、垂直居中:
1、父元素高度确定的单行文本 的竖直居中的方法是通过设置父元素的 height 和 line-height 高度一致来实现的。

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>垂直居中</title>
<style>
.wrap{
    display:inline;
    text-align:center;
}
.wrap h2{
    height:100px;
    line-height:100px;
    background:#ccc;
}
</style>
</head>
<body>
<!--下面是代码任务部分-->
<div class="wrap">
    <h2>hi,imooc!</h2>
</div>
</body>
</html>

2、父元素高度确定的多行文本:
使用插入 table (包括tbody、tr、td)标签,可以把要垂直居中的div放到table的td中。

<!DOCTYPE HTML>
<html>
<head>
<meta  charset="utf-8">
<title>父元素高度确定的多行文本</title>
<style>
  table{margin:20px auto;}
</style>
</head>
<body>
<table><tbody>
<tr><td>
    <div>
    <p>看我是否可以居中。</p>
    <p>看我是否可以居中。</p>
    <p>看我是否可以居中。</p>
    <p>看我是否可以居中。</p>
    <p>看我是否可以居中。</p>
</div>
</td></tr>
</tbody></table>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/a18716374124/article/details/79428465