• 第 27 章 CSS 传统布局[下]


    学习要点:

    1.定位布局

    2.box-sizing

    3.resize

    主讲教师:李炎恢

    本章主要探讨 HTML5 中 CSS 早期所使用的传统布局,很多情况下,这些布局方式还是非常有用的。

    一.定位布局

    在使用定位布局前,我们先了解一下定位属性的用法。CSS2 提供了 position 属性来实现元素的绝对定位和相对定位。

    属性

    说明

    static

    默认值,无定位。

    absolute

    绝对定位,使用 top、right、bottom、left进行位移。

    relative

    相对定位,使用 top、right、bottom、left进行位移。

    fixed

    以窗口参考定位,使用 top、right、bottom、left 进行位移。

    //绝对定位,脱离文档流,以窗口文档左上角 0,0 为起点

    header {
        position: absolute;
        top: 100px;
        left: 100px;
    }

    所谓脱离文档流的意思,就是本身这个元素在文档流是占位的。如果脱离了,就不占有文档的位置,好像浮在了空中一般,有了层次感。

    由于绝对定位脱离了文档流,出现层次概念。那么每个元素到底在那一层,会不会冲突覆盖。这时通过 z-index 属性来判定它们的层次关系。

    属性

    说明

    auto

     默认层次

    数字

     设置层次,数字越大,层次越高

    //设置在 100 层上 

    header {
        z-index: 100;
    }

    //以窗口参考定位,脱离文档流,会随着滚动条滚动而滚动 

    header {
        position: fixed;
        top: 100px;
        left: 100px;
    }

    //相对定位,不脱离文档流,占位偏移 

    header {
        position: relative;
        top: 100px;
        left: 100px;
    }

    这三种分别都在各自的情况下使用,均比较常用。但还有一种情况,就是:1.既要脱离文档流(这样元素之间不会相互冲突);2.以父元素,比如 body 或其他父元素为参考点(这样可以实现区域性绝对定位);3.还必须是绝对定位。

    //第一步,将需要设置参考点的父元素设置为相对,且不设置坐标

    body {
        position: relative;
    }

    //第二步,如果父元素设置了参考点,子元素的绝对定位将以它为基准 

    header {
        position: absolute;
        top: 0px;
        left: 0px;
    }

    1.固定布局

    //CSS 部分

    body {
        width: 960px;
        margin: 0 auto;
        position: relative;
    }
    
    header {
        width: 960px;
        height: 120px;
        position: absolute;
        top: 0;
        left: 0;
    }
    
    aside {
        width: 200px;
        height: 500px;
        position: absolute;
        top: 120px;
        left: 0;
    }
    
    section {
        width: 760px;
        height: 500px;
        position: absolute;
        top: 120px; /*left: 200px;*/
        right: 0;
    }
    
    footer {
        width: 960px;
        height: 120px;
        position: absolute;
        top: 620px;
    }

    在上面,基本都用了定位来进行固定布局。但细心的可以发现,其实只有右侧需要实行绝对定位,其他就按照普通的摆放即可。对于设计成流体布局,只要将长度设置成百分比即可。

    二.box-sizing

    在盒模型那个章节,我们了解到元素盒子如果加入了内边距 padding 和边框 border 后,它的总长度会增加。那么如果这个元素用于非常精确的布局时,我们就需要进行计算增减。这其实是比较烦人的操作,尤其是动态设置页面布局的时候。

    CSS3 提供了一个属性 box-sizing,这个属性可以定义元素盒子的解析方式,从而可以选择避免掉布局元素盒子增加内边距和边框的长度增减问题。

    属性

    说明

    content-box

    默认值,border 和 padding 设置后用于元素的总
    长度。

    border-box

    border 和 padding 设置后不用于元素的总长度。

    //设置 border-box 让 border 和 padding 不在额外增加元素大小

    aside {
        width: 200px;
        height: 500px;
        background-color: purple;
        padding: 10px;
        border: 5px solid red;
        box-sizing: border-box;
        float: left;
    }
    box-sizing 是 CSS3 推出的,各个厂商在实现时设置了私有前缀。

    Opera

    Firefox

    Chrome

    Safari

    IE

    支持需带前缀

    2 ~ 28

    4 ~ 9

    3.1 ~ 5

    8.0+

    支持不带前缀

    10.1+

    29+

    10+

    6+

    9.0+

    //完整形式

    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    -ms-box-sizing: border-box;
    box-sizing: border-box;

    三.resize

    CSS3 提供了一个 resize 属性,来更改元素尺寸大小。

    属性

    说明

    none

    默认值,不允许用户调整元素大小。

    both

    用户可以调节元素的宽度和高度。

    horizontal

    用户可以调节元素的宽度。

    vertical

    用户可以调节元素的高度。

    一般普通元素,默认值是不允许的。但如果是表单类的 textarea 元素,默认是允许的。而普通元素需要设置 overflow:auto,配合 resize 才会出现可拖拽的图形。

    //允许修改

    aside {
        resize: both;
        overflow: auto;
    }
  • 相关阅读:
    项目实践精解读后感(需求分析注意点)
    XP@Scrum
    项目实践精解读后感2(需求分析注意点)
    十一过后,反思。
    可以自动化功能测试了Selenium
    部分关键字段重复的记录(保留最后记录)
    算是代码优化吗?还可以继续优化吗?
    hql查询~
    通用权限管理设计 之 数据库结构设计(摘录)
    jQuery Liger~
  • 原文地址:https://www.cnblogs.com/zfc2201/p/5450365.html
Copyright © 2020-2023  润新知