display:box;display:flex;弹性盒模型

非常适用于移动端。PC端高级浏览器,效果也很好。

display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -o-box;
display: box;
这是老版本的写法,09年之前的。这样给外面的父元素设置了这5个属性之后,这个div就是弹性盒子模型了。
里面的元素就可以自由分配空间了,在一行,而不需要浮动布局float了

而弹性伸缩盒的原理就是给父元素声明一个display:box伸缩盒属性后,就代表是把整个盒子里的块元素都变成了内联元素,然后这个父元素里面的子元素就可以自由分配空间了,而不会每个块元素各占一行,而是协商共同排在一行上面。可以这么理解。
比如下面例子
--------------html-----------------
<div class="box">
<p>123</p>
<p>123</p>
<p>123</p>
</div>
--------------css------------------
.box {
width: 330px;
height: 400px;
border: 1px #000 solid;
margin: 0 auto;
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -o-box;
display: box;
}

.box p {
width: 100px;
height: 20px;
background: #000;
margin: 5px;
}
-----------------end-------------------
这div里面的3个p标签会在一行展示,而不是上下层级分配

2011年之后出现了display:flex;
1、首先,新版本设置伸缩盒的display属性如下:
display:flex;将容器盒模型作为块级弹性伸缩盒显示(新版本)
display:inline-flex;将容器盒模型作为内联级弹性伸缩盒显示(新版本)
例如:
div{
display:flex;
}
大部分新版浏览器基本都不用使用前缀了,目前应该只有苹果浏览器需要带webkit前缀,其他都可以正常显示。
box{
display: -webkit-flex; /* Safari */
display: flex;
}
注意,设为Flex布局以后,子元素的 float 、 clear 和 vertical-align 属性将失效。

二、弹性伸缩盒的属性
1、box-orient属性
box-orient主要实现盒子内部元素的流动方向。我们看看他们的属性值如下:
A、box-orient:horizontal;伸缩项目从左到右水平排列。默认值
B、box-orient:vertical;伸缩项目从上到下垂直排列。
C、box-orient:inline-axis;伸缩项目沿着内联轴排列显示。
D、box-orient:block-axis;伸缩项目沿着块轴排列显示。
一般我们就默认就行了。
2、box-direction属性
主要是设置伸缩容器中元素的流动顺序。
属性值:
box-direction:normal;默认值,正常顺序。
box-direction:reverse;逆向排列,也就是倒着排列的意思。
3、box-pack属性
用于伸缩项目的分布方式。
它的属性值如下:
box-pack:start;伸缩项目以起始点靠齐。
box-pack:end;伸缩项目以结束点靠齐。
box-pack:center;伸缩项目以中心点靠齐。
box-pack:justify;伸缩项目平均分布,也就是两边排列的意思。-webkit-支持,-moz-不支持。
不过你如果不给父元素div添加宽度为100%的话,是显示不出效果来的,因为div添加了display:box;属性后,这个div就不是普通盒子了,而是伸缩性盒子了,随里面内容伸缩。所以我们必须给他强制添加一个宽度,这样设置了box-pack排列属性才会有效果。比如:
div{
width:100%
-webkit-box-pack:end;
}
这样才会有效果的,也就是从结尾即从右侧向左侧排列的了。如果我们设置成center就变成居中了。
4、box-align属性
用来处理伸缩容器的额外空间。
有五个属性值:
box-align:start;伸缩项目以顶部为基准,清理下部分额外空间。
box-align:end;伸缩项目以底部为基准,清理上部分额外空间。
box-align:center;伸缩项目以中部为基准,平均清理上下部额外空间;
box-align:baseline;伸缩项目以基线为基准,清理额外的空间;
box-align:stretch;伸缩项目填充整个容器,是默认值。

例如:
div{
-webkit-box-align:center;
}
就是垂直居中对齐的意思,而清理上下额外空间就是p模块容器里的内容正好填满,不显示多余的空间。

综合网络很多资源,得以总结理解,多谢下面链接作者,仅此备份,便于自己理解。

参考链接:
http://blog.tianya.cn/post-5475416-98043238-1.shtml
http://www.ql2015.cn/web/divcss/425.html/2
http://www.ql2015.cn/web/divcss/425.html/3
http://www.tuicool.com/articles/UneAJju
http://www.zhangxinxu.com/wordpress/2010/12/css-box-flex%E5%B1%9E%E6%80%A7%EF%BC%8C%E7%84%B6%E5%90%8E%E5%BC%B9%E6%80%A7%E7%9B%92%E5%AD%90%E6%A8%A1%E5%9E%8B%E7%AE%80%E4%BB%8B/

display:box;display:flex;弹性盒模型的更多相关文章

  1. Flex 弹性盒模型

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. Web的Flex弹性盒模型

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 87.CSS Flex 弹性盒模型布局教程(共用的css在48篇文章gird)

    CSS Flex 弹性盒模型布局教程 Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. flex布局就是给任何一个容器添加 dis ...

  4. 彻底搞懂flex弹性盒模型布局

    为什么要用flex 基于css3简单方便,更优雅的实现,浏览器兼容性好,传统的css实现一个div居中布局要写一堆代码,而现在几行代码就搞定了,没有理由不用flex. 兼容性: Base Browse ...

  5. box flex 弹性盒模型(转载)

    css3引入了新的盒模型——弹性盒模型,该模型决定一个盒子在其他盒子中的分布方式以及如何处理可用的空间.这与XUL(火狐使用的用户交互语言)相似,其它语言也使用相同的盒模型,如XAML .GladeX ...

  6. columns分栏与flex弹性盒模型

    columns  分栏 值:column-width:设置每列的宽度        column-count:设置列数   例:columns{200px 3}   列数和宽度固定        co ...

  7. flex弹性盒模型

    flex 意思是弹性布局,用来给盒模型提供最大的灵活度,指定容器中的项目为弹性布局,类似于float:left; 比float的好处是容器没有设置高度,会根据项目来自适应高度,我们都知道,设置floa ...

  8. Flex弹性盒模型(新老版本完整)--移动端开发整理笔记(二)

    Flex布局 Flex即Flexible Box,写法为:display:flex(旧版:display: -webkit-box) 在Webkit内核下,需要加-webkit前缀: .box{ di ...

  9. flex 弹性盒模型的一些例子;

    1.垂直居中 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  10. 彻底弄懂css3的flex弹性盒模型

    由于在日常工作中使用css或者bootstrap的栅格系统已经能很好的满足业务需求,所以一直以来对css3的弹性布局不是很感冒. 近日有幸在一篇文章中领略了flex的魅力--简洁优雅.随试之. /*容 ...

随机推荐

  1. 使用AOP实现缓存注解

    为何重造轮子 半年前写了一个注解驱动的缓存,最近提交到了github.缓存大量的被使用在应用中的多个地方,简单的使用方式就是代码先查询缓存中是否存在数据,如果不存在或者缓存过期再查询数据库,并将查询的 ...

  2. Linux上跑两个版本的php,5.4.45和5.3.24

    首先,装的实在艰难,所以容我吐槽两句: PHP好个P,两个小版本都不兼容,把这个php5.3.24放在5.4.45环境下都跑不了.对于我这种用多了向下兼容的java的人来说,简直无法想象! 网上有装俩 ...

  3. 王立平--WebView的缓存机制

    WebView的缓存能够分为页面缓存和数据缓存. 1.   页面缓存是指载入一个网页时的html.JS.CSS等页面或者资源数据. 这些缓存资源是因为浏览器的行为而产生.开发人员仅仅能通过配置HTTP ...

  4. Best time to buy and sell stocks IV

    题目 https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iv/ Say you have an array for which ...

  5. 注册Azure AD 应用程序

    作者:陈希章 发表于2017年3月22日 在此前的文章中,我给大家介绍了分别用Graph 浏览器以及第三方工具(POSTMAN)快速体验Microsoft Graph的功能,其中有一个重要的环节就是, ...

  6. django+Echarts实现数据可视化

    1.实时异步加载(从mysql读取数据) 2.scatter散点图 3.雷达图(参数选择要注意) time_1 time_2 time_3 4.面积图 我上传的源码请到github下载:https:/ ...

  7. PHP成长之路之PHP连接MySql数据库(一)

    PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点,利于学习,使用广泛,主要适用于W ...

  8. 【JS】数据类型

    其他类型转化为boolean类型规则: number:非0为true,0和NaN为false: String:非空为true,空为false: Object:任何对象都为true 任何变量赋值为nul ...

  9. 小白的Python之路 day4 装饰器高潮

    首先装饰器实现的条件: 高阶函数+嵌套函数 =>装饰器 1.首先,我们先定义一个高级函数,去装饰test1函数,得不到我们想要的操作方式 import time #定义高阶函数 def deco ...

  10. 每周.NET前沿技术文章摘要(2017-05-17)

    汇总国外.NET社区相关文章,覆盖.NET ,ASP.NET等内容: .NET .NET Framework 4.7正式发布 链接: http://www.infoq.com/cn/news/2017 ...