四、inline-block

此类元素是inline + block的合体

1) margin和padding都有效;width和height都有效;

  1. .inline{
  2. display: inline-block;
  3. width: 200px;
  4. background: red;
  5. margin: 10px;
  6. padding: 10px;
  7. }
  1. <div class="inline"><a>inline01</a></div>
  2. <div class="inline"><a>inline02</a></div>
  3. <div class="inline"><a>inline03</a></div>
  4. <div class="inline"><a>inline04</a></div>

1) 还是存在8像素的间隔

2) Block/inline-block元素包裹的inline-block元素,默认超width会换行,hieght撑开,可以通过white-space:nowrap强制不换行,但不能实现文本省略显示。

  1. a{
  2. background: red;
  3. font-size: 14px;
  4. display: inline-block;
  5. }
  6. .overWidth{
  7. white-space: nowrap;
  8. width: 100px;
  9. border: 1px solid gray;
  10. overflow: hidden;
  11. text-overflow: ellipsis;
  12. }
  1. <div class="overWidth" >
  2. <a>a01dd</a>
  3. <a>a000000002</a>
  4. </div>

五、Inherit

继承父元素的display属性。

六、flex

实现盒子布局,主要分为容器和子元素相种。在容器元素上用display:flex指定为flex盒子,在子元素上用flex指定元素所占用的格子数。

Flex容器重要属性

1) Flex-direction:表示项目排列方向,可以有四个,左到右,右到左,上到下,下到上

2) Flex-wrap:表示是否允许换行,默认不允许(nowrap)

Flex-flow:是flex-direction和flex-wrap的组合写法

  1. .wrap02{
  2. width: 600px;
  3. height: 200px;
  4. border: 1px solid red;
  5. display: flex;
  6. flex-flow: column wrap
  7. }
  8. .grid02{
  9. flex-basis: 60px;
  10. background: gray;
  11. }
  1. <div class="wrap02">
  2. <div class="grid02">01</div>
  3. <div class="grid02">02</div>
  4. <div class="grid02">03</div>
  5. <div class="grid02 grid04 ">04</div>
  6. <div class="grid02">05</div>
  7. </div>

4) Justify-content:设置项目的间隔对齐方式(X轴),注意space-between(两端对齐,项目之间间隔一样,顶边);space-around(每个项目两侧的间隔相等,所以,项目之间的间隔比项目与边框的间隔大一倍)

  1. .wrap02{
  2. width: 600px;
  3. height: 200px;
  4. border: 1px solid red;
  5. display: flex;
  6. flex-flow: column wrap;
  7. justify-content: space-around;
  8. }
  9. .grid02{
  10. flex-basis: 60px;
  11. background: gray;
  12. }
  1. <div class="wrap02">
  2. <div class="grid02">01</div>
  3. <div class="grid02">02</div>
  4. <div class="grid02">03</div>
  5. <div class="grid02 grid04 ">04</div>
  6. <div class="grid02">05</div>
  7. </div>

5) Align-items:属性定义在交叉轴上的对齐方式(Y轴,垂直对齐),stretch可以拉申(默认值)

  1. .wrap02{
  2. width: 600px;
  3. height: 200px;
  4. border: 1px solid red;
  5. display: flex;
  6. flex-wrap: wrap;
  7. align-items: center;
  8. }
  9. .grid02{
  10. flex-basis: 200px;
  11. background: gray;
  12. }
  1. <div class="wrap02">
  2. <div class="grid02">01</div>
  3. <div class="grid02">02</div>
  4. <div class="grid02">03</div>
  5. <div class="grid02 grid04 ">04</div>
  6. <div class="grid02">05</div>
  7. </div>

Flex项目的重要属性

1) Align-self:项目自身的对齐方式,可以覆盖容器的align-items属性的值

2) Flex:他是flow-grow\flow-shrink\flex-basis简写,设置元素占用的格子数,如下例子格子是均分的

  1. .wrap{
  2. width: 400px;
  3. height: 200px;
  4. border: 1px solid red;
  5. display: -webkit-flex;
  6. display: flex;
  7. }
  8. .grid{
  9. background: gray;
  10. flex:;
  11. }
  12. .mid{
  13. flex:;
  14. background: red;
  15. }
  1. <div class="wrap" >
  2. <div class="grid">01</div>
  3. <div class="mid">01</div>
  4. <div class="grid">01</div>
  5. </div>

3) Flex-grow:所有子元素之和小于容器宽度时,如果处理剩余宽度,flex-grow默认为0,如果设置为正数,则表示索取剩余宽度值,公式如下:
子元素自身宽度 + 剩余宽度*(子元素自身glex-frow)/(所有子元素的flex-grow之后和)

  1. .wrap{
  2. width: 400px;
  3. height: 200px;
  4. border: 1px solid red;
  5. display: -webkit-flex;
  6. display: flex;
  7. }
  8. .grid{
  9. background: gray;
  10. flex-grow:;
  11. flex-basis: 50px;
  12. }
  13. .mid{
  14. flex-basis: 60px;
  15. background: red;
  16. }
  1. <div class="wrap" >
  2. <div class="grid">01</div>
  3. <div class="mid">01</div>
  4. <div class="grid">01</div>
  5. </div>

Grid1和grid3计算:50 + 240 * 1/2 = 170

Grid2计算:没有设置flex-grow属性,所以为固定值

4) Flex-shrink:所有子元素之和大于容器宽度时,如果处理超出宽度,flex-shrink默认为1,值越大减小的越厉害,值为0,表示不减少,公式如下:
子元素自身宽度 – 超出宽度 * ( 子元素自身宽度 * 子元素自身的flex-shrink/ ( 所有子元素宽度 * 子元素的flex-shrink之和) )

  1. .wrap{
  2. width: 400px;
  3. height: 200px;
  4. border: 1px solid red;
  5. display: -webkit-flex;
  6. display: flex;
  7. }
  8. .grid{
  9. background: gray;
  10. flex-basis: 200px;
  11. }
  12. .mid{
  13. flex-basis: 100px;
  14. background: red;
  15. }
  1. <div class="wrap" >
  2. <div class="grid">01</div>
  3. <div class="mid">01</div>
  4. <div class="grid">01</div>
  5. </div>

Grid1和grid3计算:200 – 100 * 200 / 500 = 160

Grid2计算:100 – 100 * 100 /500 = 80

注意事项:

1) Flex-grow和flex-shrink不好和flex直接混合应用,此两个值是在固定宽度的情况下进行均分的算法,如果嵌入flex属性,算法还不明确。

深入理解和应用display属性(二)的更多相关文章

  1. 深入理解和应用display属性(一)

    Display在官方定义:规定元素应该生成的框的类型.本文只重点分析常用的6个值:none.block.inline.inline-block.inherit.flex.其他table.list-it ...

  2. 理解与应用css中的display属性

    理解与应用css中的display属性 display属性是我们在前端开发中常常使用的一个属性,其中,最常见的有: none block inline inline-block inherit 下面, ...

  3. 深入理解display属性

    display 属性在网页布局中很常见,但是之前一直不了解他的各个属性的区别,只是简单的使用block.none属性,对于其他属性都不清楚,今天详细的学习和实践display属性的各个方面 定义 di ...

  4. (十二)学习CSS之display属性

    参考:http://www.w3school.com.cn/cssref/pr_class_display.asp 浏览器支持 所有主流浏览器都支持 display 属性. 注释:如果规定了 !DOC ...

  5. 面向对象的程序设计(二)理解各种方法和属性typeof、instanceof、constructor、prototype、__proto__、isPrototypeOf、hasOwnProperty

    //理解各种方法和属性typeof.instanceof.constructor.prototype.__proto__.isPrototypeOf.hasOwnProperty. //1.typeo ...

  6. 深入理解display属性——前端布局常用重要属性

    小注:display属性在网页布局中非常常见,但经常用到的仅仅是block.inline-block.inline和none等寥寥几个属性值,下面本人将详细介绍display属性的各个方面 定义 di ...

  7. 前端,基础选择器,嵌套关系.display属性,盒模型

    基础选择器 1.统配选择器 控制html,body及body内跟显示相关的标签 *{ width:80px; height:80px; background-color:red; } 2.类选择器 以 ...

  8. CSS学习笔记:display属性

    目录 一.display属性概述 1. 块级元素和行内元素的区别 2.常见的块级元素和行内元素 3. display属性常见的属性值 二.测试display取各属性值的效果 1. 测试inline和b ...

  9. Code笔记之:CSS+HTML display 属性

    display属性值:none 此元素不会被显示. block 此元素将显示为块级元素,此元素前后会带有换行符. inline 默认.此元素会被显示为内联元素,元素前后没有换行符. inline-bl ...

随机推荐

  1. PHP 静态

    类分 1 普通成员 是属于对象的 2 静态成员 是属于类的 例: class Ren { public $name; public static $zhongzu;      static   就可以 ...

  2. python安装locustio报错error: invalid command 'bdist_wheel'的解决方法

    locust--scalable user load testing tool writen in Python(是用python写的.规模化.可扩展的测试性能的工具) 安装locustio需要的环境 ...

  3. SpringMVC执行流程

    Spring mvc是一个机遇DispacterServlet的MVC框架,每一个请求都是通过DispacterServlet派发的,具体流程如下: 1.web容器加载后,用户向服务器发送请求,前端控 ...

  4. ASP.NET Core 1.1 静态文件、路由、自定义中间件、身份验证简介

    概述 之前写过一篇关于<ASP.NET Core 1.0 静态文件.路由.自定义中间件.身份验证简介>的文章,主要介绍了ASP.NET Core中StaticFile.Middleware ...

  5. OpenJDK 编译-Linux环境

    说明:笔者是在Ubuntu 16.04虚拟机中编译 OpenJDK 8 源码下载 http://download.java.net/openjdk/jdk8/ 推荐直接下载openjdk-8-src- ...

  6. TSQL Merge On子句和When not matched 语义理解

    Merge 的On子句指定Match condition,When子句指定过滤条件,如果Source Table和Targe Table匹配的上,很好理解:如果匹配不上,必须深入理解不匹配的条件,否则 ...

  7. 【转】C#语言之“string格式的日期时间字符串转为DateTime类型”的方法

    方法一:Convert.ToDateTime(string) string格式有要求,必须是yyyy-MM-dd hh:mm:ss ================================== ...

  8. 《JS设计模式笔记》 3,观察者模式

    <script type="text/javascript"> //挂插着模式又叫发布订阅模式应该是最常用的模式 //1,dom事件就是观察者模式,只要订阅了click ...

  9. 【彩票】彩票预测算法(一):离散型马尔可夫链模型C#实现

    前言:彩票是一个坑,千万不要往里面跳.任何预测彩票的方法都不可能100%,都只能说比你盲目去买要多那么一些机会而已. 已经3个月没写博客了,因为业余时间一直在研究彩票,发现还是有很多乐趣,偶尔买买,娱 ...

  10. [OpenCV] Convolutional Neural Network

    Ref: 从LeNet-5看卷积神经网络CNNs 关于这篇论文的一些博文的QAC: 1. 基本原理 MLP(Multilayer Perceptron,多层感知器)是一种前向神经网络(如下图所示),相 ...