什么是文档流

英文原文是:
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. 阿里云出手SaaS生态,中国SaaS市场小而不强有望破解

    企业服务SaaS市场还有很大的增长空间.SaaS的鼻祖Salesforces今年5月迈上了千亿美元市值的门槛,再一次为ToB市场注入了兴奋剂.单单一个SaaS CRM,目前全球的市场规模就超过400亿 ...

  2. 『StabilityGuide』| 10+位阿里技术专家共同发起稳定性知识库开源项目

    我们穿过山和大海,也见过人山人海.我们见过各类故障,也排过千雷万险.这一次,不如我们一起,开启稳定性的探索之旅.让无法解决的问题少一点点,让世界的确定性多一点点. 无论是前端业务的开发者,还是后端架构 ...

  3. 从0开始学习 GitHub 系列之「05.Git 进阶」

    关于 Git 相信大家看了之前一系列的文章已经初步会使用了, 但是关于Git还有很多知识与技巧是你不知道的,今天就来给大家介绍下一些 Git 进阶的知识. 1. 用户名和邮箱 我们知道我们进行的每一次 ...

  4. 一次web请求发生的神奇故事

    网络时代来临的时候,一个食指的点击就能解决很多问题! 那么当你的食指点击的时候,都发生了哪些神奇的事情呢?下面从几个角度为你做一个指引 1. 网络角度:一次网络请求是如何实现的 2. 浏览器角度:He ...

  5. JDBC vs Hibernate(转)

    jdbc和Hibernate区别 刚开始学习JAVA时,认为Hibernate是一个很神圣的东西,好像是会了SSH,就能走遍全世界一样.记得曾经在枫叶面试的时候,我们几个同学出还说这个公司怎么这么的落 ...

  6. 第二周<线性回归>

    可行性分析 略 sklearn.linear_model.linear_regression() 一些参数 fit_intercept 布尔型参数,表示是否计算该模型的截距 normalize 布尔型 ...

  7. iOS Status Bar变换

    http://www.cocoachina.com/ios/20160718/17020.html 背景 iOS 中经常会有需要在某个界面改变状态栏颜色或者某个界面隐藏状态栏的需求.而改变状态栏颜色和 ...

  8. python正则表达式应用 重组分词

  9. 阿里云linux服务器到期后续费,网站打不开解决方法之一

    续费后打不开网站,可能会出现不同情况,这里只记录我遇到的问题 问题描述:服务器到期后续费,网站打不开. 解决尝试: 1.重启服务器nginx    /etc/init.d/nginx restart ...

  10. 移动项目到centos中运行报错:failed to open stream: Permission denied

    这是文件夹没有读写权限的错误: (注意:TP5.0权限给runtime文件夹就行了,官方文档在安装tp5的方法中有介绍到权限问题) 在需要赋予权限的文件夹的前一级输入: chmod -R 文件夹名字