CSS居中

居中的分类

一,块级元素内的内联元素水平居中,text-align: center;

  • div.box里面有文字,让文字在盒子内居中
<style type="text/css">
    .box {
        border: 1px solid red;
        text-align: center;
    }
</style>
<div class="box">
    hello deejay
</div>
  • 盒子内部是按钮的情况
<style type="text/css">
    .box {
        border: 1px solid red;
        text-align: center;
    }
    
</style>
<div class="box">
    <a href="#">click me!</a>
    <a href="#">click me!</a>
</div>

二,固定宽度的块级元素水平居中,margin:0 auto

<style type="text/css">
    .box {
        border: 1px solid red;
        text-align: center;   /*让a链接也居中*/
    }
    .box2 {
        width: 500px;
        border: 1px solid green;
        margin: 0 auto;   /*固定宽度的块级元素居中*/
    }
</style>
<div class="box">
    <div class="box2">
        <a href="#">Click me!</a>
    </div>
</div>

三,盒子内部的文字垂直居中

可以设置padding,使得上下padding相等,就做到了垂直居中

<style type="text/css">
    .box{
        border: 1px solid red;
        padding: 30px 0; /*不设置高度,box里面的内容不管有多少行都是垂直居中的,只要设置上下padding相等。*/
    }
</style>
<div class="box">
    <p>hello deejay ello deejay</p>
    <p>hello deejay ello deejay</p>
    <p>hello deejay ello deejay</p>
</div>
  • 针对单行文本的垂直居中
    可以通过设置height=line-height来实现单行文本的居中

四,绝对水平垂直居中

对于没有固定的宽高的父元素要进行子元素的垂直水平居中,可以采用绝对定位,left: 50%,结合负的margin-left来进行定位。

<style type="text/css">
    *{
        margin: 0;          /*初始化样式,不然body会有默认margin等*/
        padding: 0;
    }
    body,html{             /*box要宽高都设置100%全屏的话,要将其父元素都设置成宽高100%,本例中就是body和html*/
        width: 100%;
        height: 100%;
    }
    .box{
        width: 100%;
        height: 100%;
        background: rgba(0,0,0,0.4);
        position: relative;
    }
    .box2{
        width: 500px;;
        height: 400px;
        background: green;
        position: absolute;
        left: 50%;
        margin-left: -250px;  /*自身width的一半*/
        top: 50%;
        margin-top: -200px;  /*同理,自身height的一半*/

    }
</style>
<div class="box">
    <div class="box2">
        <h1>hello,deejay</h1>
    </div>
</div>
  • 上述例子中,子元素的宽高并没有固定的情况:

可以使用CSS3的属性transform: translate(-50%,-50%);来进行居中

<style type="text/css">
    *{
        margin: 0;          /*初始化样式,不然body会有默认margin等*/
        padding: 0;
    }
    body,html{             /*box要宽高都设置100%全屏的话,要将其父元素都设置成宽高100%,本例中就是body和html*/
        width: 100%;
        height: 100%;
    }
    .box{
        width: 100%;
        height: 100%;
        background: rgba(0,0,0,0.4);
        position: relative;
    }
    .box2{
        /*width: 500px;*/
        /*height: 400px;*/
        background: green;
        position: absolute;
        transform: translate(-50%,-50%);
        left: 50%;
        /*margin-left: -250px;  !*自身width的一半*!*/
        top: 50%;
        /*margin-top: -200px;  !*同理,自身height的一半*!*/

    }
</style>
<div class="box">
    <div class="box2">
        <h1>hello,deejay</h1>
    </div>
</div>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,826评论 1 92
  • 水平居中设置-行内元素 我们在实际工作中常会遇到需要设置水平居中的场景,比如为了美观,文章的标题一般都是水平居中显...
    CAICL阅读 474评论 0 3
  • 在学习前端的过程中,发现元素和文本的水平居中和垂直居中,是经常会出现的问题,在实际工作中也会经常碰到。居中的技巧有...
    文艺范的奔三运维青年阅读 570评论 0 1
  • CSS完全可以居中任何你想居中的东西。 水平 内联元素(inline-* elements or inline)...
    无法找到此用户阅读 237评论 0 0
  • 远逝在河滩沉默的石头,头顶荒漠 梧桐树下幼小的乳儿 哀伤乳儿 风中有你流淌着雪亮的眼珠 同样是屋檐和土地,同样是人...
    红尘红尘阅读 646评论 2 5