【重识 HTML + CSS】定位
定位
- 标准流 (Normal Flow)
- CSS 属性 - position
- relative - 相对定位
- static - 静态定位
- fixed - 固定定位
- 画布 (Canvas) 和视口 (Viewport)
- 脱标元素的特点
- absolute - 绝对定位
- 子绝父相
- 练习 - 蒙版
- 绝对定位技巧
- 元素的层叠
- CSS属性 - z-index
博文集合:【重识 HTML + CSS】知识点目录
标准流 (Normal Flow)
normal flow 一般可以被称为标准流、常规流、正常流、文档流 (document flow)
默认情况下,元素都是按照 normal flow 进行定位:
- 从上到下、从左到右按顺序摆放好
- 默认情况下,互相之间不存在层叠现象
示例代码:标准流
margin、padding 定位:
- 在标准流中,可以使用 margin、padding 对元素进行定位(其中 margin 还可以设置负数)
- 比较明显的缺点是:
设置一个元素的 margin 或者 padding,通常会影响到标准流中其他元素的定位效果
不便于实现元素层叠的效果
CSS 属性 - position
利用 position 可以对元素进行定位,常用取值有 4 个:
static
:静态定位relative
:相对定位absolute
:绝对定位fixed
:固定定位
relative - 相对定位
元素按照 normal flow 布局:
- 可以通过 left、right、top、bottom 进行定位
- 定位参照对象是元素自己原来的位置
left、right、top、bottom 用来设置元素的具体位置,对元素的作用如下图所示:
相对定位的应用场景:在不影响其他元素位置的前提下,对当前元素位置进行微调
实现代码:relative-练习-01
实现代码:relative-练习-02
static - 静态定位
- static 是 position 属性的默认值
- 元素按照 normal flow 布局(没有脱标)
- left 、right、top、bottom 没有任何作用
示例代码:relative
fixed - 固定定位
- 元素脱离 normal flow(脱离标准流、脱标)
- 可以通过left、right、top、bottom进行定位
定位参照对象是 视口(viewport) - 当画布滚动时,固定不动
示例代码:fixed
画布 (Canvas) 和视口 (Viewport)
视口 (Viewport)
- 文档的可视区域
- 如右图红框所示
画布 (Canvas)
- 用于渲染文档的区域
- 文档内容超出视口范围,可以通过滚动查看
宽高对比:画布 >= 视口
脱标元素的特点
- 可以随意设置宽高
- 宽高默认由内容决定
- 不再受标准流的约束
不再严格按照从上到下、从左到右排布
不再严格区分块级、行内级,块级、行内级的很多特性都会消失 - 不再给父元素汇报宽高数据
- 脱标元素内部默认还是按照标准流布局
示例代码:脱标元素_01、脱标元素_02
实现代码:fixed-练习
absolute - 绝对定位
- 元素脱离 normal flow(脱离标准流、脱标)
- 可以通过 left、right、top、bottom 进行定位
定位参照对象是最邻近的定位祖先元素;
如果找不到这样的祖先元素,参照对象是视口
定位元素 (positioned element):position 不为 static 的元素,即 position 值为 relative、absolute、fixed 的元素
示例代码:absolute、absolute_技巧
子绝父相
在绝大数情况下,子元素的绝对定位都是相对于父元素进行定位
如果希望子元素相对于父元素进行定位,又不希望父元素脱标,常用解决方案是:
- 父元素设置
position: relative
(让父元素成为定位元素,而且父元素不脱离标准流)
子元素设置position: absolute
- 简称为 “子绝父相”
示例代码:子绝父相
练习 - 蒙版
实现代码:absolute练习
绝对定位技巧
绝对定位元素 (absolutely positioned element)
position
值为 absolute 或者 fixed 的元素
对于绝对定位元素来说:
- 定位参照对象的宽度 = left + right + margin-left + margin-right + 绝对定位元素的实际占用宽度
- 定位参照对象的高度 = top + bottom + margin-top + margin-bottom + 绝对定位元素的实际占用高度
如果希望绝对定位元素的宽高和定位参照对象一样,可以给绝对定位元素设置以下属性
left: 0、right: 0、top: 0、bottom: 0、margin:0
如果希望绝对定位元素在定位参照对象中居中显示,可以给绝对定位元素设置以下属性
left: 0、right: 0、top: 0、bottom: 0、margin: auto
- 另外,还得设置具体的宽高值(宽高小于定位参照对象的宽高)
元素的层叠
示例代码:元素的层叠_01、元素的层叠_02
CSS属性 - z-index
z-index 属性用来设置定位元素的层叠顺序(仅对定位元素有效)
- 取值可以是正整数、负整数、0
比较原则:
- 如果是兄弟关系
z-index 越大,层叠在越上面
z-index 相等,写在后面的那个元素层叠在上面 - 如果不是兄弟关系
各自从元素自己以及祖先元素中,找出最邻近的 2 个定位元素进行比较
而且这 2 个定位元素必须有设置 z-index 的具体数值
示例代码:z-index_01、z-index_02
【重识 HTML + CSS】定位相关推荐
- 【重识 HTML + CSS】知识点目录
重识 HTML + CSS 前言 基本 HTML 标签 基本 CSS 属性 CSS 选择器 CSS 特性 HTML 列表.表格.表单 HTML 元素类型 盒子模型相关知识点 Photoshop 简单使 ...
- 【重识 HTML + CSS】项目实战
项目实战 常见项目目录 CSS Reset CSS 编码规范 浏览器私有前缀 CSS 知识补充 CSS 属性 - white-space CSS 属性 - text-overflow image-se ...
- 【重识 HTML + CSS】浮动
浮动 CSS 属性 - float 浮动的规则 浮动的应用 浮动存在的问题:高度坍塌 清浮动的常见方法 CSS 属性 - clear 各种定位方案对比 博文集合:[重识 HTML + CSS]知识点目 ...
- 【重识 HTML + CSS】背景相关知识点
background 背景 CSS 属性 - 背景 CSS 属性 - background-image 设置元素背景图片 CSS 属性 - background-repeat 设置背景图片是否平铺 C ...
- 【重识 HTML + CSS】CSS 选择器
CSS 选择器 selector 元素选择器 (type selectors):div {} 通用选择器 (universal selector):* {} id 选择器 (id selectors) ...
- 【重识 HTML + CSS】基本 CSS 属性
[重识 HTML + CSS] CSS 简介 内联样式.文档样式表.外部样式表 @charset.@import 注释 HTML 和 CSS 的编写准则 设置网页的图标 常用 CSS 属性 初识 CS ...
- 【重识 HTML + CSS】网页基础知识、基本 HTML 标签
重识 HTML + CSS 网页的基础知识 网页的显示过程 缓存(cache)技术 浏览器内核 常用 HTML 元素 DOCTYPE 文档说明 html 元素:根元素 lang 属性 head 元素: ...
- 【重识 HTML + CSS】官方文档的阅读
官方文档 CSS 属性的描述 CSS 属性的取值 组合 (combinators) 出现次数 (multipliers) 类型 (types) < number >.< intege ...
- 【重识 HTML + CSS】Photoshop 简单使用
Photoshop Photoshop 简介 常用功能 常用面板 常用设置 单位设置 标尺设置 颜色模式设置 移动工具设置 增加画布大小 常用快捷键 矩形选框工具 (D) 裁剪工具.切片工具 (C) ...
最新文章
- 远望智库未来产业研究院与资本实验室联合发布《2021全球区块链应用市场报告》...
- 2017计算机科技贡献奖,2017年度科技创新贡献奖评审结果公布
- android decorview动画,Android窗口机制(二)Window,PhoneWindow,DecorView,setContentView源码理解...
- windows2000 ,windowsXP和windows2003共享页面文件
- java 配置嵌套事务_Spring 事务嵌套的配置
- gitlab与已安装nginx(tengine)冲突解决方案,使用自己安装的nginx(tengine)
- gson读取json字符串_Java:JSON(Gson)从JSON字符串获取值
- easyui打开新的选项卡_Jquery Easyui选项卡组件Tab使用详解(10)
- 3种方法实现http虚拟主机
- 一个切图仔的工作日常
- 在ubuntu下安装和配置vsftpd
- armbian n1 桌面_Armbian5.89桌面版安装OpenMediaVault教程
- 素数表的C++实现:快速进行素数筛选(埃氏筛法)
- [硬件基础]开关电源和线性稳压器的优缺点?
- 详解win7升级win10原来的软件还能用吗
- 怎么在csdn中找到自己发布的帖子
- 子曰:中庸之为德也,其至矣乎!民鲜久矣。
- Ural 2037. Richness of binary words (打表+构造)
- 计算机基础练习题(包含答案)
- 阿南达医药科技宣布FDA批准了针对阿片类用药障碍(OUD)的新药临床试验申请
热门文章
- 普通人赚钱方法,千万别想靠创业,就能一次翻身
- 聪明女人的七个致富之道,学会它你也能成为人人羡慕的小富婆
- cte sql_为什么我的CTE这么慢?
- SQL Server系统数据库–模型数据库
- Visual Studio Code(VS Code)入门
- sql server高可用_SQL Server 2019常规可用性和安装概述
- 使用PowerShell和Windows任务计划程序备份Linux SQL Server数据库
- mysql 如何对表排序_学习MySQL:对表中的数据进行排序和过滤
- 给html元素绑定单击和双击事件
- python3.6 与MYSQL的安装与连接