CSS中的盒类型display——属性整理

CSS中的盒类型display,你了解多少呢?

在css中display属性用来定义元素的盒子类型。

尽管很多盒子类型我们并不常用,但是盒子类型display的值包含很多种:

  • block
  • inline-block
  • inline
  • list-item
  • table相关
  • run-in
  • flex
  • none

说到盒子类型,我们最常用的就是block 和inline。这两个分别是什么呢?

1、块级元素 block(默认值)

block属性值可以创建一个块级元素

2、行内元素 inline

inline属性值可以创建一个行内元素

常用的两种盒类型比较(块级元素和行内元素):

块级元素的特点:

1、元素单独占一行。不论元素的相邻元素的宽度有多么的小,块级元素都会单独占一行。

在以前,如果我们非要块级元素在一行,我们往往都会采用浮动的方式,现在我们也可以利用其他的盒子类型,如行内块、伸缩盒。

2、块级元素可以设置元素的width、height、margin、top等等

行内元素的特点:

1、多个行内元素只要宽度之和小于容器的宽度,就可以排成一行!并且高度不一,由各自的高度决定。

2、行内元素的宽度和高度由自身的内容撑开,不饿能够为行内元素设置宽度和高度属性。

3、也不能够为行内元素设置上下方向的margin和padding属性。但是水平方向的边距是可以设置的哟。

3、两种盒类型的结合体:行内块元素 inline-block

inline-block属性值可以创建一个行内块元素!

行内块元素结合了行内元素和块级元素的特征:既可以像行内元素排在一行,又可以像块级元素设置宽高和边距。

让块级元素不再借助浮动就可以排成一排,让行内元素可以自由定义宽高边距。

行内块也会存在间隙的问题:

问题:行内块和行内块元素之间存在间隙问题!

造成原因:在编写html文档时,格式化的文档包含了换行符或者还有空白符,浏览器会将这些额外的字符合并成一个空白符。

解决办法:

办法1:在书写时不要格式化代码,比如两个span标签之间不要有空格和换行。

办法2:定义行内块的父元素的font-size为0。

办法3:定义行内块的父元素的letter-space为负数,然后行内块元素的letter-space为0,清除艰巨。

4、伸缩盒 flex

flex属性值可以创建一个伸缩盒元素!

伸缩盒元素是css3中新增的属性值,可以让普通的元素变成一个伸缩容器,可以方便的实现响应式。

当容器有剩余位置时,可以跟据比例来伸展元素,当容器容纳不下时,可以根据比例收缩元素。

除此之外,还可以对元素的展示位置或者说方式进行调整。

伸缩盒需要搭配其他的属性来实现,所以我们将会抽出一篇专门讲解伸缩盒布局

5、隐藏元素:none

none属性值可以让一个元素隐藏!

两种隐藏元素的方式比较(display:none 和visibility:hidden)

display:none的方式实现元素隐藏:

1、元素的尺寸会丢失,脱离文档流,不占据任何空间,可能影响之后的元素的布局。

2、引起浏览器的重排和重绘。

3、相当于删除了子元素,自元素的资源不会再加载,如背景图片。

重排:浏览器的dom发生了变化,也就是需要重新计算dom树。dom树发生变化的情况通常有:元素的几何属性发生变化、dom树的结构关系发生变化、获取一些属性如offset等。
重绘:元素外观的改变,如颜色等,不会导致大小或者说位置的改变。
二者的关系:重排必然会起重绘

visibility:hidden的方式实现元素隐藏:

1、元素尺寸依然在,不会影响其他元素的布局。

2、只会导致浏览器重绘,不会导致重排。

3、子元素的资源会正常加载,只是不展示。

6、其他三个不常用的属性值

列表类型:list-item

list-item属性值可以创建一个列表元素。

相当与li元素,可以使用li元素的属性值

表格类型:很多

直接上表格吧:

我想偷个懒!图片来自面试笔试宝典!
在这里插入图片描述
借助这种布局能够达到的效果:

1、实现多列等高
2、实现不确定的元素垂直居中

当然啦,本质就是table

run-in

可以根据周围元素的盒子类型来确定自己的盒子类型。

规则:

1、如果定义为run-in的元素内部没有块级元素,那么其后边的兄弟元素变为行内元素。

2、其他情况;run-in元素理解为块级元素。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值