css综合(重点:垂直居中)


编码规范


垂直居中的实现方法

  • 文字上下padding相同时,则文字垂直居中
    和line-Height使用更佳

          p {
             text-align: center;
             padding: 30px 0px;
           } 
    

    效果预览

  • 绝对居中:利用position:absolute

        .parent {
              height :500px;
              background-color: rgb(223,225,180);
              position: relative;
          }
    
    • 有固定高度时,利用margin来进偏移

       .child {
            border:1px solid red;
            width:200px;
            height:100px;/*必须定高度*/
            position: absolute;
            margin-top:-50px;/*宽度的一半*/
            margin-left:-100px;/*高度的一半*/
            left: 50%;
            top: 50%;
         }
      

    效果预览

    • 没有固定宽高,利用transform:translate(-50%,-50%)进行偏移,ps:要注意它的兼容性

          .child {
               border:1px solid red;
               position: absolute;
               left: 50%;
               top: 50%;
               transform:translate(-50%,-50%);
         }
      

      效果预览

  • vertical-align:middle实现居中
    作用在行列元素和表格上
    原理:利用行列元素的对齐方式,而其中最高部分刚好等于边框高度,以此实现垂直居中

    • html

         <!DOCTYPE html>
         <html>
         <head>
         <meta charset="utf-8">
         <title>JS Bin</title>
         </head>
         <body>
         <div class="parent">
             <span class="befor"></span><div class="child">
           饥人谷饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷 饥人谷  
             </div><span class="after"></span>
         </div>
         </body>
         </html>
      

    可以把span.befor,child,span.after这三部分看作是三个文字

    • css

        .parent {
              border: 2px solid red;
              height:600px;
              text-align:center;
        }
        .child {
              border: 1px solid #000;
              width:300px;
              display: inline-block;
              vertical-align:middle;
        }
        span.befor {
              / *outline: 2px solid yellow;*/
              height:100%;
              display:inline-block;
              vertical-align:middle;
        }
        span.after{
              /*outline: 2px solid yellow;*/
              height:100%;
              display:inline-block;
              vertical-align:middle;
        }
      

(1)再没有加vertical-align:middle时,是以底部为基准对齐了


(2)在所有子元素中加了vertical-align:middle时,以span中线为基准,对齐了

(3)最后,把span的边框去掉,就能实现
效果预览


实现以下效果

效果预览

  • html
 <!DOCTYPE html>
 <html>
 <head>
 <meta charset="utf-8">
 <title>JS Bin</title>
 </head>
 <body>
    <div class="box">
        <div class="tr1"></div>
        <div class="con"></div>
    </div>
    <div class="box">
        <div class="tr2"></div>
        <div class="con"></div>
    </div>
    <div class="box">
        <div class="tr3"></div>
        <div class="con"></div>
    </div>  
</body>
</html>
  • css
 .box {
    margin-bottom:50px;
    position: relative;
    margin-top:20px;
}
.con {
    width:200px;
    height:100px;
    border:1px solid #ccc;
    margin-top:10px;
}
.tr1 {
    position:absolute;
    top:-10px;
    left:10px;
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    border-bottom: 10px solid #ccc;
}
.tr2 {
    position: absolute;
    top:0px;
    left:182px;
    border-top: 10px solid red;
    border-right: 10px solid red;
    border-left: 10px solid transparent;
    border-bottom: 10px solid transparent;  
}
.tr3 {
    position:absolute;
    top:-9px;
    left:10px;
    border-left:10px solid transparent;
    border-right:10px solid transparent;
    border-bottom:10px solid #ccc; 
}
.tr3:after {
    content:'';
    position:absolute;
    top:1px;
    left:-10px;
    border-left:10px solid transparent;
    border-right:10px solid transparent;
    border-bottom:10px solid #fff;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容