ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

浅谈,htmlcss脱离标准文档流相关

2019-08-30 16:35:44  阅读:167  来源: 互联网

标签:BFC 浮动 浅谈 index 元素 文档 htmlcss position 定位


原文链接:https://www.mk2048.com/blog/blog.php?id=1iabh2kj&title=%E6%B5%85%E8%B0%88%EF%BC%8Chtmlcss%E8%84%B1%E7%A6%BB%E6%A0%87%E5%87%86%E6%96%87%E6%A1%A3%E6%B5%81%E7%9B%B8%E5%85%B3

  (个人知识有限,难免有误,请见谅)

  标准文档流,顾名思义,是要按照一定规矩排列的,默认的就是元素会从左至右,从上至下排列,块级会独占一行,行内元素会和小伙伴们共享一行。

  本来在标准文档流下,各个元素相安无事,可突然有一天某个元素心想啊,我那么优秀,不该出现在这里啊,于是它成精了,它发现了一道大门走向另一个空间BFC。

  BFC:直译为“块级格式化上下文”,这是一个独立的区域,这个区域与外部没有关系了,互不招惹,个人常用的会开启BFC空间的方式有

  1.float的值不是none  

  2.position的值不为relative和static

  3.display为inline-block

  4.overflow不为visible

  当然还有其他的方式会产生BFC,这里就不列举了。

  先说说float,浮动,它会相对于自己最近的父元素进行定位,往左或者往右,这种方式会给我们布局带来便利,也可以变相的清除一些空文本给我们带来的不必要的空隙,但是使用它的时候需要注意清除它,不然由于它会脱离文档流的缘故,它的兄弟元素会跑到它原来的位置占位,或者它的父元素会因此而坍塌,这样会造成布局的混乱,就好比是在同一个位置,不同的时空,虽然浮动之后的元素还在,但是其他元素却看不见它,当然这个比喻并不怎么恰当,为了防止布局的混乱,也就是浮动之后带来的你不想要的效果,浮动之后一定要记得清除浮动,清除浮动常用的方式可以直接clear掉,当然也可以使用伪类:after来清除浮动,对于overflow:hidden,还有给浮动元素的父元素设置float来撑开父元素的高度,其原理也是开启BFC,而BFC在计算高度的时候,浮动元素也会参与其中。

  再说说position,position定位也是一种脱离普通文档流的做法,它的定位方式是相对于最近的已经定位的祖先元素,常见的方式就是子绝父相,子元素绝对定位,父元素相对定位,使用这种方式可以让子元素相对于父元素做定位,使用position:absolute的时候记得设置x,y轴的值,也就是left,top(当然也可以rigth,top,具体情况自己决定)的值,目前我不知道有什么方式可以让position为absolute与fixed的元素再从自己开辟的BFC中出来,建议只在必须的情况下使用position定位,因为position定位使用多了,大家都脱离了普通文档流,可能会给后续的布局带来困难,既然说到了position,那就顺带再提提z-index,z-index相当于布局中的z轴,在使用了position:relative 或者absolute 或者fixed的时候z-index值便会生效,简单的说如果有几个元素重叠在了一起,这时z-index后面的值谁大,谁就会显示,其实其它元素也还在,只是被z-index值最大的那个元素挡住了,注意z-index后面的值没有单位的哈。

  最后,关于display:inline-block,我最长用的时候无非就是让霸气的块级元素能够容忍其它元素和它共享一行,或者让谦逊的行类元素拥有能够设置width,height的能力。

标签:BFC,浮动,浅谈,index,元素,文档,htmlcss,position,定位
来源: https://blog.csdn.net/qq_37555524/article/details/100161428

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有