zoukankan      html  css  js  c++  java
  • css网页布局 --- 左边固定,右边自适应

    div的布局统一如下:

    <body>
      <div class="wrap">
        <div class="left"></div>
        <div class="right"></div>
      </div>
    </body>

    css的基本设置统一如下:

        * {
          margin: 0;
        }
        html,body {
           100%;
          height: 100%;
        }

     

    第一种方式:左边的div向左浮动,右边的div的width为100%,margin-left值设置为左边div的宽度。 

        div.wrap {
           100%;
          height: 100%;
          background: #fefefe;
        }
        div.left {
          float: left;
           300px;
          height: 100%;
          background: #eafeea;
        }
        div.right {
           100%;
          height: 100%;
          margin-left: 300px;
          background: pink;
        }

    这里因为没有内容,所以height: 100%来撑开。 左边div在float之后,脱离文档流,右边元素 100%,是父元素的宽度减去子元素的padding和margin的剩下的宽度,所以刚好可以做到右边div的自适应。

     

    第二种方式: 和第一种方式的思路一样,只是这次我们可以通过将父元素设置为 position: relative; 将左边的元素设置为 position: absolute; 并且left为0。右边div不变。

        div.wrap {
           100%;
          height: 100%;
          background: #fefefe;
          position: relative;
        }
        div.left {
           300px;
          position: absolute;
          left: 0;
          height: 100%;
          background: #eafeea;
        }
        div.right {
           100%;
          height: 100%;
          margin-left: 300px;
          background: pink;
        }

    第三种方式: 使用BFC方式,即将右边的div设置overflow: hidden;这样就可以出发BFC了,而BFC的规则就是不会和浮动元素重叠,如下:

        div.wrap {
           100%;
          height: 100%;
          background: #fefefe;
        }
        div.left {
          float: left;
           300px;
          height: 100%;
          background: #eafeea;
        }
        div.right {
          height: 100%;
          overflow: hidden;
          background: pink;
        }

    注意到: 这里我们直接把右边的div添加了overflow:hidden; 然后又把 100%去掉,否则会出现问题。

    第四种方式:左边固定宽度 float,右边width设置为100%, float: right,然后margin-right: -300px即可,通过margin负边距,我们就可以达到同样的效果:

        div.wrap {
           100%;
          height: 100%;
          background: #fefefe;
        }
        div.left {
          float: left;
           300px;
          height: 100%;
          background: #eafeea;
        }
        div.right {
           100%;
          float: right;
          margin-right: -300px;
          height: 100%;
          background: pink;
        }

    记住: margin负边距影响的永远都是文档流,文档流会认为其减小了,但是实际上并没有减小。

    第五种方式: 使用flex布局。 包裹层使用flex,内部就是弹性布局了,不用设置。

        div.wrap {
          display: flex;
           100%;
          height: 100%;
          background: #fefefe;
        }
        div.left {
           300px;
          height: 100%;
          background: #eafeea;
        }
        div.right {
           100%;
          height: 100%;
          background: pink;
        }

    即左边的div仅仅设置300px,右边的div设置为width:100%即可。

     

    第六种方式: 左右两边全部使用绝对定位,左边设定宽度300px,右边100%。

        div.wrap {
          position: relative;
           100%;
          height: 100%;
          background: #fefefe;
        }
        div.left {
          position: absolute;
          left: 0;
          top: 0;
           300px;
          height: 100%;
          background: #eafeea;
        }
        div.right {
          position: absolute;
          top: 0;
          left: 300px;
           100%;
          height: 100%;
          background: pink;
        }

    这种方法也是轻松实现。 

    第七种方式: 使用table布局。 包裹元素设置为 display: table; 子元素设置为 display: table-cell; 然后再设置好左边元素的宽度,右边元素不需要设置宽度。 并且是等高布局。

        div.wrap {
          display: table;
           100%;
          height: 100%;
          background: #fefefe;
        }
        div.left {
          display: table-cell;
           300px;
          height: 100%;
          background: #eafeea;
        }
        div.right {
          display: table-cell;
          height: 100%;
          background: pink;
        }

    效果如下:

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    redis 6379端口telnet不通的解决办法
    虚拟机centOS7 关闭防火墙后ping通 telnet不通 解决办法:disable seLinux
    oracle查询表名或字段查不到
    springcloud中feign使用的抗
    java分页使用本地线程方式
    PSS下载助手(PSX Download Helper)1.7.6.1发布
    Spring Cloud系列(四):Eureka源码解析之客户端
    Spring Cloud系列(三):Eureka源码解析之服务端
    Spring Cloud系列(二):Eureka应用详解
    Spring Cloud系列(一):微服务架构简介
  • 原文地址:https://www.cnblogs.com/zhuzhenwei918/p/6104209.html
Copyright © 2011-2022 走看看