【CSS】CSS定位

202 阅读4分钟

一、CSS定位是什么

CSS布局是在电脑屏幕内的;CSS定位是垂直于电脑屏幕的。

二、background

在一个盒模型中,background包括content、padding和border。

写一个代码来证明:

三、一个div里的高低关系

1、content,border和background

已知,content肯定在background上面,border肯定也在background上面,那content和border的高低关系呢,也就是内容能不能遮住border? 答案是content高于border,content可以遮住border。

以下为证明:

div里的高低关系为

  • content
  • border
  • background

2、content和浮动元素

content分为行内子元素(包含文字内容)和块级子元素。

(1)内联子元素vs块级子元素

内联子元素高于块级子元素

(2)内联子元素vs浮动元素

内联子元素高于浮动元素

(3)浮动元素vs块级子元素

浮动元素高于块级元素

3、总结

一个div中的高低关系为:(以下从高到低排列)

  • content中的内联子元素(包括文字内容)
  • 浮动元素
  • content中的块级子元素
  • border
  • background

理解浮动元素:脱离文档流,跳起来,比之前稍微高一点,不在文档流里面了,比文档流稍微高了一点点。

content中的内联子元素(包括文字内容),content中的块级子元素,,他们的内容还是按照顺序,后出现的覆盖先出现的. 等,,学了问。

四、CSS属性———position

(一) static:默认值,待在文档流当中。

(二) relative:相对定位,升起来但不脱离文档流。

1. 使用场景

  • 用于做位移(很少用)
  • 用于给absolute元素做爸爸

2. 与CSS属性z-index配合使用

  • 把需要操作的元素都先写上poistion: relative;
  • auto:默认,计算出来的值是0
  • 0:
  • 数字大的高于数字小的
  • 整数(正负数,0均可)
  • 永远别写z-index:9999

(三) absolute:绝对定位,定位基准是祖先元素里的离它最近的一个定位元素(即非static元素)。

1、使用方法

  • 以谁为基准(祖宗中的定位元素(非static元素),可以是爸爸、爷爷)就在谁里面加入position: relative;,在自己里面写position: absolute;
  • topbottomleftright等来定位(一定要写至少两个。 否则有些浏览器显示的位置会错乱)

2、使用场景

(1)脱离原来的位置,另起一层。比如对话框里的关闭按钮。

(2)鼠标提示

示例代码

3、与CSS属性z-index配合使用

  • 和relative的用法一样,而且不管position的值是relative还是absolute,z-index的作用都是一起的,不会relative的和relative的重叠,absolute的和absolute的重叠

4、经验

  • 查看hover
  • 善用left:100%
  • 善用left:50% 和负margin

(四) fixed:固定定位,定位基准是viewpoint。

1、viewpoint视口

2、使用场景

  • 烦人的广告,广告永远在视口的固定位置
  • 回到顶部按钮

3、与CSS属性z-index配合使用

4、经验

  • 手机永远别用这个fixed,一亿个bug然后会引出十亿个bug,然后996就来了。
  • 在父元素里加了某些属性,这个fixed就会失效。(CSS自己打自己脸?)

(五) sticky:粘滞定位。

五、层叠上下文

一 定义

又称堆叠上下文。每一个层叠上下文就是一个工作域,只有一个工作域里的z-index才可以互相比较。不同工作域的z-index无法比较。

示例代码

二、可以创建一个层叠上下文的属性

  1. 文档根元素 <html>
  2. position 值为 absolute(绝对定位)或 relative(相对定位)且z-index 值不为 auto 的元素;
  3. position 值为 fixed(固定定位)或 sticky(粘滞定位)的元素(沾滞定位适配所有移动设备上的浏览器,但老的桌面浏览器不支持);
  4. flex (flexbox) 容器的子元素,且 z-index 值不为 auto
  5. grid (grid) 容器的子元素,且 z-index 值不为auto
  6. opacity 属性值小于 1 的元素;
  7. transform属性值不为 none的元素

注:想要获取更多内容,请Google搜索“MDN 层叠上下文”

三、负z-index逃不出小世界(没懂)