四、inline-block

此类元素是inline + block的合体

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

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

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

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

a{
background: red;
font-size: 14px;
display: inline-block;
}
.overWidth{
white-space: nowrap;
width: 100px;
border: 1px solid gray;
overflow: hidden;
text-overflow: ellipsis;
}
<div class="overWidth" >
<a>a01dd</a>
<a>a000000002</a>
</div>

五、Inherit

继承父元素的display属性。

六、flex

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

Flex容器重要属性

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

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

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

.wrap02{
width: 600px;
height: 200px;
border: 1px solid red;
display: flex;
flex-flow: column wrap
}
.grid02{
flex-basis: 60px;
background: gray;
}
<div class="wrap02">
<div class="grid02">01</div>
<div class="grid02">02</div>
<div class="grid02">03</div>
<div class="grid02 grid04 ">04</div>
<div class="grid02">05</div>
</div>

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

.wrap02{
width: 600px;
height: 200px;
border: 1px solid red;
display: flex;
flex-flow: column wrap;
justify-content: space-around;
}
.grid02{
flex-basis: 60px;
background: gray;
}
<div class="wrap02">
<div class="grid02">01</div>
<div class="grid02">02</div>
<div class="grid02">03</div>
<div class="grid02 grid04 ">04</div>
<div class="grid02">05</div>
</div>

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

.wrap02{
width: 600px;
height: 200px;
border: 1px solid red;
display: flex;
flex-wrap: wrap;
align-items: center;
}
.grid02{
flex-basis: 200px;
background: gray;
}
<div class="wrap02">
<div class="grid02">01</div>
<div class="grid02">02</div>
<div class="grid02">03</div>
<div class="grid02 grid04 ">04</div>
<div class="grid02">05</div>
</div>

Flex项目的重要属性

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

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

.wrap{
width: 400px;
height: 200px;
border: 1px solid red;
display: -webkit-flex;
display: flex;
}
.grid{
background: gray;
flex:;
}
.mid{
flex:;
background: red;
}
<div class="wrap" >
<div class="grid">01</div>
<div class="mid">01</div>
<div class="grid">01</div>
</div>

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

.wrap{
width: 400px;
height: 200px;
border: 1px solid red;
display: -webkit-flex;
display: flex;
}
.grid{
background: gray;
flex-grow:;
flex-basis: 50px;
}
.mid{
flex-basis: 60px;
background: red;
}
<div class="wrap" >
<div class="grid">01</div>
<div class="mid">01</div>
<div class="grid">01</div>
</div>

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

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

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

.wrap{
width: 400px;
height: 200px;
border: 1px solid red;
display: -webkit-flex;
display: flex;
}
.grid{
background: gray;
flex-basis: 200px;
}
.mid{
flex-basis: 100px;
background: red;
}
<div class="wrap" >
<div class="grid">01</div>
<div class="mid">01</div>
<div class="grid">01</div>
</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. Java基础-服务器的发送和接收

    package hanqi.test; import java.io.IOException; import java.io.OutputStream; import java.io.PrintWri ...

  2. Python介绍

    本节内容 Python简史 Python是一门什么样的语言? Python的优点与缺点 Python解释器 一.Python简史 历史背景 在20世纪80年代,IBM和苹果已经掀起了个人电脑的浪潮.但 ...

  3. 快速搭建php环境

    WAMP:在windows系统下搭建PHP开发环境 APPSERVER: 两种可用于开发环境的,一般用WAMP LAMP构架 Linux系统 Apache服务器管理软件 Mysql数据库 php语言 ...

  4. ASP.NET MVC之下拉框绑定四种方式(十)

    前言 上两节我们讲了文件上传的问题,关于这个上传的问题还未结束,我也在花时间做做分割大文件处理以及显示进度的问题,到时完成的话再发表,为了不耽误学习MVC其他内容的计划,我们今天开始好好讲讲关于MVC ...

  5. CodeIgniter笔记-去掉index.php

    1.修改Apache 的配置文件把LoadModule rewrite_module modules/mod_rewrite.so该行前的#去掉. 2.将 AllowOverride None ,修改 ...

  6. 在ASP.NET Web API项目中使用Hangfire实现后台任务处理

    当前项目中有这样一个需求:由前端用户的一个操作,需要触发到不同设备的消息推送.由于推送这个具体功能,我们采用了第三方的服务.而这个服务调用有时候可能会有延时,为此,我们希望将消息推送与用户前端操作实现 ...

  7. 移动前端开发-单页应用(spa)模型

    一门新的技术诞生总会引来一番争议,单页Web应用程序也不例外,其最大的优势在于用户体验,对于内容的改动不需要加载整个页面:对服务器压力很小,消耗更少的带宽,与面向服务的架构更好地结合.使用HTML+C ...

  8. ViewStub的使用

    ViewStub是一个不可见的.大小为0的控件,运行时ViewStub可以滞后加载.当ViewStub置为可见或者调用inflate()的时候,布局就会加载出来.用加载进来的布局取代ViewStub在 ...

  9. 使用canvas截图或者改变灰度

    简述 html5新添加的canvas API可以让我们对画布进行开发应用,典型的是可以使用canvas截图或者 手工绘制“迷你图”(即嵌入在文本中的高清小图片). 实现截图的方法很简单,就是创建一个c ...

  10. CSS中对图片(background)的一些设置心得总结

    写网页的时候很多情况需要对图片进行操作,如何在不进行专业的美工裁切操作的情况下而让自己的素材度达到最大的满意度呢,这是一个问题,对于懒得开ps切图的我,通常会直接在网络上download一张图片,直接 ...