问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

position跟display margin,collapse,overflow,float这些特性相互叠加后会怎样

发布网友 发布时间:2022-04-21 09:18

我来回答

1个回答

热心网友 时间:2022-04-21 10:48

这是寒冬大神提出的一个题目,刚开始看到这题的时候完全不知道从什么地方回答起好,题目内容比较广泛,找不到针对点。后来我觉得这个题目应该能拆成几个点来回答:1、'display'、'position' 和 'float' 的相互关系;2、position跟display、overflow、float下的margin collapse。
一、'display'、'position' 和 'float' 的相互关系
首先我们先来看下这3个属性。
display 属性规定元素应该生成的框的类型。 block 象块类型元素一样显示,none 缺省值。象行内元素类型一样显示, inline-block 象行内元素一样显示,但其内容象块类型元素一样显示,list-item 象块类型元素一样显示,并添加样式列表标记(display 还有很多其他值设置,读者自行查找)。
position 属性规定元素的定位类型。 absolute表示生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位;fixed(老IE不支持)生成绝对定位的元素,相对于浏览器窗口进行定位;relative生成相对定位的元素,相对于其正常位置进行定位;static 默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right z-index 声明)。
Float也是是一种布局方式,它定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。 在布局过程中也经常会使用它来达到左右并排布局的效果。
那么这三种布局和框形成的关键特性( display )之间有什么关系呢,请看下面流程图:

转换对应表:
设定值计算值
inline-tabletable
inline, run-in, table-row-group, table-column, table-column-group, table-header-group,
table-footer-group, table-row, table-cell, table-caption, inline-blockblock
其他同设定值
总的来说,可以把它看作是一个类似优先级的机制, "position:absolute" 和 "position:fixed" 优先级最高,有它存在的时候,浮动不起作用,'display' 的值也需要调整; 其次,元素的 'float' 特性的值不是 "none" 的时候或者它是根元素的时候,调整 'display' 的值; 最后,非根元素,并且非浮动元素,并且非绝对定位的元素,'display' 特性值同设置值。
这从另一个侧面说明了一个问题:浮动或绝对定位的元素,只能是块元素或表格。
1. 'display' 的值为 'none'
如果 'display' 的值为 'none',那么 'position' 和 'float' 不起作用。在这种情况下,元素不产生框。因此浮动和定位无效。
2. 'position' 的值是 'absolute' 或 'fixed'
否则,如果 'position' 的值是 'absolute' 或 'fixed',框就是绝对定位的,'float' 计算后的值应该是 'none',并且,'display' 会被按照上表设置。 框的位置将由 'top','right','bottom' 和 'left' 属性和该框的包含块确定。
也就是说,当元素是绝对定位时,浮动失效,'display' 会被按规则重置。
示例代码:
<script type="text/javascript">function getStyle(obj, style) { var _style = (style == "float") ? "styleFloat" : style; return document.defaultView ? document.defaultView.getComputedStyle(obj, null).getPropertyValue(style) : obj.currentStyle[_style.replace(/-[a-z]/g, function() { return arguments[0].charAt(1).toUpperCase(); })];}window.onload = function() { document.getElementById("info").innerHTML = "float : " + getStyle(document.getElementById("test"), "float") + "<br/>display : " + getStyle(document.getElementById("test"), "display");}</script><div id="test" style="position:absolute; float:left;display:inline;"></div><div id="info"></div>
上面代码中有一个既是绝对定位又是浮动的元素,以上代码可取出其 'display' 和 'float' 的计算值。
IE 中,'float' 值和 'display' 的特性值未发生变化,还是 "float: left; display: inline"。
其他浏览器中计算后的结果是:"float: none; display: block"。
3. 'float' 的值不是 "none"
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
在筋骨堂治疗腰椎间盘突出一个疗程后已有好转,隔了三、四天又疼上了... 美的3⃣️匹柜机空调为什么不制热是什么原因? 小票打印机不出字的原因及解决方法如何解决小票打印机无法打印字的问题... 电脑打单打印机出不了小票超市收银台电脑键盘怎么用 交易房屋如何分类 城市规划用途分类该怎么做 规划用途的分类 ...打火机散件设备公司 值得信赖么 ?是不是《骗子》皮包公司? 希望给予... 哈尔滨农垦太阳神打火机散件厂是否骗人 有没有人知道网上那些打火机加工的广告是不是真是可靠?做打火机反销... 华为怎么查询保修期限 淘宝申请退款有没时间限制的? 关于淘宝退货时间的问题 淘宝确认收货以后申请退货退款有时间吗 淘宝春节申请退款卖家处理时间是多久 淘宝退货退款可以设置时间吗 打印网页时去掉背景图片 电脑打印图片文件是,会同时出来很多网页上下载的小图片,这些图片如何删除呢? 腾讯王卡怎么注册? 请写出二十四节气中春季的几个季节 margin-right:-3px;这个什么意思? 在英文简历中写:参加学院电影表演大赛,获得三等奖。怎么写才好。。 大学期间可以参加的比赛~~200分! 帝尊嘉禾《影视表演班》大赛有什么特点? 《2018高等院校服装表演专业艺考生表演大赛》在哪里举办? 参加《2018高等院校服装表演专业艺考生表演大赛》,能拿到哪些高校的合格证? 四川省中小学生艺术人才大赛语言表演类,没有专门学过这方面,参赛得奖几率大不大?有哪些注意事项? 少儿表演大赛怎么联系? 有木有表演类的英语大赛? cctv模特表演大赛什么时候开始报名啊? 电子元器件在淘宝上的类目代码 电子元器件代码怎么定义? 当是不是多音字 当(第四声)怎么组词 酒店项目可行性研究报告的报告简介 酒店规划设计的可行评估 如何实现硬盘ISO镜像文件安装Xp操作系统 三星Galaxy S20 FE有几种颜色? 三星s20什么颜色好看 四大汗国是哪四大? 四大汗国指什么,是什么? 蒙古四大汗国 谁知道元代四大汗国 四大汗国的情况分别是怎样的? 四大汗国包括那些?他们为什么会互相斗争? 蒙古帝国的四大汗国是什么? 蒙古四大汗国详细历史 元朝的四大汗国是那四个 历史上“四大汗国”分别叫什么名字?它们分别在何处? 历史上蒙古四大汗国怎样解释