目录:
 

 
 
1.static
  • 默认的定位方式,不支持设置位移属性
  • 用来覆盖之前创建的 absolute, relative, fixed

 
2.relative
“relative”可以给元素设置位移(offset)“top、right、bottom和left”属性。通过这些位移属性设置可以给元素进行精确的定位。
  • relative + 位移属性:
  1. 仍∈文档流;
  2. 仍占用原默认位置(周边元素也能看到其默认位置);
  3. 相对定位元素的位移是相对于元素自身的边缘
 
  • 应用场景:

给其嵌套标签设定一个新的参照点(创建新的定位环境)。

 
事实上,一个相对定位元素同时设置了“top”和“bottom”位移属性值,实际上“top”优先级高于“bottom”。然而,一个相对定位元素同时设置了“left”和“right”位移属性,他们的优先级取决于页面使用的是哪种语言,例如,如果你的页面是英文页面,那么“left”位移属性优先级高,如果你的页面是阿拉伯语,那么“right”的位移属性优先级高。
 

 
3.absolute
  • 绝对定位元素
  1. 脱离文档流;
  2. 相对于最近的定位祖先/浏览器窗口元素

简单来说:

如果元素有一个祖先,祖先的position设为 relative/ absolute/ fixed,元素将相对于祖先元素的边定位;

若元素没有包含在另一个定位元素中,它将相对于初始包含块(根html元素)定位。

一旦定位一个元素,它将变为它包含的所有元素的新包含块。转变元素为包含块的一种方法:position: relative; 但不设置偏移值来移动它。(也反映出,相对定位元素通常用于为绝对定位元素创建“定位环境”。)

  • 相对定位的祖先ancestor + 绝对定位元素elem:
  1. 若 elem 没有设置盒子位移属性,elem 的顶部、左部,会和设置了相对定位的父元素的顶边、左边重合。(多个elem会重叠)
  2. 若 elem 设置了盒子位移属性,elem 会对于设置了相抵定位的祖先元素边缘进行移位。
 
当一个绝对定位的元素有固定的高度和宽度,并且盒子位移同时设置了“top”和“bottom”时,“top”更具优先组,另外和相对定位元素一样,当同时设置了“left”和“right”时,优先级取决于他的页面使用的语言。
 

当一个绝对定位的元素没有明确指定高度和宽度,同时使用盒子位移的“top”和“bottom”属性时,会使整个元素的高度跨越整个容器。同样的,当这个元素同时使用位移“left”和“right”属性值,会使整个元素的宽度跨越整个容器。如果同时使用位移四个属性,可以指定一个宽度和高度显示元素。(这个时候绝对定位元素的宽度和高度都是100%。)

box-1 不指定height, width;
         top: 10px; bottom: 10px;  /* 同时使用top, bottom, 高度跨越整个容器 */
         left: 10px; right: 10px;      /* 同时适应left, right, 宽度跨越整个容器 */
 
  • 应用场景:

适合于简单的实际细节:e.g. 日期放在标题右下角;图片移除其包装块;说明文字放在照片之上。

 

 
4.fixed
  • 固定定位元素
  1. 偏移值总是相对于浏览器窗口;即使该元素被放在另一个 relative / absolute 定位的标签里也一样。
  2. 固定元素总是可见,即便内容在滚动。
  3. 用于创建固定侧边栏,或者模仿HTML框架效果。

 
5.实验:static, relative, absolute中,父元素-子元素高度关系
  • static
此例中,子元素 box-xx 设置height,父元素 box-set 不设置height。
父元素的高度由子元素高度撑起(子元素原始高度)

 
子元素 height: 40px;
子元素 height: 80px;
 
  • 相对定位元素
此例中,子元素 box-xx 设置height,父元素 box-set 不设置height。
父元素的高度由子元素高度撑起(子元素原始高度,与位移无关)
 
子元素 height: 40px;
子元素 height: 80px;
 
  • 绝对定位元素:父元素relative,子元素absolute
此例中,子元素 box-xx 设置height,父元素 box-set 也设置了height。
父元素的高度并非由子元素高度撑起;(absolute 元素脱离了文档流)
但二者之间存在联系:子元素是相对于父元素的边缘进行位移
 
父元素 height: 200px; 子元素 height: 80px;
父元素 height: 200px; 子元素 height: 20px;
父元素 height: 100px; 子元素 height: 80px;
父元素 height: 10px; 子元素 height: 80px;
父元素 height: 0; 子元素 height: 80px;
 
实验源码下载,可见我的github,路径:baiduProj/task4-center/position/
 

 
6.z-index
z-index 表示定位元素在网页上堆叠的顺序。
 
一般情况,定位元素的堆叠顺序是按照其HTML代码顺序进行的。e.g. 两个绝对定位的<div>,第二个<div>会出现在第一个<div>的上层。
 
但,可以通过 z-index 来控制定位元素的堆叠顺序。z-index 值越大,越处于顶层。
 
  • 同一个父元素包裹的子元素比较 z-index 才有意义。
  • 不同父元素下的子元素,其堆叠顺序遵循父元素的堆叠顺序。
  • 定位的父元素parent和子元素a, b,parent 的 z-index 值是a, b 的堆叠起点,即使 parent(z-index: 1000),a(z-index: 1),b(z-index: 3),a, b的z-index相对 parent 更小, 但仍位于 parent 上层。

 
7.参考资料
 
 
 
 
 

CSS position 笔记+实验的更多相关文章

  1. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

  2. CSS学习笔记10 相对定位,绝对定位与固定定位

    文档流中的元素的位置由元素在 (X)HTML 中的位置决定,这就是最原始的普通流,前面讲到的浮动CSS学习笔记08 浮动可以改变元素在文档流中的位置,除了这个我们还可以通过使用CSS的position ...

  3. CSS学习笔记09 简单理解BFC

    引子 在讲BFC之前,先来看看一个例子 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  4. CSS 小结笔记之解决flex布局边框对不齐

    在使用flex 进行伸缩布局的时候,经常会给子盒子设置边框,这时经常会出现上下边框对不齐的情况.本篇文章来探讨并解决这个问题. 具体出现的问题如下图所示 具体代码如下 <!DOCTYPE htm ...

  5. css笔记 - 张鑫旭css课程笔记之 float 篇

    https://www.imooc.com/t/197450float float的设计初衷/原本作用-是为了实现文字环绕效果如,一个图片和一段文字垂直放置,给图片加上浮动,文字就环绕图片展示了. 浮 ...

  6. Head First HTML与CSS阅读笔记(二)

    上一篇Head First HTML与CSS阅读笔记(一)中总结了<Head First HTML与CSS>前9章的知识点,本篇则会将剩下的10~15章内容进行总结,具体如下所示. div ...

  7. CSS学习笔记之CSS3新特性

    目录 1.边框 2.背景 3.文本 4.字体 5.转换 6.过渡 7.动画 8.多列 9.自定义尺寸 CSS 用于控制网页的样式和布局,而 CSS3 是最新的 CSS 标准,这篇文章将着重介绍 CSS ...

  8. CSS学习笔记之选择器

    目录 1.元素选择器 2.继承 3.选择器分组 4.声明分组 5.后代选择器 6.子元素选择器 7.相邻兄弟选择器 8.类选择器 9.ID 选择器 10.属性选择器 11.伪类 12.伪元素 1.元素 ...

  9. 2022-07-10 第五小组 pan小堂 css学习笔记

    css学习笔记 什么是 CSS? CSS 指的是层叠样式表* (Cascading Style Sheets) CSS 描述了如何在屏幕.纸张或其他媒体上显示 HTML 元素 CSS 节省了大量工作. ...

随机推荐

  1. Android 6.0 运行时权限处理问题

    序 自从升级到Android M以来,最大的改变就是增加了运行时权限RuntimePermission,6.0以上的系统如果没有做适配,运行了targetSDK=23的App时就会报权限错误.我们知道 ...

  2. 清除行内元素之间的HTML空白

    原文连接:Remove Whitespace Between Inline-Block Elements 原文日期: 2013年8月27日 翻译日期: 2013年8月28日 至今我还记得年轻是在IE6 ...

  3. Java虚拟机结构

    一.JVM主要的结构如下: 二.各个区域功能介绍 1).方法区(Method Area):         (1)用于存储虚拟机加载的类信息.常量.静态变量等,是各个线程共享的内存区域:       ...

  4. 【一天一道LeetCode】#19. Remove Nth Node From End of List

    一天一道LeetCode系列 (一)题目 Given a linked list, remove the nth node from the end of list and return its he ...

  5. android动画介绍之 自定义Animation动画实现qq抖一抖效果

    昨天我们介绍了Animation的基本用法.小伙伴们了解的怎么样了?如果还没有了解过Animation的小伙伴可以看看这篇博客 android动画介绍--Animation 实现loading动画效果 ...

  6. C#数据库连接操作大全

    一:数据库连接代码: SqlConnection objSqlConnection = new SqlConnection ("server = 127.0.0.1;uid = sa; pw ...

  7. PDA(Windows Mobile)调用远程WebService

    之前用模拟器测试过调用远程的WebService,发现总是提示"无法连接到远程服务器"的错误,不管是Windows Mobile6.0 还是6.5都是一样,按照网上的办法,改注册表 ...

  8. how tomcat works 五 servlet容器 上

    servlet容器是用来处理请求servlet资源,并为Web客户端填充response对象的模块.在上一篇文章(也就是书的第四章)我们设计了SimpleContainer类,让他实现Containe ...

  9. Handler学习小结

    在android消息机制中Handler扮演着举足轻重的作用,(AsnyTask其实也是对Handler+Thread做了一层封装),ui线程超过5s就会报出ANR,一般耗时操作操作需要放在子线程中处 ...

  10. android Google推荐的容器SparseArrayCompat简介

    android Google推荐的容器SparseArrayCompat简介 private static SparseArrayCompat<BaseFragment> mCaches ...