普通元素垂直水平居中原理、单行多行文字垂直水平居中

一、普通元素三种垂直水平居中

如图:

image.png
<div class="main"> //html结构
    <div class="content"></div>
</div>
.main{   //main的样式
     width: 100px;
     height: 100px;
     background-color: #ff7f50;
     display: flex;
     align-items: center;
     justify-content: center;
}
  1. absolute小技巧</b>
.content1{
    width: 100px;
    height: 100px;
    background-color: #20b2aa;
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    margin: auto;
}

原理:利用绝对定位元素的盒模型特性,在偏移属性为确定值的基础上,设置margin:auto。

  1. translate()函数
.content2{
    width: 100px;
    height: 100px;
    background-color: #20b2aa;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%,-50%);
}

原理:利用绝对定位元素的偏移属性和translate()函数的自身偏移达到水平垂直居中的效果[注意]IE9-浏览器不支持。

  1. 使用flex
.main{
    width: 100px;
    height: 100px;
    background-color: #ff7f50;
    display: flex;
    align-items: center;
    justify-content: center;
}

原理:在伸缩容器上使用主轴对齐justify-content和侧轴对齐align-items。

二、文字居中垂直水平居中
image.png
<div class="middle-box"> //html结构
    <div class="middle-inner">
        <p>good good study,</p>
        <p>day day up!</p>
    </div>
</div>
  • 1 单行文字垂直居中

    text-align: center;
    line-height = height;
    
  • 2 多行文字垂直水平居中

    1. 第一种display:table的方法

      .middle-box {
          display: table;
          height: 200px;
          width: 200px;
          background-color: #20B2AA;
      }
      
      .middle-inner {
         display: table-cell;
         vertical-align: middle;
         text-align: center;
      }
      缺点就是不兼容ie6、ie7.怎么兼容呢?
      两者写法:
       1、条件语句写法
       <!--[if lt IE 8]>
       <style>
          .middle-inner { position: absolute; top:50%;}
          .middle-inner p {position: relative; top: -50%}
       </style>
       <![endif]-->
       2、ie hack写法
       .middle-box {
           display: table;
           height: 300px;
           border: 1px solid #ff0000;
           width: 400px;
           margin: 0 auto;
           position: relative;
       }
      
       .middle-inner {
           display: table-cell;
           vertical-align: middle;
           *position: absolute;
           *top: 50%;
           *left: 50%;
           width: 100%;
           text-align: center;
       }
      
       .middle-inner p {
           position: relative;
           *top: -50%;
           *left: -50%;
       }
      
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 收听音频,戳链接,旧号itclan已暂停使用,欢迎关注微信itclanCoder公众号可收听更多音频 前言 关于网...
    itclanCoder阅读 12,534评论 3 30
  • 1.绝对定位居中技术 我们一直用margin:auto实现水平居中,而一直认为margin:auto不能实现垂直居...
    DecadeHeart阅读 5,503评论 0 3
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,687评论 1 92
  • 有人说,20岁是一个女子最美好的年华,如一朵娇艳欲滴、微微绽放的玫瑰,诱人采撷;有人说,30岁才是一个女子最美好的...
    松青月冷阅读 1,648评论 0 0
  • 心,在无尽的等待与期盼中,慢慢冷却……
    一海悠蓝阅读 2,900评论 0 0

友情链接更多精彩内容