• 两列布局


    两列布局

    两列布局是网页布局中常用的布局方式之一,根据需求确定布局方式.布局成为了面试中出现频率较高的问题.

    以下为根据需求的几种实现方式

    需求:两列布局左边定宽,右边自适应

    方法一:

    部分代码如下:

    HTML部分

    <div id="div1">1</div>
    <div id="div2">2</div>

    CSS样式

    #div1{
        width: 100px;
        height: 150px;
        background: red;
    }
    #div2{
        height: 150px;
        background: blue;
    }

    然后运行,结果如下图所示

     

    因为div是块级元素,所以红色和蓝色并没有在同一水平上,此时想到,可以让红色向左浮动.

    运行后结果如下

     

    虽然运行后我们看到红色和蓝色在同一个水平上,但通过开发者工具可以看到此时的蓝色是充满整个水平方向的,因为红色浮动脱离文档流,空间释放蓝色块挤上去了,所以此时并不是所需要的两列布局效果.解决方法可以给蓝色增加margin-left长度为红色的宽度或者适当的长度.运行结果如下

     

    方法二:

    除了float方式,还有一种为定位法,有人就想到可以给蓝色position:absolute,让它距离浏览器左边合适的宽度,代码如下:

    CSS样式部分代码

    #div1{
        width: 100px;
        height: 150px;
        background: red;
    }
    #div2{
        height: 150px;
        background: blue;
        position: absolute;
        left: 200px;
    }

    HTML部分代码

    <div id="div1"></div>
    <div id="div2"></div>

    运行结果如下:

     原因:定位后蓝色脱离文档了,它也没有宽度,所以看不见它.解决方法:给蓝色加100%top:0.代码如下

    #div2{
        height: 150px;
        width: 100%;
        background: blue;
        position: absolute;
        left: 100px;
        top: 0;
    }

    第一点,因为在不设置top值的时候,默认不是0,而是auto,所以我们应该养成习惯,即使top值不需要的时候,也把它写成0.第二点,蓝色是自适应,因为浏览器的不同我们无法加宽度,但是如果加上宽度100%,就不再是没有宽度了.运行结果如下

     

    推荐方法一和方法二,兼容性问题较少,方法三和方法四涉及到css3中的属性,有兼容性问题,不推荐.后续会详细写css3中的弹性盒模型

    方法三:

    使用flex布局

    代码如下:

    *{
        margin: 0;
        padding: 0;
    }
    #container {
        display: -webkit-box;
        display: -moz-box;
        display: -ms-box;
        display: -o-box;
        display: box;
    }
    #div1{
        width: 100px;
        height: 150px;
        background: red;
    }
    #div2{
        height: 150px;
        background: blue;
        -webkit-box-flex: 1;
        -moz-box-flex: 1;
        -ms-box-flex: 1;
        -o-box-flex: 1;
        box-flex: 1;
    }

    运行结果如下:

     

    方式四:

    通过创建BFC来实现两列布局

    代码如下:

    *{
        margin: 0;
        padding: 0;
    }
    #div1{
        width: 100px;
        height: 150px;
        background: red;
        float: left;
    }
    #div2{
        height: 150px;
        background: blue;
        overflow: hidden;
    }

    运行结果如下:

     

  • 相关阅读:
    ASP.NET Core Identity 实战(3)认证过程
    ASP.NET Core Identity 实战(2)——注册、登录、Claim
    C#代码风格指南
    看eShopOnContainers学一个EventBus
    105.电脑中共享盘保存密码之后,删掉默认保存密码的操作方法
    005.abap中宏的使用
    002.64位系统的SAP学习机
    在react/redux中使用Immutable
    ajax与HTML5 history API实现无刷新跳转
    阿里前端实习生面试总结(两轮技术面+一轮hr面)
  • 原文地址:https://www.cnblogs.com/yuqing-o605/p/6141355.html
Copyright © 2020-2023  润新知