清除浮动与定位

在文档流中,父元素的高度默认是被子元素撑开的,也就是子元素多高,父元素就多高。

但是当为子元素设置浮动以后,子元素会完全脱离文档流,此时将会导致子元素无法撑起父元素的高度,导致父元素的高度塌陷。

然后就会导致页面布局图片。


那么,我们应该怎么解决高度塌陷的问题呢。

在页面元素中有一个隐藏属性叫做  BFC  

该属性的特点是:

1.父元素不会和子元素重叠

2.开启的BFC元素不会被浮动所覆盖

3.开启BFC的元素可以包含浮动的子元素

开启BFC

1.设置元素浮动  (会导致宽度丢失)

2.设置元素绝对定位(同上)

3.设置元素为inline-block(同上)

4.将元素的overflow设置为一个非vidibe的值(推荐使用)

但是IE6以下的浏览器不支持BFC

IE6也有一个默认属性叫做hasLayout(类似BFC)

用法:zoom 1 为默认值

zoom是固定格式  后面跟着数字表示要将元素放大几倍 


然后我们就可以用已有知识设置一个导航条


我们有时希望清除掉其他元素浮动对当前元素产生的影响,这时可以使用clear来完成功能

可选值:

none,默认值,不清除浮动

left,清除左侧浮动元素对当前元素的影响

right,清除右侧浮动元素对当前元素的影响

both,清除两侧浮动元素对当前元素的影响

清除对他影响最大的那个元素的浮动

清除浮动以后,元素会回到其他元素浮动之前的位置


学了清除浮动之后 我们还可以用另一种方法来解决高度塌陷:

可以直接在高度塌陷的父元素的最后,添加一个空白的div,由于这个div并没有浮动,所以他是可以撑开父元素的高度的

然后再对其进行清除浮动,这样可以通过这个空白的div来撑开父元素的高度,基本没有副作用


相对定位指的是相对于自身原位置的定位,可以使盒子进行一定的偏移,相对定位不会脱离函数。

可以用position属性来设置元素的定位

-可选值:

static:默认值,元素没有开启定位

relative:开启元素的相对定位

absolute:开启元素的绝对定位

fixed:开启元素的固定定位(也是绝对定位的一种)

元素的相对定位有几个特点:

1.当开启了元素的相对定位以后,而不设置偏移量时,元素不会发生任何变化

2.相对定位是相对于元素在文档流中原来的位置进行定位

3.相对定位的元素不会脱离文档流

4.相对定位会使元素提升一个层级

5.相对定位不会改变元素的性质,块还是块,内联还是内联

当开启相对定位之后,可以用 left  right   top   bottom   来设置偏移量。


当position属性值设置为absolute时为绝对定位

绝对定位的特点:

1.开启绝对定位,会使元素脱离文档流

2.开启绝对定位以后,如果不设置偏移量,则元素的位置不会发生变化

3.绝对定位是相对于离他最近的、开启了定位的祖先元素进行定位的(一般情况,开启了子元素的绝对定位,都会同时开启父元素的相对定位)

如果所有的祖先元素都没有开启定位,则会相对于浏览器窗口进行定位

4.绝对定位会使元素提升一个层级

5.绝对定位会改变元素的性质


当元素的position属性设置fixed时为固定定位

固定定位也是一种绝对定位,它的大部分特点都和绝对定位一样

不同的是:

固定定位永远都会相对于浏览器窗口进行定位

固定定位会固定在浏览器窗口某个位置,不会随滚动条滚动

同样的IE6也不支持固定定位


作业




最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,868评论 1 92
  • 主要内容: 浮动的介绍、清除浮动、各种定位、BFC以及外边距合并的介绍。 浮动 什么是浮动元素 浮动元素是floa...
    苦瓜_6阅读 605评论 0 0
  • 1. 前言 前端圈有个“梗”:在面试时,问个css的position属性能刷掉一半人,其中不乏工作四五年的同学。在...
    YjWorld阅读 4,649评论 5 15
  • 一,浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响? 浮动模型是一种可视化格式模型,浮动...
    DeeJay_Y阅读 927评论 0 4
  • 我就是一粒空气,也可以叫一个,或者一撮……你若问我从哪来?嗯……从来的地方来;我到哪去?嗯……到去的地方...
    申振柱阅读 364评论 0 1