深入理解和应用display属性(二)
四、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属性(二)的更多相关文章
- 深入理解和应用display属性(一)
Display在官方定义:规定元素应该生成的框的类型.本文只重点分析常用的6个值:none.block.inline.inline-block.inherit.flex.其他table.list-it ...
- 理解与应用css中的display属性
理解与应用css中的display属性 display属性是我们在前端开发中常常使用的一个属性,其中,最常见的有: none block inline inline-block inherit 下面, ...
- 深入理解display属性
display 属性在网页布局中很常见,但是之前一直不了解他的各个属性的区别,只是简单的使用block.none属性,对于其他属性都不清楚,今天详细的学习和实践display属性的各个方面 定义 di ...
- (十二)学习CSS之display属性
参考:http://www.w3school.com.cn/cssref/pr_class_display.asp 浏览器支持 所有主流浏览器都支持 display 属性. 注释:如果规定了 !DOC ...
- 面向对象的程序设计(二)理解各种方法和属性typeof、instanceof、constructor、prototype、__proto__、isPrototypeOf、hasOwnProperty
//理解各种方法和属性typeof.instanceof.constructor.prototype.__proto__.isPrototypeOf.hasOwnProperty. //1.typeo ...
- 深入理解display属性——前端布局常用重要属性
小注:display属性在网页布局中非常常见,但经常用到的仅仅是block.inline-block.inline和none等寥寥几个属性值,下面本人将详细介绍display属性的各个方面 定义 di ...
- 前端,基础选择器,嵌套关系.display属性,盒模型
基础选择器 1.统配选择器 控制html,body及body内跟显示相关的标签 *{ width:80px; height:80px; background-color:red; } 2.类选择器 以 ...
- CSS学习笔记:display属性
目录 一.display属性概述 1. 块级元素和行内元素的区别 2.常见的块级元素和行内元素 3. display属性常见的属性值 二.测试display取各属性值的效果 1. 测试inline和b ...
- Code笔记之:CSS+HTML display 属性
display属性值:none 此元素不会被显示. block 此元素将显示为块级元素,此元素前后会带有换行符. inline 默认.此元素会被显示为内联元素,元素前后没有换行符. inline-bl ...
随机推荐
- C#学习系列-文章导航
C#学习系列-.NET体系结构 C#学习系列-类与结构的区别 C#学习系列-String与string的区别 C#学习系列-抽象方法与虚拟方法的区别 C#学习系列-out与ref的区别 C#学习系列- ...
- <dependency>
<dependency> <groupId>org.hibernate</groupId> ...
- "org.eclipse.wst.validation" has been removed 导入maven 项目出错。
在谷歌中找到解决方案: 右键关闭项目,在打开,将项目刷新,选中项目右键----->Maven4myeclipse------->Update maven project 错误消失. 若还有 ...
- PHP SESSION机制,从存储到读取
PHP中,如果要获取SESSION数据,必须要有对应的session_id,session_id的获取方式有两种 1.基于客户端的cookie 2.基于url 先说第一种情况,基于客户端的cookie ...
- herbnate session.createSQLQuery(sql) 和 session.createQuery(sql)使用
public class DistributeDao implements Serializable{ private SessionFactory sessionFactory; public Se ...
- 【HTTP劫持和DNS劫持】实际JS对抗
1.对于DIV注入的,可以初始化时检查全部html代码. 检测是否被劫持比较简单,但对抗就略麻烦,这个在说完第2点之后再解释. 2.对于js注入,可以在window监听DOMNodeInserted事 ...
- android 如何获取手机的图片、视频、音乐
在android 开发中,很多时候,我们会需要调用到用户本机的照片.视频或者是音乐让用户选择,来进行我们APP对应的操作. button.setOnClickListener(new OnClickL ...
- objective-c 语法快速过(2)
oc类的声明和定义的常见错误 1.只有类的声明,没有类的实现 2.漏了@end 3.@interface和@implementation嵌套,也就是@interface或者@implementatio ...
- hibernate笔记--缓存机制之 一级缓存(session缓存)
一级缓存: 又称为session缓存,它和session生命周期相同,周期非常短.是事务级别的缓存: 还是以Book和Category这两个表为例,我们用代码观察一个缓存的存在: 假设现在我要去查询i ...
- java操作数据库增删改查的小工具1--TxQueryRunner
在java程序中,一般使用jdbc连接数据库,比较麻烦,在看传智教程时学了一个工具类,用于简化与数据库之间的操作步骤,就是TxQueryRunner,他是QueryRunner的子类,用起来和他是一样 ...