html是按照文件流(文档流)的方式加载的,但是全部是文档流的话,很多好看的样式是实现不了的,所以出现了浮动,相对定位,绝对定位的概念。

  一、首先,按照文档流和非文档流来分类:

    ①文档流:就是按照上下左右的顺序一行一行排列的,长度不够就会自动挤到下一行。

    ②非文档流:顾名思义就是脱离文档流的,在文档流上面是不占据位置的。css有position的样式,position包括:static,relative,absolute,fixed四种值。其中static是属于文档流;relative也是属于特殊的文档流,详细下面有介绍;absolute和fixed以及float就是属于非文档流的,加载的时候,也会顺序加载,但是会脱离文档流的位置。

  二、分别介绍static,relative,absolute,fixed和float(通过top,left,right,bottom来设置相对定位)

    ①static:就是默认的文档流,不手动设置position样式的话,默认就是static;

    ②relative:叫相对定位,指的是相对他自己原来的位置的相对位置,并且原来的位置还是占着的(所以说属于特殊的文档流),其他的元素不会填上去,但是设置好相对位置之后,他新的位置是不会挤压其他元素的,就像把该元素从原来的位置上抠出来,放在单独一层来布局。

    ③absolute:叫绝对定位,指的是①相对其父元素位置的绝对定位,但是他属于非文档流,②原来的位置是不会占着的,是单独的一层,脱离了文档流。除了以上两点,其他的和relative差不多。

    ④fixed:叫固定定位,指的是元素相对于浏览器窗口的定位(比如一些网站两边的广告),拉动滚动条,他也不会跟着动,也是属于非文档流,其他的跟relative差不多。

    ⑤float:叫浮动,是css单独的样式,有top,right,bottom,left四种常用值,以上四个是属于position的一种;float也是属于文档流,单会改变文档流。他只能和文档流在同一层,但是可以改变元素的位置,同样是占着位置的(和relative有点像),不会单独一层(而relative,absolute,fixed会单独一层,可以设置z-index属性来改变其前后位置)。使用float之后,元素则会脱离文档流,该元素则在文档流上不再占用位置,文档流的元素则会填补上去,这样如果不去设置的话则会出现重叠覆盖的情况;如果想使用了float的元素也占着文档流上的位置,该如何办呢?这时候,可以把应用了float样式的元素紧接着的元素应用clear样式,clear样式包括:both,right,left三个值。both表示right和left的float都清除掉,另外两个同理。这样子则可以清除在此之前的非文档流,让他们也占着文档流上的位置,但是这只是占着位置,其实该元素是不存在于该位置的,该位置不存在任何元素(详细自己google理解),但是这样子的话,紧接着的那个元素想设置margin等,是会出现问题的,因为应用了float样式的元素霸占的那个位置其实是什么东西也没有的,不存在边界,所以应用margin则不会以那个元素(应用了float的那个)为边界的,会跳过那个边界来计算,当然你也可以把margin设大点(也就是加上float元素的长度或者宽度)也可以达到效果。其实,可以在float后面的元素之前,单独加个 <div style="clear:both"> 清楚元素来专门用于清除浮动即可,接下来的元素应用margin则可以正常起效(补充:其实一般来说,可以在样式表里面单独设置 .clear{clear:both;} 这样的样式来专门用于清除浮动,避免重复,代码会规优雅规范很多)。

    

  三、z-index作用

    可以用来处理非文档流元素的前后位置,z-index越大,元素就在越前面(同时存在文档流和非文档流的时候才有意义)。

  四、块元素和行内元素一些差别

    ①块元素才有width,height属性,而行内元素没有;

    ②每个块元素默认自动占一行,而行内默认会挤满一行才会继续下一行;

    ③行内元素在css加上“display:block”则可以使该元素变成块元素;

    ……

本文来自http://www.cnblogs.com/ismallboy/p/5256184.html

css 浮动 绝对定位 和 相对定位的更多相关文章

  1. css中绝对定位和相对定位详解

    相对定位relative和绝对定位absolute 相对定位 相对定位是标签在根据没加position样式前的位置来定位不会受父级标签的定位的影响,并且定位后不会脱离文本流,会占据原来的位置. 接下来 ...

  2. 【CSS】绝对定位和相对定位

    html:定位层 特点: >>完全脱离默认文档流,独立于立体层面的Z轴之上. >>和float浮动一样都脱离了默认文档流,但float元素与默认文档流之间会相互产生影响,而定位 ...

  3. css中绝对定位和相对定位的区别

    先说个技巧一般用:子绝父相,即相对定位是给父级的,绝对定位的时候是给子级的. 一:绝对定位 position: absolute;绝对定位:绝对定位是相对于元素最近的已定位的祖先元素(即是设置了绝对定 ...

  4. CSS的绝对定位和相对定位

    css定位标签position包括两个值:relative(相对定位)和absolute(绝对定位),position样式一般都是和top.bottom.left.right一起使用来确定一个标签的位 ...

  5. css position 绝对定位和相对定位

    position:absolute这个是绝对定位:是相对于浏览器的定位.比如:position:absolute:left:20px;top:80px; 这个容器始终位于距离浏览器左20px,距离浏览 ...

  6. div+css位置绝对定位和相对定位

    position:absolute: 当div中被隔着些元素的话那么用此方法将把元素重叠在一起,所以元素可以不在容器中加也能重叠在一起

  7. CSS定位(CSS定位概述、相对定位、绝对定位、浮动)

    CSS 定位属性 CSS 定位属性允许你对元素进行定位. 属性 描述 position 把元素放置到一个静态的.相对的.绝对的.或固定的位置中. top 定义了一个定位元素的上外边距边界与其包含块上边 ...

  8. Css的向左浮动、先右浮动、绝对定位、相对定位的简单使用

    1.div层的浮动 1)div向左浮动.向右浮动 <!doctype html> <html> <head> <meta charset="utf- ...

  9. css中的绝对定位和相对定位(详解,总结)

    css中的绝对定位和相对定位(详解,总结) 总结: 设置绝对定位或者相对定位后都从文档中浮起来了,区别是相对定位还占着原来的位置,绝对定位不占着原来的位置,可以种z-index来改变元素的浮动的堆叠次 ...

随机推荐

  1. Java基础学习补充 -- 异常处理和log4j日志

    Java中的异常处理 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. Java中所有异常的基类Throwable:Throwable又分为Error类和Excepti ...

  2. 机器学习(一) K-means聚类

    聚类算法K-means是硬聚类算法,是目标函数聚类算法的代表.K-means算法以欧式距离作为相似度测度,它是求对应某一初始聚类中心向量V最优分类,使得评价指标J最小.算法采用误差平方和准则函数作为聚 ...

  3. hadoop ha

    https://blog.csdn.net/daydayup_668819/article/details/70815335 https://www.jianshu.com/p/8a6cc2d7206 ...

  4. CentOS6.9下ssh密钥登录配置步骤(免密码登录)和ssh-keygen 命令常用参数

    密钥登录步骤(免密码登录)ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口令(密码)认证方式是我们最常用的一种,出于安全方面的考虑,介绍密钥认证方式登录到linux/unix的方 ...

  5. 发工资了T_T

    和哈比一起吃的四人餐 望京很好很和谐

  6. MySql系列之单表查询

    单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 关键字的执行 ...

  7. CMSIS-RTOS的使用

    CMSIS-RTOS实现通常作为库提供.要将RTOS功能添加到现有的基于CMSIS的应用程序,需要添加RTOS库(通常是配置文件).RTOS库的可用功能在头文件cmsis_os.h中定义,该文件特定于 ...

  8. 【Codeforces Round #420 (Div. 2) A】Okabe and Future Gadget Laboratory

    [题目链接]:http://codeforces.com/contest/821/problem/A [题意] 给你一个n*n的数组; 然后问你,是不是每个位置(x,y); 都能找到一个同一行的元素q ...

  9. setTimeOut函数传参数

    这样使用,后面的4000无效 setTimeout(removeGift(customer_id,gift_id),4000); function removeGift(customer_id,gif ...

  10. 16.C语言可变参数

    //可变参数实现多个参数求和 1 #define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <stdio.h> ...