什么是文档流

英文原文是:
Normal flow. In CSS 2.1, normal flow includes block formatting of block-level boxes, inline formatting of inline-level boxes, and relative positioning of block-level and inline-level boxes.

正常的布局流是将元素放置在浏览器视口内的系统:
块级元素(display:block)在视口中垂直布局——每个都将显示在上一个元素下面的新行上,并且它们的外边距将分隔开它们。
内联元素(也叫行内元素display:inline)表现不一样——它们不会出现在新行上;相反,它们互相之间以及任何相邻(或被包裹)的文本内容位于同一行上,只要在父块级元素的宽度内有空间可以这样做。如果没有空间,那么溢流的文本或元素将向下移动到新行。
通俗一点来说就是像在地铁站排队一样,正常情况,排成一队,一个一个来的就是内联元素,来一群人他们可能直接再排一队(不文明哈),那他们就是块级元素。

定位

静态(static)
这是默认的定位,没什么特别的。

相对定位(relative)
设置相对定位之后,就可以使用left right top bottom 啦。
相对定位到底是相对什么呢?
他相对的是他原本正常的位置,如果设置为left:20px意思就是相对原位置的左边,向右移动20px,如果是-20px那就向左移动。
同理,设置bottom:20px那就是相对原位置的下边,向上移动20px,如果是负数就向下移动。
一般我们要定一个元素的位置,只要两个就够了,left和right不要一起用,top和bottom不要一起用。
一起用有什么后果呢?一般是会忽略right,和bottom的。但还可能浏览器的不同,和文档流的不同,产生其他的特殊效果,暂且不提了。

绝对定位(absolute)
说他绝对啊,其实又不是绝对的,他也是一种相对。
它是以父元素为相对的对象,而且这个父元素啊,必须非static的定位,如果是static,那就找他爷爷(pis:不要找他的兄弟哈,兄弟不管事的),爷爷不行就找他祖爷爷,直到找到不是默认的static的元素,就以那个为参照了。
但是,还有人说了,真心找不到了怎么办,那最后那就是参照整个浏览器窗口了。
好啦,他的位置通过left right top bottom定好之后呢,那他后面的兄弟就看他不爽了,就挤到他的位置去了。
绝对定位的元素不再存在于正常文档布局流中。相反,它坐在它自己的层独立于一切。
这位兄弟这样抢位置是不对的,所以,absolut的元素他会在上面挡住他兄弟,不让其露脸。
可是他不光会挡住抢位置的,他还可能挡住其他的元素。所以上帝就设计了z-index来约束他。
z-index:默认是auto(IE浏览器默认为0),一般要设置在正常元素上面就设置z-index:1数字越大越在上层,也可以设置负数,数字越小越下层。
固定定位(fixed)
他是相对于整个浏览器的定位的。一般用在边上,设置成透明(opacity:0-1;)或者利用其他元素的margin来空出一定的位置。

浮动

浮动的设计目的是为了让文字环绕图片,说到文字,那就不得不说文本流了。
设置float是会脱离了文档流,他后面的元素块会占用他的位置,但是元素块中的文字却还是定位在float元素旁边,所以他没有脱离文本流。
如果一个float元素的上一个元素也是float的,那么它会紧紧的跟在后面,不留一点空隙。
文本流就像是守规矩的好孩子,虽然他的兄弟float了,但它们还是会为他留出空间。就算是他的爸爸的兄弟,他爸占位了,他也不会占位。
float的用处很多时候用来清除间隙,用在<li>,<img>等元素中。
清除float的方法
{style=“clear: both”;}/*添加一个空的div放在要清除浮动元素的最后面*/ {overflow: hidden;}/*同上*/ /*下面这个方法是bootstrap框架用的,可以兼容IE低版本*/ .clearfloat:after { content: ''; display: table; clear: both; } .clearfloat { *zoom: 1; }

flexbox


主要搞清楚几个属性
flex-direction:控制布局方向,
默认row属性横向布局,还可以column属性竖向布局。
row-reverse横向反方向,column-reverse竖向反方向。
flex-wrap:控制元素换行
默认nowrap 规定灵活的项目不拆行或不拆列。
wrap 规定灵活的项目在必要的时候拆行或拆列。
wrap-reverse 规定灵活的项目在必要的时候拆行或拆列,但是以相反的顺序。

flex-flow 属性是 flex-direction 和 flex-wrap的简写。

flex:属性是flex-grow,flex-shrink ,flex-basis的简写
flex-grow:flex-grow 属性定义弹性盒子项(flex item)的拉伸因子。(可以给元素设置不同的值来控制大小比例)
flex-shrink:属性指定了 flex 元素的收缩规则。flex 元素仅在默认宽度之和大于容器的时候才会发生收缩,其收缩的大小是依据 flex-shrink 的值。只能是正数。
flex-basis:指定了 flex 元素在主轴方向上的初始大小。如果不使用 box-sizing 来改变盒模型的话,那么这个属性就决定了 flex 元素的内容盒(content-box)的宽或者高(取决于主轴的方向)的尺寸大小。

align-items 控制 flex 项在交叉轴上的位置。

默认的值是 stretch,其会使所有 flex 项沿着交叉轴的方向拉伸以填充父容器。如果父容器在交叉轴方向上没有固定宽度(即高度),则所有 flex 项将变得与最长的 flex 项一样长(即高度保持一致)。center 值会使这些项保持其原有的高度,但是会在交叉轴居中。这就是那些按钮垂直居中的原因

justify-content 控制 flex 项在主轴上的位置。

默认值是 flex-start,这会使所有 flex 项都位于主轴的开始处。

你也可以用 flex-end 来让 flex 项到结尾处。center 在 justify-content 里也是可用的,可以让 flex 项在主轴居中。

而我们上面用到的值 space-around 是很有用的——它会使所有 flex 项沿着主轴均匀地分布,在任意一端都会留有一点空间。

还有一个值是 space-between,它和 space-around 非常相似,只是它不会在两端留下任何空间。

成长的路上,有欢乐才更有动力,加油!

浮动,定位,flex布局的更多相关文章

  1. flex布局开发

    flex布局开发 布局原理 flex时flexible Box的缩写,意为"弹性布局",用来为盒子模型提供最大的灵活性,任何一个容器都可以定位flex布局 [注意] 当我们为父盒子 ...

  2. 前端(八)—— 高级布局:文档流、浮动布局、流式布局、定位布局、flex布局、响应布局

    高级布局:文档流.浮动布局.流式布局.定位布局.flex布局.响应布局 一.文档流 1.什么是文档流 将窗体自上而下分成一行一行,块级元素从上至下.行内元素在每行中从左至右的顺序依次排放元素 2.本质 ...

  3. [Web 前端 ] 还在用浮动吗?CSS flex布局你了解多少?

    cp from : https://blog.csdn.net/wwwxuewen/article/details/80859764 传统的布局:围绕盒子模型(border.margin.paddin ...

  4. CSS定位与布局:浮动

    浮动的特点   浮动(float)属性提出的作用是实现文字的环绕效果,一个元素浮动后,会脱离普通流.主要的特点如下: 浮动的元素会向左或者向右移动直到它的外边缘接触容器框(containing blo ...

  5. HTML定位和布局----float浮动

    1.定位体系一共有三种 (1)常规流: (2)浮动定位 (3)绝对定位 2.float属性常用的语法: (1)float:left:左浮动 (2)float:right:右浮动 (3)float:no ...

  6. css3 flex 布局

    今天做一个小实战,需要让一个登录框始终保持水平和垂直居中,第一个想到的就是通过定位(要想让一个div居中,采用定位可以解决,示例), 然后开始接触flex布局,学完感觉真的好用,现把知识点记录一下,以 ...

  7. CSS实例详解:Flex布局

    本文由云+社区发表 本文将通过三个简单的实例,实际应用上篇文章的基础理论知识,展示下Flex布局是如何解决CSS布局问题. 一.垂直居中 这里同时用非flex布局和flex布局两种方式来实现,可以对比 ...

  8. 弹性布局(Flex布局)整理

    一.  弹性布局 一个好的网站都有让用户看上去很舒服的布局,一个网站的布局也会或多或少影响到它的浏览量,看完阮大神的博客,就想把弹性布局整理一下. 在平时的我们常用的布局类型有以下几种: 1.浮动+定 ...

  9. grid - 它和flex布局有何区别?

    Flexbox布局(Flexible Box)模块旨在提供一个更加有效的方式制定.调整和分布一个容器里的项目布局(基于一维),即使他们的大小是未知或者是动态的.(这里我们称为Flex). Flex布局 ...

  10. 一劳永逸的搞定 FLEX 布局(转)

    一劳永逸的搞定 flex 布局 寻根溯源话布局 一切都始于这样一个问题:怎样通过 CSS 简单而优雅的实现水平.垂直同时居中.记得刚开始学习 CSS 的时候,看到 float 属性不由得感觉眼前一亮, ...

随机推荐

  1. WordPress不同分类使用不同的文章模板

    倡萌昨天分享的 Custom Post Template 和 Single Post Template 可以让你自定义每篇文章的文章模板,今天来说说WordPress不同分类使用不同的文章模板. 方法 ...

  2. Javascript-选择器集合调用方法

    <script type="text/javascript"> function uu(namePd) { //判断id var reId = new RegExp(/ ...

  3. Codeforces 451D

    题目链接 D. Count Good Substrings time limit per test 2 seconds memory limit per test 256 megabytes inpu ...

  4. shell 向python传参数,空格引发的问题

    昨天用一个shell脚本,调用一个python脚本,并把shell脚本中用 time1=`date "+%Y-%m-%d %H:%M:%S"`生成的时间戳作为参数,传到python ...

  5. 安装 cx_Oracle

    1.下载 oracle client instant  和  sdk,  全部解压到 /opt/instantclient_11_2/ http://www.oracle.com/technetwor ...

  6. Linux安装MariaDB(Mysql)和简单配置 mariadb

    Linux安装MariaDB(Mysql)和简单配置 1.安装MariaDB 安装命令 yum -y install mariadb mariadb-server 安装完成MariaDB,首先启动Ma ...

  7. css中用一张背景图做页面的技术有什么优势?

    css中用一张背景图做页面的技术有什么优势? 简单介绍一下 CSS Sprites 的优点: 当用户往U盘中拷200张图片,会等很久.但是如果弄成一个文件,再拷贝就会快很多. CSS Sprites ...

  8. Python数据分析与展示[第二周]

    matplotlib 有各种可视化的类构成 一般调用 matplotlib.pypolt 这个命令字库 相当于快捷方式 plt.plot(a) 只有一个一维列表 x轴充当列表索引 plt.ylabel ...

  9. Gradle中的buildScript,gradle wrapper,dependencies等一些基础知识

    就想收藏一篇好文,哈哈,无他 Gradle中的buildScript代码块 - 黄博文 然后记录一些gradle的基础知识: 1.gradle wrapper就是对gradle的封装,可以理解为项目内 ...

  10. LeetCode136 Single Number, LeetCode137 Single Number II, LeetCode260 Single Number III

    136. Single Number Given an array of integers, every element appears twice except for one. Find that ...