CSS 为定位和浮动提供了一些属性,利用这些属性,可以建立列式布局,将布局的一部分与另一部分重叠,还可以完成多年来通常需要使用多个表格才能完成的任务。

元素显示模式

元素模式

元素模式 元素排列 设置样式 默认宽度 包含
块级元素 一行只能放一个块级元素 可以设置宽度&高度 容器的100% 任何标签
行内元素 一行内可以放多个行内元素 不可以直接设置宽度&高度 内容的宽度 文本或其他行内元素
行内块元素 一行内可以放多个行内块元素 可以设置宽度&高度 内容的宽度

常见块级元素有<h1>~<h6> <p> <div> <ul> <ol> <li> 等,其实<div> 标签是最经典的块级元素。常见的行内元素<a> <strong> <b> <em> <i> <del> <s> <ins> <u> <span> 等,其中<span> 标签是最典型的行内元素,行内元素有时也被称作内联元素。而行内块元素同时具有块级元素和行内元素的特点,它既可以设置宽度&高度,还能在一行内摆放多个。

元素显示模式转换

特殊情况下,我们需要元素模式的转化,简单理解:一个模式的元素需要另一种模式的特性,比如想要增加链接<a>的触发范围等。

  • 转化为块元素:display:block
  • 转换为行内元素:display:inline
  • 转换为行内块元素:display:inline-block

CSS定位机制

所谓定位,实际上就是将盒子定在某一个位置,按照定位的方式摆放盒子。定位=定位模式 + 边偏移,定位模式用于指定一个元素在文档中的定位方式,边偏移则决定了该元素的最终位置。

可以利用 position 属性来决定元素的定位模式,一共有以下5种定位模式:

  • static 静态定位
  • relative 相对定位
  • fixed 固定定位
  • absolute 绝对定位
  • sticky 粘性定位

边偏移由以下4个属性定义:

  • top
  • left
  • right
  • buttom

静态定位static

static是position的默认值,如果省略position属性,则浏览器默认该元素为静态定位。所谓静态定位即浏览器按照源码的顺序,决定每个元素的位置,这称为正常的页面流。每个块级元素占据自己的区块,元素与元素之间不产生重叠,这个位置就是元素的默认位置。

相对定位relative

如果对一个元素进行相对定位,它将出现在它所在的位置(原静态定位的位置)上。然后,可以通过设置边偏移来让该元素相对于它的起点进行移动。

#box_relative {
position: relative;
left: 30px;
top: 20px;
}

在使用相对定位时,无论是否相对于原来的起点进行移动,元素仍占据原来的空间,因此移动的元素可能会覆盖其他元素,同时其他元素不会占据元素原来的空间。

绝对定位absolute

绝对定位使元素的位置与文档流无关,因此不占据空间。这一点与相对定位不同,相对定位实际上被看作普通流定位模型的一部分,因为元素的位置相对于它在普通流中的位置。

#box_relative {
position: absolute;
left: 30px;
top: 20px;
}

普通流中的其他元素在布局时会将绝对定位的元素当作不存在一样对待。



绝对定位的元素的位置相对于最近的已定位祖先元素,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块(例如以浏览器为标准)。

一般而言,子类是相对定位的话,父亲要用绝对定位,即子绝父相

  • 子类绝对定位,不会占有位置,可以在父盒子中任意摆放且不会影响其他兄弟盒子。
  • 父盒子需要加定位限制子盒子在父盒子中显示,父盒子布局时又要占有位置,因此父盒子最好采用相对定位

固定定位fixed

固定定位的元素的位置相对于浏览器是固定的,即不随着浏览器页面的滚动而改变位置,若浏览器页面大小发生改变,该元素相对于浏览器的位置不变,固定定位可以看作是特殊的绝对定位。同时,固定定位不占有原来的位置。

#box_fixed {
position: fixed;
left: 30px;
top: 20px;
}

粘性定位sticky

粘性定位很像是固定定位fixed和相对定位relative的结合,粘性定位的元素是依赖于用户的滚动,在 position:relative 与 position:fixed 定位之间切换。

  • 当页面滚动超出目标区域时,它的表现就像 position:fixed;,它会固定在目标位置。
  • 当页面滚动未超出目标区域时,它的表现和普通的postition:relative一样。

利用粘性定位可以实现很多效果,例如很多网页的侧栏。

tip : Internet Explorer, Edge 15 及更早 IE 版本不支持 sticky 定位。 Safari 需要使用 -webkit- prefix (查看以下实例)。

定位小结一图流

定位模式 是否脱离标准流 移动位置
静态定位static × 不能使用边偏移
相对定位relative × 相对于自身位置偏移
绝对定位absolute 相对于带定位的最近父元素
固定定位fixed 相对于浏览器可视区域
粘性定位 × 相对于浏览器可视区域

CSS 定位总结的更多相关文章

  1. css定位

    文档流 所谓的文档流,指的是元素排版布局过程中,元素会自动从左往右,从上往下的流式排列.并最终窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素.脱离文档流即是元素打乱了这个排列,或是从排版 ...

  2. 常用的CSS定位,XPath定位和JPath定位

    CSS定位 举例 描述 div#menu id为menu的div元素 div.action-btn.ok-btn class为action-btn和ok-btn的div元素 table#emailLi ...

  3. div+css定位position详解

    div+css定位position详解 1.div+css中的定位position 最主要的两个属性:属性 absolute(绝对定位) relative(相对定位),有他们才造就了div+css布局 ...

  4. CSS 定位

    一.CSS 定位和浮动   它们代替了多年来的表格布局.   定位的思想很简单,相对于正常位置.相对于父元素.另一个元素甚至是浏览器窗口的位置.   浮动在 CSS1 中被首次提出.浮动不完全是定位, ...

  5. Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析

    加速IE浏览器自动化执行效率:Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析 1.技术背景       在Web应用中,用户通过键盘在输入框中输入值和鼠标点击按钮,链 ...

  6. CSS定位小技巧

    CSS定位Static 默认定位Relative 相对定位:left 和topposition: relative;/*相对定位*/ left:40px;/*在原来的位置向右移动*/ top:100p ...

  7. (七)CSS定位(Positioning)

    CSS定位属性允许对元素进行定位. 一切皆为框: div.h1或p元素常被称为块级元素,而span和strong等元素成为行内元素,但是可是使用 display 属性改变框的类型,将display设置 ...

  8. CSS定位(CSS定位概述、相对定位、绝对定位、浮动)

    CSS 定位属性 CSS 定位属性允许你对元素进行定位. 属性 描述 position 把元素放置到一个静态的.相对的.绝对的.或固定的位置中. top 定义了一个定位元素的上外边距边界与其包含块上边 ...

  9. CSS定位(postion)和移动(float)

    5.定位和移动:Positioning(定位)CSS定位属性允许你为一个元素定位.它也可以将一个元素放在另一个元素后面,并指定一个元素的内容太大时,应该发生什么. 元素可以使用的顶部,底部,左侧和右侧 ...

  10. CSS定位属性Position详解

    CSS中最常用的布局类属性,一个是Float(CSS浮动属性Float详解),另一个就是CSS定位属性Position. 1. position:static 所有元素的默认定位都是:position ...

随机推荐

  1. 深入理解JVM内存回收机制(不包含垃圾收集器)

    目录 垃圾回收发生的区域 如何判断对象是否可以被回收 HotSpot实现 垃圾回收算法 JVM中使用的垃圾收集算法 GC的分类 总结 参考资料 垃圾回收发生的区域 堆是java创建对象的区域(Stri ...

  2. Ethical Hacking - NETWORK PENETRATION TESTING(19)

    MITM-DNS Spoofing DNS Spoofing allows us to redirect any request to a certain domain to another doma ...

  3. 手写SpringBoot自动配置及自定义注解搭配Aop,实现升级版@Value()功能

    背景 项目中为了统一管理项目的配置,比如接口地址,操作类别等信息,需要一个统一的配置管理中心,类似nacos. 我根据项目的需求写了一套分布式配置中心,测试无误后,改为单体应用并耦合到项目中.项目中使 ...

  4. Java中goto标签的使用

    编写此文仅为以后可以复习. 最近在自学Java核心技术(很好的书,推荐!!),也是第一次从上面了解了goto,或许只是浅层了解. 错误之处希望大佬们给予批评与建议!!谢谢!!! Java核心技术中就提 ...

  5. CDQ分治 & 整体分治

    Part 1:CDQ分治 CDQ分治讲解博客 可以把CDQ分治理解为类似与归并排序求逆序对个数的一种分治算法(至少我现在是这么想的).先处理完左右两边各自对答案的贡献,在处理跨越左右两边的对答案的贡献 ...

  6. MVC + EFCore 项目实战 - 数仓管理系统7 - 数据源管理中--新增数据源

    上篇我们完成了数据源列表展示功能(还未测试). 本篇我们来新增数据源,并查看列表展示功能.   接上篇: 二.数据源管理功能开发 2.新增数据源 我们用模态对话框来完成数据源的新增,效果如下图: 我们 ...

  7. 按钮放到图片上,z-index和绝对定位

    说明: 最近在做一个banner轮播图 图的左下方有个 登录的按钮. 按钮死活都放不到图片上边,css太菜  特此记录一下 摆放下效果: 无论 轮播图怎么动 按钮不动 思路: 布局   banner轮 ...

  8. http安全

    https介绍  因为HTTP是明文传输,所以不安全,容易被黑客窃听或窜改: 通信安全必须同时具备机密性.完整性,身份认证和不可否认这四个特性 HTTPS的语法.语义仍然是HTTP,但把下层的协议由T ...

  9. BUUCTF-web HappyCTFd (CVE-2020-7245)

    在 CTFd v2.0.0 - v2.2.2 的注册过程中,如果在CTFd的用户名和emails可用,则可以使攻击者接管任意账号. 进入题目,进行注册.查看用户可以看到admin账号,利用漏洞获取ad ...

  10. Java事务解析(事务的基本操作+隔离的等级+事务的四大特性+事务的概念)

    Java事务解析(事务的基本操作+隔离的等级+事务的四大特性+事务的概念) 什么是事务? 如果一个包含多个步骤的业务操作,这些操作被事务管理,那么这些操作要么同时成功要么同时失败 事务的四大特性(必须 ...