Web前端开发工程师知识体系_17_CSS(五)

46 篇文章 0 订阅

一、浮动和文档流

1.默认文档流

流就是文档布局的自身特性,而定位机制可能就会打破原有流的特性;默认文档流有内联元素(从左向右排列)、块级元素(从上向下排列)。

2.脱离文档流

文档一旦脱离文档流,就不再受文档流布局约束,在算其父元素高度时不包括自身;

以下情形会导致元素脱离文档流:float 浮动、position 定位(绝对定位、固定定位)。

3.浮动

子元素在父元素中浮动时,会使其脱离文档流,导致父元素失去管理能力。属性:
float:none 默认不浮动
float:left 左浮动
float:right 右浮动

(1)浮动的特点

· 元素浮动后不再撑起父级的高度
· 元素浮动后可以在父元素的左侧或右侧排列
· 元素浮动后不再自占一行
· 元素浮动后会对后面的文档流中的兄弟元素产生影响,会遮盖其后的兄弟元素
· 内联元素浮动后,自动变成块级元素
· 元素浮动后虽不在撑起父级的高度,但仍受父级影响,还在父级范围内
· 父元素内所有元素均浮动,元素们宽度相加大于父元素宽度时,会自动换行
· 元素浮动后不自占一行,会向前占位,前方空值位置属自己所有,后方的元素换行时,不能占据
· 元素浮动时,原则会盖住其后方文档流中的兄弟元素,但文字、图片等(行内元素和行内块)不会被盖住
· 文字不会被盖住而是环绕浮动元素四周显示。

2.清除浮动

元素在父元素中浮动时,会导致父元素的高度坍塌(无高度)、元素布局错位,页面产生混乱、文字环绕,图片环绕等;清除浮动可以使块级元素横向布局,因为块级元素的默认排列是垂直方向的、而且还会变化文档流布局的方向,可以更加多样化。

需要注意的是清除浮动并不是去除浮动,而是将浮动带来的负面效果解决掉

通常写完浮动之后,最好马上找到父元素做清除浮动处理 overflow: hidden; 防止布局错位。

二、定位

1.position属性

position属性是定位属性,用于指定一个元素在文档中的定位方式,top、right、bottom、left属性值决定了该元素的距离四边的位置,可以为负值。常用取值:relative 相对定位、absolute 绝对定位、fixed 固定定位。

2.相对定位 -position: relative;

相对定位不会脱离文档流,可使用top、right、bottom、left做偏移,元素相对的位置是自己本来的位置,移动不改变页面布局;相对定位属性不会影响周围的布局,但会出现新的层叠顺序。

.box img {
   position: relative;
   bottom: 130px;
   right: -150px;
}

当四个方向值发生重合时,以top和left为优先。

3.绝对定位 -position: absolute;

元素会脱离文档流,其他元素不为该元素预留空间,可使用top、right、bottom、left做偏移,绝对定位的元素可以设置外边距,且不会与其他边距合并。

让子元素在父元素内绝对定位时,先为父元素设置相对定位属性 position: relative;,然后本身进行绝对定位 position: absolute;

eg:使用绝对定位让子元素在父元素中水平垂直居中

.baba {
   width: 100%;
   height: 300px;
   position: relative;
}
.baba div {
   width: 100px;
   height: 100px;
   position: absolute;
   top: 50%;
   left: 50%;
   margin-left: -50px;
   margin-top: -50px;
}

4.固定定位 -position: fixed;(它的父级始终是html)

元素会脱离文档流,但不用找父级;固定定位参照的是浏览器窗口,可使用top、right、bottom、left做偏移。

5.z-index -层叠顺序

该属性必须在元素有定位属性(相对或绝对)的前提下指定,没有定位的元素指定z-index无效。
取值直接设置没有单位的整数,可以为负值,值越大层级越高。

.d1 {
  background-color: red;
  position: relative;
  z-index: 1;
}

层叠领域的准则:
- 值大的在上:z-index的值,在同一个层叠上下文领域,层叠水平值大的覆盖小的;
- 后来的在上:当元素的层叠水平一致时,在文档流中处于后面的元素会覆盖前面元素。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值