css布局模型

清楚了css盒模型的基本概念、盒模型类型,我们就可以深入探讨网页布局的基本模型了。
布局模型与盒模型一样都是css最基本、最核心的概念。
但布局模型是建立在盒模型基础之上,又不同于我们常说的css布局样式或css布局模板。
如果说布局模型是本,那么css布局模板就是末了,是外在的表现形式css包含3种基本的布局模型,用英文概括为:Flow、Layer和Float在网页中,元素有三种布局模型:1、流动模型(Flow)2、浮动模型(Float)3、层模型(Layer)
以下为详解

一、流动模型流动(Flow)
        是默认的网页布局模式。
        也就是说网页在默认状态下的HTML网页元素都是根据流动模型来分布网页内容的。
        流动布局模型具有两个比较经典的特征:
                1、块状元素都会在所处的包含元素内自上而下按顺序垂直分布,因为在默认状态下,块状元素的宽度都为100%。实际上,块状元素都会以行的形式占据位置。

1-(1)-块状元素

                2、在流动模型下,内联元素都会在所处的包含元素内从左到右水平分布显示。

1-(2)-内联元素

二、浮动模型
        浮动也成为漂移。
任何元素在默认情况下是不能浮动的,但可以使用css定义为浮动。
如div、p、table、img等元素都可以被定义为浮动定义为浮动元素后,所定义的元素会跟随上一个元素,此时他们还在文档流内。

2-(1)-浮动

如果上一个元素所剩余的空间不能够放下该元素,则换行存放。此处之前并没有说层模型的概念,下面会继续讲到。

三、层模型
        什么为层模型?刚开始学习HTML的时候就知道HTML为流文件,所以平时放置的标签是在流文件内,随着读取,一个一个显示出来的,而层模型就是脱离的流文件而存在的。
层模型有三种不同的定位方式分别为绝对定位、相对定位和固定定位
每一种定位方式都有自己的特点,下面咱们来详细的介绍一下:
                1、绝对定位(position:absolute)将元素设置为绝对定位,将上面的语句写入style中并设置left、right、top、bottom属性所指定的元素会相对于其最接近的一个具有定位属性的父块含块进行绝对定位。如果不存在这样的包含块,则相对于body元素,即相对于浏览器窗口如果说不设置left等属性值,只标志了position则无效

3-(1)-绝对定位
3-(2)-绝对定位

                2、相对定位(position:relative) 设置相对顶位需要设置position:relative,通过left、top、right、bottom属性确定元素在正常文档流中的偏移位置。 相对定位完成的过程是首先按static(float)方式生成一个元素(并且元素像层一样浮动起来), 然后相对于以前的位置移动,移动的方向和复读由left、right、top、bottom属性确定, 移动的方向和幅度由left、right、top、bottom属性决定,偏移前的位置保持不动(自私的相对定位)。

3-(3)-相对定位

                3、固定定位fixed:表示固定定位,与absolute定位类型类似,但它的相对移动的坐标是视图(屏幕内的网页窗体)本身。
由于视图本身是固定的,它不会随浏览器窗口的滚动条滚动而变化,除非你在屏幕中移动,除非你在屏幕中移动浏览器窗口的屏幕位置,或改变浏览器窗口的显示大小。
因此固定定位的元素会始终位于浏览器窗口内视图的某个位置,不会受文档流动影响。
这与background-attachment:fixed;属性功能相同。
以下代码可以实现相对于浏览器视图向右移动100px,向下移动50px。并且拖动滚动条时位置固定不变。
#div1{ width:200px; height:200px; border:2px red solid; position:fixed; left:100px; top:50px;}

文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本文本。


四、Relative和absolute组合使用小伙伴们学习了绝对定位的方法:使用position:absolute可以实现被设置元素相对于浏览器(body)设置定位以后,大家有没有想过可不可以相对于其它元素进行定位呢?答案是肯定的,当然可以。
使用position:relative来帮忙,但是必须遵守下面规范:
        1、参照定位的元素必须是相对定位元素的前辈元素:相对参照元素进行定位

相对参照元素进行定位

从上面代码可以看出box1是box2的父元素(父元素当然也是前辈元素了)。
        2、参照定位的元素必须加入position:relative;#box1{  width:200px;    height:200px;    position:relative;        }
        3、定位元素加入position:absolute,便可以使用top、bottom、left、right来进行偏移定位了。
#box2{    position:absolute;    top:20px;    left:30px;        }
这样box2就可以相对于父元素box1定位了
(这里注意参照物就可以不是浏览器了,而可以自由设置了)。

2018年5月28日22:42:31

你可能感兴趣的:(css布局模型)