目录:
 

 
 
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. Java进阶(三十七)java 自动装箱与拆箱

    Java进阶(三十七)java 自动装箱与拆箱 前言 这个是jdk1.5以后才引入的新的内容.java语言规范中说道:在许多情况下包装与解包装是由编译器自行完成的(在这种情况下包装称为装箱,解包装称为 ...

  2. 青年菜君与小农女送菜商业模式PK

    青年菜君与小农女送菜商业模式PK   对比项 青年菜君 小农女送菜 优势 劣势 开业 2014年3月3日 2013年9月 渠道 地铁捕获用户 写字楼配送 送货 来店面自取 送货到写字楼 菜君 1.减少 ...

  3. UVa - 1616 - Caravan Robbers

    二分找到最大长度,最后输出的时候转化成分数,比较有技巧性. AC代码: #include <iostream> #include <cstdio> #include <c ...

  4. Linux进程实践(1) --Linux进程编程概述

    进程 VS. 程序 什么是程序? 程序是完成特定任务的一系列指令集合. 什么是进程? [1]从用户的角度来看:进程是程序的一次执行过程 [2]从操作系统的核心来看:进程是操作系统分配的内存.CPU时间 ...

  5. Leetcode_111_Minimum Depth of Binary Tree

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41964249 Minimum Depth of Binar ...

  6. myBatis源码之BatchExecutor

    BatchExecutor是实现批处理操作,会将根据相同操作通过判断sql语句和MappedStatement来将执行放到List中,来执行批处理操作. /** * @author Jeff Butl ...

  7. Stochastic Gradient Descent 随机梯度下降法-R实现

    随机梯度下降法  [转载时请注明来源]:http://www.cnblogs.com/runner-ljt/ Ljt 作为一个初学者,水平有限,欢迎交流指正. 批量梯度下降法在权值更新前对所有样本汇总 ...

  8. RHEL6安装python包tornado

    RHEL6安装python包tornado tornado是使用Python开发的全栈式(full-stack)Web框架和异步网络库,最早由Friendfeed开发.通过使用非阻塞IO,Tornad ...

  9. Android NDK开发method GetStringUTFChars’could not be resolved

    Android NDK开发method GetStringUTFChars'could not be resolved 图1 最近用到android的ndk,但在eclipse中提示method Ge ...

  10. Matlab R2013a: C++ MEX on Ubuntu 14.04 64-bit

    原文地址: http://blogs.bu.edu/mhirsch/2013/07/matlab-r2013a-mex-on-ubuntu-13-04-64-bit/ Note: the way Me ...