美文网首页
CSS 常见问题总结(1)

CSS 常见问题总结(1)

作者: 笑忘enemy | 来源:发表于2017-12-17 16:14 被阅读0次

    垂直水平居中

    垂直水平居中,在css布局中,也算是老生常谈的问题了,这里做下整理总结。具体的布局,也还是要看实际需求,所以可以按照不同的类型,分为不同的解决方式。

    固定宽高

    1.绝对定位两种方式

    • 优点: 兼容性良好
    • 缺点: 需要固定元素宽高

    第一种:

    div{
       position:absolute;
       width:100px;
       height:100px;
       left:50%;
       top:50%;
       margin-left:-50px;
       margin-top:-50px;
    } 
    

    第二种:

    div{
         position:absolute;
         width:50px;
         height:50px;
         left:0;
         top:0;
         right:0;
         bottom:0;
         margin:auto;
    } 
    

    2.transform 方式

    • 优点: transform属性兼容,不过现代浏览器支持也已经都基本支持了,需要添加前缀
    • 缺点: 需要固定元素宽高
    div{
       width:50px;
       height:50px;
       background:#f17c67;
       transform: translate3D(50%,50%,0);
    } 
    
    宽高不固定

    1.Flex布局

    • 优点: 宽高没限制,单行文本或者多行文本都可以实现垂直居中
    • 缺点: 需要考虑兼容性
       display:flex;/*Flex布局*/
       display: -webkit-flex; /* Safari */
       justify-content: center;/*设置水平居中*/
       align-items:center;/*指定垂直居中*/
    }
    

    2.Grid布局
    Grid实现垂直水平居中,有两种写法,第一种是在父元素上边设置,第二种是在子元素上设置,不需要同时设置

    • 优点: 不限制宽高,操作方便,可扩展性强,在自适应方面,可以轻松实现很多布局
    • 缺点: 兼容性不够好

    第一种方式

    .parentElement{
      display:grid;
      align-items:center;
      justify-content: center;
    }
    

    第二种方式

    .parentElement{
      display:grid;
    }
    .childElement{
       align-self:center;
       justify-self: center;
    }
    

    3.模拟Table,实现垂直居中布局

    • 优点: 不限制宽高,兼容性良好
    • 缺点: 实现复杂布局,不友好。
    .parentElement{
      display:table;
    }
    .childElement{
      display:table-cell;
      vertical-align:middle;
      text-align:center;
    }
    

    具体demo可以点击 codepen查看

    以上实现垂直水平居中的方式,和有利弊,需要针对不同需求,做相应改变。

    双栏布局

    需求:左边宽度固定,右边自适应

    浮动

    查看demo codepen

    .left{
      float:left;
      width:100px;
      background:#f17c67;
    }
    .right{
      margin-left:100px;
      background:#ddf0ed;
    }
    
    绝对定位

    查看demo codepen

    .left{
      float:left;
      width:100px;
      background:#f17c67;
    }
    .right{
      position:absolute;
      background:#ddf0ed;
      left:100px;
      right:0;
    }
    
    Grid布局

    查看demo codepen
    此方法方便快捷,扩展性好,但兼容性有点尴尬。

    .parentElement{
        display:grid;
        grid-template-columns: 100px auto;
        grid-template-rows: 200px;
    }
    

    具体知识点,有时间慢慢完善。

    相关文章

      网友评论

          本文标题:CSS 常见问题总结(1)

          本文链接:https://www.haomeiwen.com/subject/hbkewxtx.html