CSS布局

作者: 饥人谷_二丫 | 来源:发表于2018-04-04 21:14 被阅读0次

    CSS入门(3)

    CSS的常见布局

    CSS常见布局使用display属性(文档流)+position属性(定位)+float属性(浮动)。

    • inline-block
      display:inline-block属性既可以像行级元素一样水平分布,也可以像块级元素一样设置宽高,如果空间够就可以实现左右布局。
    • float(应用较广)
      给要并排的子元素加上style=float:left(或right),他们的父元素添加class:clearfix,即可脱离文档流,实现排排坐。clearfix的css为:
    .clearfix::after {
     content=" ";
     display:block;
     clear:both;
    }
    
    • flex(不能兼容ie)
      flex是一种新的布局方式
      a. flex布局与方向无关
      b. 可实现空间的自动分配、自动对齐
      c. 用于简单的线性布局,复杂的可用grid布局(后面再学)
    1. 左右布局
    • float百分比布局
        <div class="content clearfix">
          <div class="left">左边</div>
          <div class="right">右边</div>
        </div>
    
      .clearfix::after {
        content:' ';
        display:block;
        clear:both;
      }
      .left {
        float:left;
        height:200px;
        width:2%;
        background: red;
      }
      .right {
        float:left;
        height:200px;
        width:8%;
        background: blue;
      }
    

    注:用于布局的div中不要添加其他margin、padding等,需要的话在里面再加元素。

    • flex布局
        .content {
          display:flex;
        }
        .left {
          float:left;
          height:200px;
          width:100px;
          background: red;
        }
        .right {
          float:left;
          height:200px;
          background: blue;
          flex-grow:1;
        }
    
    1. 左中右布局
    • 圣杯布局
    <div class="content">
      <div class="middle">中间</div>
      <div class="left">左边</div>
      <div class="right">右边</div>
    </div>
    
      .content {
        margin-left: 120px;
        margin-right: 170px;
      }
      .middle {
        height:200px;
        width:100%;
        background:yellow;
        float:left;
      }
      .left {
        height:200px;
        width:100px;
        background:red;
        float:left;
        margin-left:-100%;
        position:relative;
        left:-120px;
    
      }
      .right {
        height:200px;
        width:150px;
        background:blue;
        float:left;
        margin-left:-150px;
        position:relative;
        right:-170px;
      }
    
    • flex布局
        .content {
          display:flex;
        }
        .middle {
          height:200px;
          background:yellow;
          flex-grow:1;
          margin:0 10px;
        }
        .left {
          height:200px;
          width:100px;
          background:red;
          
        }
        .right {
          height:200px;
          width:150px;
          background:blue;
        }
    
    1. 水平居中:
    • div的左右margin为auto
    • 内联元素的父元素加上text-align:center;
    1. 垂直居中:单行元素line-height跟height相等就垂直居中
      line-height+padding
    2. flex的完美居中
    display:flex;
    justify-content:center;
    align-items:center;
    
    1. 小Tips
    • 如果是ie6加上.clearfix{zomm:1;}。
    • 儿子的宽度建议使用百分比,比较有弹性,不要写死宽度,width:calc(25%-8px)。
    • 做平均布局时,空间不够可以加一个空的div,左右margin为负数。
    • class尽量不要用ad,会被屏蔽掉。
    1. 在作业过程中用到的一些效果元素

    示例1

    • 鼠标移上去0.2秒过渡出现阴影效果
    div {
     transition:box-shadow 0.2s;
    }
    div:hover {
     box-shadow:0px 4px 17px 0px rgba(100, 100, 100, 0.3);
    }
    

    注:阴影的样式可以在box-shadow generator中设置、预览后再复制过来。

    示例2

    • 鼠标移上去变小手 cursor:pionter;

    示例3

    • 列表奇数左浮,偶数右浮,形成有间隙的两列
    /*父元素ol已经设置class="clerarfix"*/
    .skills ol li {
     float: left;
     width: 48%;
    }
    .skills ol li:nth-child(even) {
     float: right;
    }
    

    示例4

    • 让padding,margin,border都包含在width里,可使用box-sizing:border-box; 。

    相关文章

      网友评论

          本文标题:CSS布局

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