浮动,定位,flex布局
什么是文档流
英文原文是:
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布局的更多相关文章
- flex布局开发
		flex布局开发 布局原理 flex时flexible Box的缩写,意为"弹性布局",用来为盒子模型提供最大的灵活性,任何一个容器都可以定位flex布局 [注意] 当我们为父盒子 ... 
- 前端(八)—— 高级布局:文档流、浮动布局、流式布局、定位布局、flex布局、响应布局
		高级布局:文档流.浮动布局.流式布局.定位布局.flex布局.响应布局 一.文档流 1.什么是文档流 将窗体自上而下分成一行一行,块级元素从上至下.行内元素在每行中从左至右的顺序依次排放元素 2.本质 ... 
- [Web 前端  ]    还在用浮动吗?CSS flex布局你了解多少?
		cp from : https://blog.csdn.net/wwwxuewen/article/details/80859764 传统的布局:围绕盒子模型(border.margin.paddin ... 
- CSS定位与布局:浮动
		浮动的特点 浮动(float)属性提出的作用是实现文字的环绕效果,一个元素浮动后,会脱离普通流.主要的特点如下: 浮动的元素会向左或者向右移动直到它的外边缘接触容器框(containing blo ... 
- HTML定位和布局----float浮动
		1.定位体系一共有三种 (1)常规流: (2)浮动定位 (3)绝对定位 2.float属性常用的语法: (1)float:left:左浮动 (2)float:right:右浮动 (3)float:no ... 
- css3 flex 布局
		今天做一个小实战,需要让一个登录框始终保持水平和垂直居中,第一个想到的就是通过定位(要想让一个div居中,采用定位可以解决,示例), 然后开始接触flex布局,学完感觉真的好用,现把知识点记录一下,以 ... 
- CSS实例详解:Flex布局
		本文由云+社区发表 本文将通过三个简单的实例,实际应用上篇文章的基础理论知识,展示下Flex布局是如何解决CSS布局问题. 一.垂直居中 这里同时用非flex布局和flex布局两种方式来实现,可以对比 ... 
- 弹性布局(Flex布局)整理
		一. 弹性布局 一个好的网站都有让用户看上去很舒服的布局,一个网站的布局也会或多或少影响到它的浏览量,看完阮大神的博客,就想把弹性布局整理一下. 在平时的我们常用的布局类型有以下几种: 1.浮动+定 ... 
- grid - 它和flex布局有何区别?
		Flexbox布局(Flexible Box)模块旨在提供一个更加有效的方式制定.调整和分布一个容器里的项目布局(基于一维),即使他们的大小是未知或者是动态的.(这里我们称为Flex). Flex布局 ... 
- 一劳永逸的搞定 FLEX 布局(转)
		一劳永逸的搞定 flex 布局 寻根溯源话布局 一切都始于这样一个问题:怎样通过 CSS 简单而优雅的实现水平.垂直同时居中.记得刚开始学习 CSS 的时候,看到 float 属性不由得感觉眼前一亮, ... 
随机推荐
- WordPress不同分类使用不同的文章模板
			倡萌昨天分享的 Custom Post Template 和 Single Post Template 可以让你自定义每篇文章的文章模板,今天来说说WordPress不同分类使用不同的文章模板. 方法 ... 
- Javascript-选择器集合调用方法
			<script type="text/javascript"> function uu(namePd) { //判断id var reId = new RegExp(/ ... 
- Codeforces 451D
			题目链接 D. Count Good Substrings time limit per test 2 seconds memory limit per test 256 megabytes inpu ... 
- shell 向python传参数,空格引发的问题
			昨天用一个shell脚本,调用一个python脚本,并把shell脚本中用 time1=`date "+%Y-%m-%d %H:%M:%S"`生成的时间戳作为参数,传到python ... 
- 安装 cx_Oracle
			1.下载 oracle client instant 和 sdk, 全部解压到 /opt/instantclient_11_2/ http://www.oracle.com/technetwor ... 
- Linux安装MariaDB(Mysql)和简单配置 mariadb
			Linux安装MariaDB(Mysql)和简单配置 1.安装MariaDB 安装命令 yum -y install mariadb mariadb-server 安装完成MariaDB,首先启动Ma ... 
- css中用一张背景图做页面的技术有什么优势?
			css中用一张背景图做页面的技术有什么优势? 简单介绍一下 CSS Sprites 的优点: 当用户往U盘中拷200张图片,会等很久.但是如果弄成一个文件,再拷贝就会快很多. CSS Sprites ... 
- Python数据分析与展示[第二周]
			matplotlib 有各种可视化的类构成 一般调用 matplotlib.pypolt 这个命令字库 相当于快捷方式 plt.plot(a) 只有一个一维列表 x轴充当列表索引 plt.ylabel ... 
- Gradle中的buildScript,gradle wrapper,dependencies等一些基础知识
			就想收藏一篇好文,哈哈,无他 Gradle中的buildScript代码块 - 黄博文 然后记录一些gradle的基础知识: 1.gradle wrapper就是对gradle的封装,可以理解为项目内 ... 
- 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 ... 
