博客列表 >元素定位与浮动布局0904

元素定位与浮动布局0904

ShunPro的博客
ShunPro的博客原创
2019年09月05日 18:14:42570浏览

学习体会:

1. 浮动 float

        元素的浮动会对文档流后面的元素带来影响;当一个元素浮动后,这个一个元素就像飘起来了一样,后面的一个元素会跑到此元素的下面了;后面元素不想受前面元素影响就需要相应的清除这些浮动影响(clear : left / clear : right /clear : both)

         子元素浮动后,它的上一级父元素(不设高度值时)就像里面没了东西一样会收缩起来。想要变回原来的样子:

  • 调整父元素的高度值,如果一级级的浮动,需一级级的调整(不合适)

  • 将父元素也浮动起来,和上面一样,也需一级级调整(不合适)

  • 在子元素后面添加一个元素,设置清除浮动clear:both,但不利于后端数据处理与页面渲染(不合适)

  • 在父元素上设置 overflow : hidden 解决问题,so easy !!! 强列推荐!!!

2. 相对定位 position : relative

         元素仍在文档流中,只是相对于自己原来的位置进行相对的偏移,通过 left 与 top 的值进行移动

          正数值: 代表在左侧 (left)留出数值的空间,元素将右移;

                         代表在顶部(top)留出数值的空间,元素将下移;

           负数值:与上面的正数值相反,元素将向左移和向上移;

3. 绝对定位 postion: absolute

        元素将脱离文档流,以相对离它最近的且具有定位属性(什么属性无所谓,但要有)的父级元素进行定位。

        子元素采用绝对定位模式,就是以父级元素为做标原点,横轴为left(正值往右),纵轴为top(正值向下),给出子元素的做标(left, top)进行定位。

2.png


4. 三列布局

        设一个容器,将头部(header)区域--主体(main)区--底部(footer)区包起来

         三列的设计:main区划分为三列:left,content,right

4.1 绝对定位实现方法

  • 设置left与right的列宽和最小高度,content设置最小高度与left ,right相同

  • 父元素main设置定位属性position : relative | absolute都可以

  • left元素设置为absolute定位,坐标(left : 0,top : 0)将left元素放在左侧

  • right元素设置为absolute定位,坐标(right : 0,top : 0)将right元素放在右侧

  • left,right元素采用绝对定位后脱离文档流,content元素将向上移动与left,right元素在同一高度, 通过使用content元素的margin属性将内容区content挤出来,margin-left的值应大于left元素的列宽,margin-right的值应大于right元素的列宽。       


  • 实例

    .container{
        width: 1000px;
        margin: 0 auto;
    }
    /*群组选择器,头部和底部共用样式*/
    .header, .footer{
        height: 60px;
        background-color: lightgray;
    }
    /*主体区*/
    .main{
        /*min-height: 800px;*/
        background-color: lightblue;
        margin: 5px auto;
    }
    /*主体左侧区*/
    .left{
        width: 200px;
        /*设置最小高度,可以确保在没有内容的情况下,仍能显示出高度来*/
        min-height: 800px;
        background-color: lightseagreen;
    }
    /*主体内容区*/
    .content{
        /*内容区宽度自适应*/
        min-height: 800px;
        background-color: lightyellow;
    }
    /*主体右侧区*/
    .right{
        width: 200px;
        min-height: 800px;
        background-color: lightsalmon;
    }
    /*绝对定位*/
    /*定位父级,相对定位*/
    .main{
        /*给父级定位属性(相对定位或绝对定位都可以)*/
        position: relative;
    }
    /*参照父级绝对定位左侧区块*/
    .left{
        position: absolute;
        left: 0;
        top: 0;
    }
    /*参照父级绝对定位右侧区*/
    .right{
        position: absolute;
        right: 0;
        top: 0;
    }
    /*使用margin挤出内容区*/
    .content{
        /*将左侧区的宽度(200px+10px空白)留出*/
        margin-left: 210px;
        /*将右侧区的宽度(200px+10px空白)留出*/
        margin-right: 210px;
    }

    运行实例 »

    点击 "运行实例" 按钮查看在线实例

4.2 通过元素浮动实现

  • 将left元素向左浮动

  • 将right元素向右浮动

  • 将content元素向左浮动,并计算宽度值为不大于"容器container宽度(总宽度)- left宽度 - right宽度"

  • 最后需将父元素main设置overflow : hidden属性


  • 实例

    .container{
        width: 1000px;
        margin: 0 auto;
    }
    /*头部与底部共用样式*/
    .header, .footer{
        height: 60px;
        background-color: lightgray;
    }
    
    /*主体*/
    .main{
        /*min-height: 800px;*/
        background-color: lightgray;
        margin: 5px auto;
        overflow: hidden;
    }
    
    /*主体左侧区*/
    .left{
        width: 200px;
        /*设置最小高度,可以确保在没有内容的情况下,仍能显示出高度来*/
        min-height: 800px;
        background-color: lightseagreen;
    }
    /*主体内容区*/
    .content{
        /*内容区宽度自适应*/
        min-height: 800px;
        background-color: lightyellow;
    }
    /*主体右侧区*/
    .right{
        width: 200px;
        min-height: 800px;
        background-color: lightcoral;
    }
    
    /*方案2:浮动*/
    /*子元素浮动后脱离了水平文档流,
    父元素无法包裹住子元素,需设置父元素的overflow:hidden属性*/
    .left {
        float: left;
        /*通过margin-right在左侧区与内容区之间留出间隔*/
        margin-right: 10px;
    }
    .right {
        float: right;
    }
    .content {
        float: left;
        /*调整内容区宽度到适合值*/
        width: 580px;
        /*通过margin-right在内容区与右侧区之间留出间隔*/
        margin-right: 10px;
    }

    运行实例 »

    点击 "运行实例" 按钮查看在线实例



声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议