0

0

带你深入了解css定位的知识

不言

不言

发布时间:2018-11-05 16:08:40

|

2328人浏览过

|

来源于php中文网

原创

当人们对css布局不熟悉时,就会倾向于倾向于定位。定位似乎是一个容易理解的概念。在表面上,您可以准确指定块的位置和位置。虽然定位比首次出现的要复杂一些。在定位成为很好的选择之前,有一些事情需要让新手来了解一下,一旦你对css定位的工作原理有了更深入的了解,您就可以通过定位来实现一些很好的效果。

CSS Box模型和位置类型

为了理解定位,首先需要了解css盒模型css中的每个元素都包含在一个矩形框中,每个框都有一个为内容定义的区域,在该内容周围填充,一个边框包围两者,边框外边缘将一个框与下一个框分开,可以在下图中看到它。(课程推荐:css视频教程

360截图20181105154819350.jpg

定位方案定义了框在整体布局中的位置以及每个框如何影响其周围的其他框。定位方案包括普通文档流,浮点数和几种类型的定位元素。

CSS位置属性需要的5个值:

立即学习前端免费学习笔记(深入)”;

position: absolute

position: relative

position: fixed

position: static

position: inherit

我先来简单介绍一下最后两个属性position: static和position: inherit

静态定位是默认设置。具有position:static的任何元素都在普通文档流中。盒模型定义了它所处的位置以及它如何影响其他框的规则。

静态定位元素将忽略属性的任何值,top,right,bottom和left以及任何z-index声明。为了使用任何这些属性,元素必须应用绝对,相对或固定定位。

像所有css属性一样继承只是当前元素接收与其父元素相同的值。

下面我们来详细看一下前面的三个属性position: absolute、position: relative、position: fixed

绝对定位(position: absolute)

绝对定位的元素完全从正常的文档流程中删除。就它们周围的元素而言,绝对定位的元素不存在。就好像元素的display属性设置为none。如果您想保留空间以便其他元素不会移动以填充它,您需要以其他方式对其进行说明。

您可以通过顶部,右侧,底部和左侧属性设置绝对定位元素的位置。您通常只定义其中的两个,顶部或底部,左侧或右侧。默认情况下,每个都有一个自动设置值。

理解绝对定位的关键是了解起源的位置。如果top设置为20px,那么你应该问的问题是20px。

绝对定位的元素相对于第一个父元素定位,该元素具有应用于静态的静态位置。如果链上的父元素没有满足该条件,则绝对定位的元素相对于文档窗口定位。咦?

所有关于亲戚的谈话都会让人感到困惑,尤其是当我们还没有谈到相对定位时。

当您在元素上设置position:absolute时,css表示要查看父元素,如果它还应用了定位(非静态),则绝对定位元素的原点是父元素的左上角。

如果父级没有应用定位,则转到父级的父级并检查是否已应用定位。如果确实如此,则该元素的左上角是我们绝对定位元素的原点。如果没有,则继续向上直到DOM,直到到达定位元素或者无法到达浏览器窗口的最外边缘。

相对定位(position: relative)

相对定位的元素基于相同的顶部,右侧,底部和左侧属性定位,但是仅从它们通常坐的位置移位。从某种意义上说,增加相对定位类似于添加一个非常重要的差异。相对定位元素周围的元素表现为不存在这种转变。他们忽略了它。

可以把它想象成一个鬼图像从实际图像中移开一点点。相对定位的元素表现得像是重影,而所有其他元素的行为就好像它是原始的非重影图像。这允许元素彼此重叠,因为相对定位的元素可以移动到由其相邻元素占据的空间中。

相对定位的元素从正常的文档流中取出,但仍会影响其周围的元素。这些元素就像定位元素仍处于正常文档流中一样。

Android 基础知识入门 pdf版
Android 基础知识入门 pdf版

Android 基础知识入门 pdf,介绍什么是Android、Android可以完成的功能、Android架构、Android应用程序框架、Android函数库等,从开始安装Android开始,到环境配置,到一步步编写复杂的应用程序,本书将带你了解基础但有内涵的Android入门知识。

下载

我们不需要询问相对定位在哪里这个问题。答案始终是正常的文件流程。就元素而言,有点像添加边距,就相邻元素而言,有点像什么都不做。

固定定位

固定定位的作用与绝对定位类似,但存在一些差异。

首先,固定定位元素总是相对于浏览器窗口定位,并采用现在熟悉的顶部,右侧,底部和左侧属性。这是定位反叛忽略它的父元素。

第二个区别是名称中固有的。固定定位元素是固定的。页面滚动时它们不会移动。你告诉元素应该在哪里,它永远不会移动。也许毕竟不是那么叛逆。

在某种意义上,固定定位元素可能类似于固定背景图像,其中包含块始终是浏览器窗口。如果在主体上设置背景图像,它的行为大致类似于固定定位元素,其位置的精度较低。

背景图像也无法改变它们在第三维度中的位置,这将我们带到z-index。

Z-Index,突破平面

该页面是一个二维平面。它有宽度和高度。我们生活在一个三维世界,其中也包括深度和z-index就是那个深度。额外的维度移入和移出页面。

360截图20181105160358343.jpg

较高的z索引位于较低的z索引之上并向页面的前方移动。相反,较低的z-index位于较高的z-index后面并向后退到页面的后面。

没有z-index,定位元素有点无聊。他们使用它们没有额外的维度,但是如果应用了z-index,你可以做一些有创意的事情并允许一个元素位于另一个元素的顶部或后面。默认情况下,所有元素的z-index均为0,并且允许分配负数。

Z-Index实际上比我在这里描述的要复杂得多。现在请记住额外维度和堆叠顺序的基本概念,并记住只有定位元素才能使用z-index属性。

定位问题

您可以通过定位元素看到一些常见问题,每个问题都需要一两句话。

1.您不能将position属性和float属性同时应用于同一元素。两者都是使用什么定位方案的冲突指令。如果将两者都添加到同一元素中,则期望在css代码中最后出现的元素是使用的元素。

2.边距不会在绝对定位的元素上坍塌。假设您有一个边距为20px的段落应用。在段落的正下方是应用了30px的边距顶部的图像。段落和图像之间的空间不是50px(20px + 30px),而是30px(30px> 20px)。这称为折叠边距。两个边距合并(或折叠)成为一个边距。

绝对定位的元素没有折叠的边距,这可能使它们的行为与预期不同

IE让z-index有点不对劲。在IE6中,select元素总是出现在堆栈的顶部,无论它的z-index和其周围的其他元素的z-index如何。

IE6和IE7具有堆叠上下文的另一个z-index问题。IE查看应用了定位的最外层父级,以确定哪个元素组位于堆栈的顶部,而不是查看每个单独的元素。

<div style = “ z-index :0 ” >
  <p style = “ z-index :10 ” > </ p>
</ DIV>
<img  style = “ z-index :5 ” / alt="带你深入了解css定位的知识" >

您会期望段落位于堆栈的顶部,因为它具有最高的z-index。但是IE6和IE7会将图像放在段落的顶部,因为它会看到两个不同的堆栈。一个用于div,一个用于图像。图像具有比div更高的z-index,因此将位于div内的所有内容之上。

总结

position属性设置一个元素,以根据其中一个css定位方案进行操作。您可以在已定位元素上设置绝对值,相对值,固定值,静态值(默认值)和继承值。

定位方案(包括css定位元素)定义了框在布局中的位置以及相邻元素如何受定位元素影响的规则。

z-index只能应用于定位元素。它为页面添加第三维并设置元素的堆栈顺序

位置属性似乎很容易掌握,但它的工作方式与它在表面上看起来有点不同。您可能认为相对定位更可能是绝对定位。在开发布局时,通常需要使用浮点数,并在要从布局中突破的特定元素上使用定位。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

1

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

21

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

106

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

50

2026.03.04

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

87

2026.03.03

C++高性能网络编程与Reactor模型实践
C++高性能网络编程与Reactor模型实践

本专题围绕 C++ 在高性能网络服务开发中的应用展开,深入讲解 Socket 编程、多路复用机制、Reactor 模型设计原理以及线程池协作策略。内容涵盖 epoll 实现机制、内存管理优化、连接管理策略与高并发场景下的性能调优方法。通过构建高并发网络服务器实战案例,帮助开发者掌握 C++ 在底层系统与网络通信领域的核心技术。

27

2026.03.03

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

79

2026.02.28

Golang 工程化架构设计:可维护与可演进系统构建
Golang 工程化架构设计:可维护与可演进系统构建

Go语言工程化架构设计专注于构建高可维护性、可演进的企业级系统。本专题深入探讨Go项目的目录结构设计、模块划分、依赖管理等核心架构原则,涵盖微服务架构、领域驱动设计(DDD)在Go中的实践应用。通过实战案例解析接口抽象、错误处理、配置管理、日志监控等关键工程化技术,帮助开发者掌握构建稳定、可扩展Go应用的最佳实践方法。

61

2026.02.28

Golang 性能分析与运行时机制:构建高性能程序
Golang 性能分析与运行时机制:构建高性能程序

Go语言以其高效的并发模型和优异的性能表现广泛应用于高并发、高性能场景。其运行时机制包括 Goroutine 调度、内存管理、垃圾回收等方面,深入理解这些机制有助于编写更高效稳定的程序。本专题将系统讲解 Golang 的性能分析工具使用、常见性能瓶颈定位及优化策略,并结合实际案例剖析 Go 程序的运行时行为,帮助开发者掌握构建高性能应用的关键技能。

50

2026.02.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1万人学习

微信小程序开发之API篇
微信小程序开发之API篇

共15课时 | 1.3万人学习

php-src源码分析探索
php-src源码分析探索

共6课时 | 0.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号