css中float和position属性

若如初见. 提交于 2019-12-03 17:44:27

盒子的三种定位形式

在标准流下的定位
在浮动属性下的定位
在定位属性下的定位
除非设置浮动属性或定位属性,否则所有盒子都是在标准流中定位
顾名思义,标准流中元素盒子的位置由元素在HTML中的位置决定。

盒子的浮动
 在标准流中,块级元素的盒子都是上下排列,行内元素 的盒子都是左右排列
如果仅仅按照标准流的方式进行排列,就只有这几种可能性,限制太大。CSS的
指定者也想到了这样排列限制的问题,因此有给出了浮动和定位方式进行盒子的排列
从而使排版的灵活性大大提高。
 例如:有时希望相邻块级元素的盒子左右排列(所有盒子浮动)或者希望一个盒子被另一个盒子中的内容
所环绕(一个盒子浮动)做出图文混排的效果,这时最简单的办法就是运用浮动属性使盒子在浮动方式下定位。

在标准流中,一个块级元素在水平方向自动伸展,在他的父元素中占满一行;而在竖直方向和其他元素依次排列,不能并排,使用
浮动方式后,这种排列方式就会发生改变
CSS中有一个float属性,默认值为none,也就是标准流通常的情况,如果将float属性的值设为left或者right,元素就会向其父元素
的左侧或右侧靠紧,同时盒子的宽度不再伸展,而是收缩,在没设置宽度时,会根据盒子里面的内容来确定宽度。

盒子的浮动主要是排版使用,我们默认DIVtable标签做出来的内容都是2D

浮动的清除

clear是清除浮动属性,它的取值有left、right、both和none(默认值),如果设置盒子的清除属性clear值为left或right,表示该盒子
左边和右边不允许有浮动的对象。设为both,表示两边都不可以有浮动的对象,因此该盒子将会在浏览器中另起一行显示。
 

CSS position

CSS定位(positioning)属性允许你对元素进行定位
CSS为定位和浮动提供了一些属性,利用这些属性,可以建立列式布局,将布局的一部分与另一部分重叠,
还可以完成多年来通常需要使用多个表格才能完成的任务。

CSS定位机制
CSS有三种基本的定位机制:普通流、浮动和绝对定位。
除非专门指定,否则所有框都在普通流中定位。也就是说,普通流中的元素位置由元素在(X)HTML中的位置决定
块级框从上到下一个接一个地排列,框之间的垂直距离是由框的垂直外边距计算出来的。

CSS position属性
通过使用position属性,我们可以选择4种不同类型的定位,这会影响元素框生成的方式。
position属性值的含义:
static(默认值)元素框正常生成。块级元素生成一个矩形框,作为文框流的一部分,行内元素则会创建一个或多个行框,置于其父元素中。
relative元素框偏移某个距离。元素仍保持其未定位前的形状,它原本所占的空间仍保留。
absolute元素框从文档流完全删除,并相对于其包含块定位。包含快可能是文档中的另一个元素或者是初始块。元素原先在正常流中
所占的空间会关闭,就好像元素原来不存在一样。元素定位后生成一个块级框,而不论原来它的正常流中生成何种类型框。
fixed元素框的表现类似于将position设置为absolute,不过其包含块是视窗本身。(滚动条滚动时fixed的盒子一直浮动在固定位置)
position:fixed;
top:0px;
left:500px;

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>float</title>
    <style>
    #header
    {    width: 1000px;
        height: 100px;
        background-color: blue;
        margin:auto;/*自然居中*/
        text-align: center;
    }
    #container
    {    width: 1000px;
        height: 50px;
        background-color: gray;
        margin:auto;/*自然居中*/
        text-align: center;
    }
    #main
    {    width: 1000px;

        background-color: steelblue;
        margin:auto;/*自然居中*/
    }
    #nav
    {    width: 200px;
        height: 500px;
        background-color: red;
       margin: 0px 10px;/*上右下左*/
        float: left;
    }
    #content
    {    width: 500px;
        height: 500px;
        background-color: green;
        margin: 0px 10px;/*上右下左*/
        float: left;
    }
    #side
    {    width: 200px;
        height: 500px;
        background-color: blue;
        margin: 0px 10px;/*上右下左*/
        float: left;
    }
    #footer
    {    width: 1000px;
        height: 30px;
        background-color: bisque;
        margin:auto;/*自然居中*/
        clear: both;
        text-align: right;
    }


    </style>
</head>
<body>
<div id="header">顶部</div>
<div id="container">内容</div>
<div id="main">主体
    <div id="nav">左边</div>
    <div id="content">主内容</div>
    <div id="side">右边框</div>
    <div id="footer">地址:xxxxx 电话:xxxxxx</div>

</div>
</body>
</html>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!