博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSS魔法堂:"那不是bug,是你不懂我!" by inline-block
阅读量:6832 次
发布时间:2019-06-26

本文共 1589 字,大约阅读时间需要 5 分钟。

前言

 对于Box Model和Positioning Scheme中3种定位模式的细节,已经通过以下几篇文章记录了我对其的理解和思考。

深入细节后会发现3中定位模式之间,Box Model和Positioning Scheme之间存在千丝万缕的关系,必须以俯瞰的角度捋一下。

Positioning Scheme的优先级

 简单粗暴上规则:)

  1. Normal flow作为默认的定位模式其优先级自然是最低的;
  2. Absolute positioning相比Float,与Normal flow关联性更弱,优先级最高;
    优先级从低到高: Normal flow < Float < Absolute positioning

Box Model与Positioning Scheme的关系

 之前我总觉得Box Model是一个随定位模式变化的结构,但其实我是被一些表象给蒙蔽了而已。

首先我们要坚定不移地记住:每一个元素只要不是display:none,则它必定会产生一个遵循Box Model的盒子,而这个盒子不管任何情况均由margin box、border box、padding box和content area这4个框组成。(因此说每一个元素会生成0~N个框是正确的哦^_^)
而Positioning Scheme则决定盒子间布局关系,并通过影响display属性影响Ccontent area宽高的设置方式。

  1. 当采用Normal flow。inline-level element将在水平方向上一个接一个的排版布局,并且无法通过width和height来强制设置宽度和高度;block-level element将在垂直方向上逐一排版。
  2. 当采用Float时,display属性的实际值会被重置为block。
  3. 当采用Absolute positioning时,display属性的实际值会被重置为block,并且通过引入top/right/bottom/left这4个margin edge到containing block对应的edge的距离来调整盒子的定位。
  4. 由于Normal flow和Float则需要通过position:relative来引入top/right/bottom/left来提供盒子定位微调的功能。

** 注意:无论采用哪种定位模式,盒子依然由margin/border/padding/content4个框组成 **

Positioning Scheme将影响display的结果值

 当采用Float和Absolute positioning时,display属性值将根据下列规则被重置:

设定值inline-table实际值table
设定值inline, run-in, table-row-group, table-column, table-column-group, table-header-group,table-footer-group, table-row, table-cell, table-caption, inline-block 实际值block

 另外当设置display:none,就不再考虑Positioning scheme了。因为元素没有对应的盒子,还说什么定位,说什么布局呢。

总结

尊重原创,转载请注明来自:

感谢

如果您觉得本文的内容有趣就扫一下吧!捐赠互勉!

分类:
+加关注
1
0
上一篇:
下一篇:
posted @ 2016-04-12 06:21 阅读( 316) 评论( 0)
 
最新IT新闻:
·
·
·
·
·
»
最新知识库文章:
·
·
·
·
·
»

公告

作品:
 
 
本文转自
博客园博客,原文链接: ,如需转载请自行联系原作者
你可能感兴趣的文章
MySQL数据库服务器优化详细
查看>>
Linux常用命令——date
查看>>
Linux常用命令——w、who
查看>>
Linux常用命令——awk
查看>>
From Word Embeddings To Document Distance
查看>>
Oracle的体系结构(三)
查看>>
nginx + django 两种配置模式
查看>>
linux运维学习之Oracle数据库的安装和扩展小优化
查看>>
linux-mysql
查看>>
招人已了,招人心得跟47道面试题加答案放出来
查看>>
珍爱生命,拒绝session。
查看>>
使用JDK原生api进行网络请求并比较
查看>>
oracle
查看>>
1-交换通信:单臂路由实验+DHCP
查看>>
Apache Cassandra和Apache Ignite:通过Ignite增强Apache Cassandra
查看>>
Python全栈初级 中级 高级,资料无偿分享,希望能对大家有所帮助
查看>>
[API 开发管理] 分享几个 eoLinker 实用操作技巧
查看>>
网站安全问题的出现及解决方法
查看>>
java io FilterInputStream BufferedInputStream
查看>>
[转]shell脚本中echo显示内容带颜色
查看>>