• CSS布局


    常用布局方法

      table

      float+margin 

      inline-block

      flexbox

    table 

      非常方便的布局方案,属于传统布局方案, 

      display   table  table-row  table-cell 跟表格布局相似

    <div class="table">
    <div class="table-row">
    <div class="left table-cell"></div>
    <div class="right table-cell"></div>
    </div>
    </div>
    <style>
        .left{
                background:red;
            }
            .right{
                background:blue;
            }
         .table{
                display: table;
                width:800px;
                height:100px;
            }
            .table-row{
                display: table-row;
            }
            .table-cell{
                vertical-align: center;
                display: table-cell;
            }
    </style>
    View Code
     
     
     
     
     
     
     

    盒子模型

      content/width/height/padding/border/margin

    display/position

      display  block/inline-block/inine

      position static/relative/absolue/fixed

        absolute/fixed 脱离文档流

          区别

            absolute是相对于上一个relative/absolute

            fixed是相对于屏幕

        z-index  层叠

    flexbox

      弹性盒子

      盒子是并列的

      可以指定宽度

    <div class="container">
      <div class="flex red">1</div>
      <div class="flex blue">2</div>
      <div class="flex red">3</div>
    </div>
    <style><!--
    .red{
      background:red;}
    .blue{
      background:blue;
    }
    .container{
      display:flex;
      height:100px;
      width:800px;
    }
    .flex{
      flex:1
    }
    </style>
    View Code
    1
    2
    3

      flexbox在低版本浏览器不兼容 但是可以在移动端使用

    foat

      元素"浮动"

      脱离文档流

      但是不脱离文本流

    <style>   
        .container{     
            background:blue;    
            width:300px;     
            margin:20px;   
        }   
        .p1{     
            background:red;     
            float:left;     
            width:100px;     
            height:50px;   
        } 
    </style> 
    <div class="container">
      <span class="p1">float </span>          
          <div class="p2">学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float</div> 
    </div>                
    View Code
    float
    学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float学习float

      看出float脱离了文档流,但是不能脱离文本流。p1不占据空间,但时把文字排挤出去了

      对自身的影响

        形成“快” BFC

          可以设置宽高

        位置尽量靠上

        位置尽量靠左(右)

    <style>
        .container{
            background:red;
            width:300px;
        }
        .p1{
            background:blue;
            float:left;
            width:150px;
            height:50px;
        }
    </style>
    <div class="container container2">
        <span>学习float</span>
        <span class="p1">
            float
        </span>
        <span class="p1">
            float
        </span>
    </div>
    View Code
    学习float float float

    可以看出float位置尽量靠上、尽量靠左(右)我们可以设置宽度过大或者宽度过小会发生什么?

      对兄弟元素的影响

        上面可能贴非float元素

        旁边贴float元素

        不影响其他块级元素位置

        但是不影响其他块级元素的文本流

      对父级元素的影响

        从布局上“消失”

        高度塌陷

    上一个代码案例可以看出父级元素高度是span的高度

      解决

        父级元素 overflow

        ::after{}伪元素

    .clear::after{
        content: "";
        display: block;
        clear: both;
        height: 0;
        visibility: hidden;
    }
    View Code
    学习float float float

    如何使用float实现两栏和三栏布局

    <style type="text/css">
      .container{
        width: 400px;
        height:50px;
      }
      .left,.right{
        height:100%;
      }
      .left{
        width: 150px;
        background: red;
        float: left;
      }
      .right{
        width: 250px;
        background: blue;
        float: right;
      }
    </style>
    <div class="container">
      <div class="left">left</div>
      <div class="right">right</div>
    </div>
    View Code
    left
    right
    <style type="text/css">
      .container{
        width: 400px;
        height:50px;
      }
      .left,.right,.middle{
        height:100%;
      }
      .left{
        width: 50px;
        background: red;
        float: left;
      }
      .middle{
        width: 100px;
        background: green;
        margin-left: 50px;
        margin-right: 250px;
      }
      .right{
        width: 250px;
        background: blue;
        float: right;
      }
    </style>
    <div class="container">
      <div class="left">left</div>
      <div class="middle">middle</div>
      <div class="right">right</div>
    </div>
    View Code
    left
    middle
    right

    我们根据代码可以看出right掉下来了,也就是说浮动的元素尽量靠上靠右,但是right绕不开middle元素

    因为float不影响其他元素的位置,此刻middle元素是块级元素

    解决

      设置middle为inline-block

      还有middle和right位置对换可以解决

    inline-block

      像文本一样排block元素

      没用清除浮动等问题

      但是需要处理间隙

    <style type="text/css">
      .container{
        width: 400px;
        height:50px;
      }
      .left,.right{
        height:100%;
      }
      .left{
        width: 150px;
        background: red;
        display: inline-block;
      }
      .right{
        width: 250px;
        background: blue;
        display: inline-block;
      }
    </style>
    <div class="container">
      <div class="left">left</div>
      <div class="right">right</div>
    </div>
    View Code
    left
    right

    我们看出left和right不在一起,我们修改right宽度设置为240px

    left
    right

    我们发现left和right之间有空隙

    造成这个间隙是left和right之间的空白

    解决

      left和right元素在html同一行

      left和right之间的空白使用注释

      container 设置font-size:0 

    响应式布局和设计

      在不同设备上正常使用

      主要处理屏幕大小问题

      主要方法: 隐藏+折行+自适应空间

      rem/viewport/media query

  • 相关阅读:
    git常用命令
    thinkjs框架发布上线PM2管理,静态资源访问配置
    登陆服务器提示“You need to run "nvm install N/A" to install it before using it.”
    CentOS 7.x 用shell增加、删除端口
    CentOS 7.X 安全手记
    Centos 7.x nginx隐藏版本号
    centos7磁盘挂载及取消
    CentOS 7.4上网速度慢,修改DNS!
    Centos7.4 安装Docker
    Nodejs 使用log4js日志
  • 原文地址:https://www.cnblogs.com/sonwrain/p/10497747.html
Copyright © 2020-2023  润新知