CSS布局

作者: 小废柴JH | 来源:发表于2019-05-01 11:22 被阅读0次

    1. 两栏布局

    两栏布局的特征是侧栏固定宽度,主栏自适应宽度。

    实现方法:

    float + margin:
    <body>
      <div class="left">定宽</div>
      <div class="right">自适应</div>
    </body>
    
    .left{
      width: 200px;
      height: 200px;
      background: red;
      float: left;
      text-align: center;
      line-height: 600px;
      color: #fff;
    }
    .right{
      margin-left: 210px;
      height: 200px;
      background: black;
      text-align: center;
      line-height: 600px;
    }
    

    也可以使用绝对定位来实现两栏布局。

    2. 三栏布局

    三列布局的特征是两侧两列固定宽度,中间列自适应宽度。

    实现方法:

    float+margin
    <div id="content">
        <div class="sub">sub</div>
        <div class="extra">extra</div>
        <div class="main">main</div>
    </div>
    
    .sub{
        width: 100px;
        float: left;
    }
    .extra{
        width: 200px;
        float: right;
    }
    .main{
        margin-left: 100px; 
        margin-right: 200px;
    }
    
    position+margin
    .sub, .extra {
        position: absolute;
        top: 0; 
        width: 200px;
    }
    .sub { 
        left: 0;
    }
    .extra { 
        right: 0; 
    }
    .main { 
        margin: 0 200px;
    }
    

    3. 水平居中

    实现方式:

    (1) 行内元素:对父元素设置text-align:center;
    (2) 定宽块级元素: 设置左右margin值为auto;
    (3) 不定宽块级元素: 设置子元素为display:inline,然后在父元素上设置text-align:center;
    (4) 通用方案: flex布局,对父元素设置display:flex;justify-content:center。

    4. 垂直居中

    实现方式:

    (1) 父元素一定,子元素为单行内联文本:设置父元素的height等于行高line-height;
    (2) 父元素一定,子元素为多行内联文本:设置父元素的display:table-cell或inline-block,再设置vertical-align:middle;
    (3) 块状元素:设置子元素position:absolute 并设置top、bottom为0,父元素要设置定位为static以外的值,margin:auto;
    (4) 通用方案: flex布局,给父元素设置{display:flex; align-items:center;}。

    5. 定位

    定位的概念就是它允许你定义一个元素相对于其他正常元素的位置,它应该出现在哪里,这里的其他元素可以是父元素,另一个元素甚至是浏览器窗口本身。position六个属性值:static、relative、absolute、fixed、sticky和inherit。

    6. 盒子模型

    每个元素,都会形成一个矩形块,主要包括四部分:margin(外边距)+border(边框)+padding(内边距)+content(内容)

    css中存在两种不同的盒子模型,可以通过box-sizing设置不同的模型。两种盒子模型,主要是width的宽度不同。如图:

    这是标准盒子模型,可以看到width的长度等于content的宽度;而当将box-sizing的属性值设置成border-box时,盒子模型的width=border+padding+content的总和。

    相关文章

      网友评论

          本文标题:CSS布局

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