CSS的定位

没怎么系统学过html和css,有概念上的东西不清楚.但是今天听了大佬的课,收获很多.记下来,对自己理解html和css很有帮助. 下面的都是自己没有整理的,都是按照自己随意写的.

1. 文档流和脱离文档流

正常的文档流就是标签所在的一个空间,脱离文档流就是标签在另外一个空间.
可以想象,在页面中只有两个空间,一个正常的空间,还有一个在正常空间之上的空间.
之后的东西都是在这两个空间上进行操作的.
脱离文档流空间中是没有块级和行级属性的,且位置完全不固定.

2. float属性

float属性设计出来用来实现图片环绕的,被用作了将块级元素变为同一行,因为脱离文档流空间是不存在行块属性的.
在标签CSS样式中使用了float:left之后:本来在正常文档流空间的标签,会跑到脱离文档流空间中去.
这样,原来标签所占有的空间会被释放,之后的标签就会占据这个浮动标签的位置.而在脱离文档流空间的标签会覆盖住正常文档流空间中的位置.覆盖的位置和left,right属性有关.

3. float和正常文档流交替使用

将三个div使用float:left后,会排成一行,这个时候添加一个正常文档流,正常文档流会跑到最上面,被三个float的div覆盖住,所以要将这个三个div用一个空div去包裹,同时将这个空div从脱离文档流空间放到正常文档流中,这样才不会覆盖第四个正常文档流.空div使用 overflow:hidden属性将这个div假装成在正常文档流空间,所以下面的div会认为上面的div在正常文档流,所以会排在包裹div的后面.

4. 定位属性position

如果要子div相对于父div定位,需要用到position属性.

正常的标签是没有position属性的,产生距离需要使用margin属性勉强达到效果.使用left,top没效果.

如果父元素使用position:relative, 子元素使用 position:absolute ; left : 100px; 那么子元素相对于父元素右移100px;因为子元素使用position属性后,是脱离了文档流的,所以可以覆盖文档流中的div.
注意:父元素relative 子元素absolute,会让子元素不能脱离父元素范围,但是实际上又是可以的.所以可以理解为 ”你是我儿子,你只能在我的范围内,但是非要跑出去,我也没有办法!”所以需要使用overflow:hidden 属性,这样属性超过父元素范围就会隐藏,也就是在父元素范围之外不能显示子div,达到不能超过父元素范围的效果.

还有一种,relative相对于自己定位,自己在文档流中占据的位置不会消失,而是保留,absolute是不保留原来的位置的.使用relative后,left:100px; 相对于自己原来的位置偏移100px;此时是在脱离文档流中的,所以可以覆盖正常文档流中的标签.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值