Blogger Information
Blog 17
fans 0
comment 0
visits 12136
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
元素定位与浮动布局0904
ShunPro的博客
Original
576 people have browsed it

学习体会:

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;
    }

    运行实例 »

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



Correction status:qualified

Teacher's comments:用户自定义页面元素排列 , 第一步必须获取该元素的控制权, 而浮动和绝对定位可以让元素离开标准流
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post