四、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. C#学习系列-文章导航

    C#学习系列-.NET体系结构 C#学习系列-类与结构的区别 C#学习系列-String与string的区别 C#学习系列-抽象方法与虚拟方法的区别 C#学习系列-out与ref的区别 C#学习系列- ...

  2. <dependency>

      <dependency>             <groupId>org.hibernate</groupId>                       ...

  3. "org.eclipse.wst.validation" has been removed 导入maven 项目出错。

    在谷歌中找到解决方案: 右键关闭项目,在打开,将项目刷新,选中项目右键----->Maven4myeclipse------->Update maven project 错误消失. 若还有 ...

  4. PHP SESSION机制,从存储到读取

    PHP中,如果要获取SESSION数据,必须要有对应的session_id,session_id的获取方式有两种 1.基于客户端的cookie 2.基于url 先说第一种情况,基于客户端的cookie ...

  5. herbnate session.createSQLQuery(sql) 和 session.createQuery(sql)使用

    public class DistributeDao implements Serializable{ private SessionFactory sessionFactory; public Se ...

  6. 【HTTP劫持和DNS劫持】实际JS对抗

    1.对于DIV注入的,可以初始化时检查全部html代码. 检测是否被劫持比较简单,但对抗就略麻烦,这个在说完第2点之后再解释. 2.对于js注入,可以在window监听DOMNodeInserted事 ...

  7. android 如何获取手机的图片、视频、音乐

    在android 开发中,很多时候,我们会需要调用到用户本机的照片.视频或者是音乐让用户选择,来进行我们APP对应的操作. button.setOnClickListener(new OnClickL ...

  8. objective-c 语法快速过(2)

    oc类的声明和定义的常见错误 1.只有类的声明,没有类的实现 2.漏了@end 3.@interface和@implementation嵌套,也就是@interface或者@implementatio ...

  9. hibernate笔记--缓存机制之 一级缓存(session缓存)

    一级缓存: 又称为session缓存,它和session生命周期相同,周期非常短.是事务级别的缓存: 还是以Book和Category这两个表为例,我们用代码观察一个缓存的存在: 假设现在我要去查询i ...

  10. java操作数据库增删改查的小工具1--TxQueryRunner

    在java程序中,一般使用jdbc连接数据库,比较麻烦,在看传智教程时学了一个工具类,用于简化与数据库之间的操作步骤,就是TxQueryRunner,他是QueryRunner的子类,用起来和他是一样 ...