css定位

1.div的分层结构  

css布局&css定位:

布局是屏幕平面上的,css定位是垂直于屏幕的。

div从侧面立体看分为五层,空间顺序如下:

 如何证明div的分层结构?

背景范围:JS Bin - Collaborative JavaScript Debugging,(范围是border的外边缘围城区域)

分层结构:JS Bin - Collaborative JavaScript Debugging,(文字>浮动>块级子元素>边框>背景)

注:alt + ↑↓,可以每次调0.1

除了float中的文字,其他文字不论出现在哪他们的顺序都是通过出现先后来进行层叠的。

2.position属性(相对定位和绝对定位)

1.static,静态定位

静态定位的元素遵循正常的文档流(即:没有定位),不会受到 top, bottom, left, right影响。

2.relative,相对定位

相对于自身在文档流中的位置进行偏移。不会脱离文档流,实际在文档流中占位不变。

使用场景:

  • 多用于做absolute元素的父元素
  • 配合z-index,进行层叠,负数<0<正数(z-index: auto;默认值,不创建新的层叠)

 3.absolute,绝对定位
absolute绝对定位的元素会脱离文档流。absolute相对于祖先元素中最近的一个定位元素定位。

如果没有父元素设置绝对或相对定位,则元素相对于根元素html元素定位。除了positon:static的其他元素都是定位元素。

使用场景:

  • 对话框关闭按钮
  • 鼠标提示
  • 配合z-index(relative和absolute的z-index是同一个层叠)

小技巧:

  •  white-space: nowrap; 文字内容不换行
  • left: 50%; transform: translate(-50%);自动居中效果
  • left: 50%; margin-left: -一半居中元素宽度;手动居中效果
  • top,left,right,bottom至少写2个,否则定位时可能会有浏览器位置错乱

 我的页面:JS Bin - Collaborative JavaScript Debugging

4.fixed,绝对定位(固定定位)

元素的位置相对于浏览器窗口(视口viewport)是固定位置。窗口滚动它也不会移动。

使用场景:

  • 广告
  • 回到顶部按钮
  • 配合z-index使用

注:不要把fixed元素放入含有transform: scale(0.9);属性的元素中,会不符合要求。

手机尽量不要使用fixed属性,移动端fixed,bug特别多。

5.sticky,粘性定位

粘性定位的元素是依赖于用户的滚动,在跨越特定阈值前为相对定位,之后为固定定位。页面滚动为超出目标区域时,它的行为就像 position:relative; 而当页面滚动超出目标区域时,它的行为就像 position:fixed;会固定在目标位置。

使用情况:

  • 顶部条
  • 置顶标题文字/标题替换

注:sticky的兼容性特别差

我的页面:JS Bin - Collaborative JavaScript Debugging

6.小结 

3.层叠上下文(stacking context)

1.定位元素与div分层

默认层叠顺序:

position定位元素默认z-index:0;自动层叠在文字上方,但不包括position为static的元素。

层叠顺序可以通过z-index的数值进行更改。

页面源码:JS Bin - Collaborative JavaScript Debugging

小技巧:

  • text-align: center; 文字水平居中
  • line-height: 数值(盒子高度height); 文字垂直居中
  • justify-content: center; align-items: center; 使用flex布局居中

 2.可以创建层叠上下文的属性

层叠作用域:在每个层叠作用域内,z-index根据数值大小进行排序层叠。

  页面源码:JS Bin - Collaborative JavaScript Debugging(不同作用域出现z-index,5>10)

创建新作用域的属性:

  • z-index值不为auto且position:relative/absolute;的定位元素
  • z-index值不为auto的flex/grid子元素
  • opacity:0.5;透明度数值小于1
  • position: fixed/sticky;
  • transform不为none的元素

mdn文档:层叠上下文 - CSS(层叠样式表) | MDN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值