学会这些方法,CSS居中布局那都不是事!

居中,在网页web开发的应用场景是非常广泛的,在很多时候居中的设计会更显得美观大方,同时在UI设计中也是很常用的布局手法。所以在学习css布局中,学会居中是必不可少的功课,下面我就简单的介绍在开发中经常用到的居中方法。

注: 以下方法暂不考虑IE浏览器兼容的问题。


1. 字体垂直居中

文字居中是一个常见,也很基础的应用。其方法也很简单,只要设置字体的行高line-height(自行百度)和盒子的高度一致即可。水平垂直设置text-align:center 即可。

<!-- css代码 -->
<style>
 h2 {
    height: 100px;
    border: 1px solid #cccccc;
    line-height: 100px;
    text-align: center;
   }
</style>
<!-- html结构代码 -->
<body>
    <h2>文字居中</h2>
</body>

效果图:
这里写图片描述

2. 设置margin的值为auto

如果想要一个固定宽高的盒子针对父盒子进行水平居中,可以使用margin的属性,只要设置子盒子的margin-left和margin-right的值为auto,盒子就会自动居中。

<!-- css代码 -->
<style>
  div {
     height: 100px;
     width: 300px;
     border: 1px solid #cccccc;
     line-height: 100px;
     text-align: center;
    }
  .box {
     margin: 0 auto;
   }
</style>
<!-- html结构代码 -->
<body>
  <div class="box">
       盒子居中
   </div>
</body>

效果图:
这里写图片描述
3. 使用子绝父相的方式进行居中

此时如果设计有垂直需求,使用margin: 0 auto的方式就满足不了需求了。我们可以使用绝对定位和相对定位的方式来进行居中,父盒子设置:position: relative,子盒子设置,positon: absolue, 然后设置子盒子的left: 50%, top: 50%, magin-left: (等于负的自身盒子长度的一半),margin-top: (等于负的自身盒子的高度的一半);

<!-- css代码 -->
<style>
    html,body {
      height: 100%;
     }
     .big-box {
         position: relative;
         width: 100%;
         height: 100%;
     }
    .box {
        height: 100px;
        width: 300px;
        border: 1px solid #cccccc;
        line-height: 100px;
        text-align: center;
        position: absolute;
        left: 50%;
        top: 50%;
        margin-left: -150px; /* 自身盒子宽度的一半 */
        margin-top: -50px;  /* 自身盒子高度的一半 */
    }
</style>
<!-- html结构代码 -->
<body>
    <div class="big-box">
        <div class="box">
            盒子居中
        </div>
    </div>
</body>

效果图:
这里写图片描述

4. 使用transform方法进行居中

在使用margin的方式进行居中时,需要知道盒子自身的宽高才可以设置属性,失去了代码设计的灵活性。css3新增了一个transform的属性,可以用它来代替margin的方法,在子绝父相的前提下,增加transform:translateX(-50%) translateY(-50%);这行代码即可。

<!-- css代码 -->
<style>
    html,body {
        height: 100%;
    }
    .big-box {
        position: relative;
        height: 100%;
    }
    .box {
        height: 100px;
        width: 300px;
        border: 1px solid #cccccc;
        line-height: 100px;
        text-align: center;
        position: absolute;
        left: 50%;
        top: 50%;
        transform:translateX(-50%) translateY(-50%); /* 该属性会自动计算自身的长度,需要注意的是如果设置两个tanslate属性需要连写 */
    }
</style>
<!-- html结构代码 -->
<body>
    <div class="big-box">
        <div class="box">
            transform
            盒子居中
        </div>
    </div>
</body>

效果图:
这里写图片描述

5. 使用flex布局实现居中

如果不考虑浏览器兼容的问题,使用flex布局来居中是非常方便,只需要加两行代码即可实现。在父盒子添加display: flex,用来声明flex布局,然后设置:justify-content: center, 该属性可以实现主轴水平居中;align-items: center ,该属性可以实现侧抽垂直居中。可以根据需求进行选择。

<!-- css代码 -->
<style>
    html,body {
        height: 100%;
    }
    .big-box {
        height: 100%;
        display: flex;
        justify-content: center;
        align-items: center;
    }
    .box {
        height: 100px;
        width: 300px;
        border: 1px solid #cccccc;
        line-height: 100px;
        text-align: center;
    }
</style>
</head>
<!-- html结构代码 -->
<body>
    <div class="big-box">
        <div class="box">
            flex布局
            盒子居中
        </div>
    </div>
</body>

效果图:
这里写图片描述

6. 快速定位到浏览器中心点

有时候我们想快速地将盒子定位在浏览器的中心点的位置上,如:常用的缓存动画、过渡动画,等等。此时我们可以用子绝父相结合margin的属性来进行居中。只需要在子盒子中设置如下属性即可:left: 0; right: 0;top: 0; bottom: 0; 最后设置 margin: auto;就可以了。

<!-- css代码 -->
<style>
    html,body {
        height: 100%;
    }
    .big-box {
        position: relative;
        height: 100%;
    }
    .box {
        height: 100px;
        width: 300px;
        border: 1px solid #cccccc;
        line-height: 100px;
        text-align: center;
        position: absolute;
        left: 0;
        top: 0;
        right: 0;
        bottom: 0;
        margin: auto;
    }
</style>
</head>
<!-- html结构代码 -->
<body>
    <div class="big-box">
        <div class="box">
            浏览器中心点
            盒子居中
        </div>
    </div>
</body>
</html>

效果图:
这里写图片描述

常用的css居中布局方法就先介绍到这里了,我想学会这6种方法已经满足日常开发中使用了。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值