【CSS】 position : static | absolute | relative | fixed | sticky

news2024/11/25 12:35:57

目录

  • 1️⃣前言
  • 2️⃣内容
    • 2.1、什么是定位?
    • 2.2、为什么需要定位?
    • 2.3、如何使用定位?
      • 2.3.1、定位的组成
      • 2.3.2、static
      • 2.3.3、relative
      • 2.3.4、absolute
      • 2.3.5、fixed
      • 2.3.6、sticky
    • 2.4、什么是 z-index ?
    • 2.5、z-index 属性的取值
    • 2.6、将绝对定位的盒子居中
    • 2.7、定位属性的特殊性
  • 3️⃣写在最后

1️⃣前言

大家好,我是翼同学。今天笔记的内容是:

  • 定位

2️⃣内容

2.1、什么是定位?

定位就是使用position属性,用于规定元素的定位类型。

position属性的具体取值有五种:

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

2.2、为什么需要定位?

定位是我们在网页布局中常用的方法。当标准流或浮动都无法满足我们的布局需求时,使用定位可以很好的解决一些问题。

举个例子,当我们需要在页面中自由地移动某个盒子的位置,并且还能压住其他的元素,覆盖在其上面,那么我们就可以使用定位属性。又比如当我们拉动滚动条时,浏览器的可视窗口内,要求某元素是固定在某个位置不动的,这也可以利用定位属性来做。

2.3、如何使用定位?

2.3.1、定位的组成

完整的定位布局方式包含了:

  • 定位属性:指定了元素的定位方式(有五种取值:staticrelativefixedabsolute sticky
  • 位偏移属性:指定了元素的最终位置(有四种位偏移属性:toprightbottomleft

注意事项:

  • 只有当元素设置了position属性,才可以使用位偏移属性。
  • 对于不同定位方式的元素,其位偏移的工作方式是不同的。

2.3.2、static

position: static;

事实上这个静态定位是比较少用到的,我们了解即可。

因为当我们设置元素的定位属性为static时,该元素也不会拥有什么特殊的定位方式,这也就是元素在默认情况下的定位方式,即按照页面的正常布局流的方式来定位。需要注意的是,当元素的定位属性设置为static后,位偏移属性将不起作用。


2.3.3、relative

position: relative;

如果我们需要对某个元素进行自由地移动位置,那么就可以使用相对定位,即relative。简单来说,当元素设置为position: relative; 后,其可以通过位偏移属性来调整位置,并相对于正常位置进行定位。

另外,相对定位的元素的位偏移方式是相对它原来的位置来进行偏移的,并且没有脱离标准流的位置,后面的元素仍然占有原先的位置。

举个例子:

HTML结构如下:

在这里插入图片描述

CSS样式如下:

效果如下:

添加了相对定位后,我们就可以随意移动盒子的位置。如下所示:

在这里插入图片描述

盒子2距离原先的位置的上方50px,距离左边50px


2.3.4、absolute

position: absolute;

绝对定位指的是元素在移动位置的时候,是相对于祖先元素而言的。与相对定位不同。

绝对定位的特点是:

  • 绝对定位的元素会根据最近一级的定位祖先元素为参考进行定位;(如果没有祖先元素或者祖先元素都没有设置定位属性,则以文档body为参考基准设置偏移属性)
  • 绝对定位的元素会移出正常文档流,也就是说不再占有原先的位置;
  • 绝对定位的元素可以设置外边距(margins),且不会与其他边距合并。

有时我们会将父级盒子设置为相对定位relative,用于限制子盒子的显示。而子盒子如果不用占有位置,则可以设置为绝对定位absolute,此时子盒子也不会影响到其他兄弟盒子。


2.3.5、fixed

固定定位的使用场景也很常见。

position: fixed;

固定定位的元素是相对于浏览器可视窗口为基准而定位的,使用固定定位后意味着该元素将固定在页面的某个位置,即使滚动页面,该元素也始终位于同一位置。

同样的,我们使用位偏移属性toprightbottomleft来控制定位元素的位置。

另外需要注意的是,固定定位的元素也不再占有原先的位置,也就是脱离标准布局流。我们可以将固定定位看出特殊的绝对定位。


2.3.6、sticky

粘性定位可以认为是相对定位和固定定位的粘合。

position: sticky;

特点如下:

  • 以浏览器的可视窗口为参照点进行移动元素(这也是固定定位的特点)
  • 粘性定位的元素可占有原先的位置,即不脱标(这也是相对定位的特点)
  • 使用粘性定位时,必须给到位偏移的值。

举一个使用场景的例子,比如导航栏,当页面滚动时,该导航栏的表现像相对定位元素一样,直到页面滑动到某个位置时,该导航栏就固定住了。这种效果就可以用粘性定位来做。

简单来说,粘性元素就类似在相对定位和固定定位之间切换。(起初是相对定位,直到达到设置的位偏移量后切换为固定定位,此时位置保持不变)


2.4、什么是 z-index ?

当我们添加了定位后,元素开始发生层叠,如果我们拥有不止一个定位元素,那么此时如何决定哪些元素放在哪一层,哪个元素放在最顶层等,都可以用z-index属性来解决。

让我们想象一下,之前我们都是通过x轴和y轴来讨论网页元素的布局位置,此时又多了一个z轴,其垂直于网页并指向用户,每个定位元素都通过设置z轴的值来决定在z轴上的位置,数值越大便越往上走,越小则越往下移动。需要注意,默认情况下,定位的元素都具有 z-indexauto

因此简单来说,z-index属性就是用于更改position属性为非static的元素的堆叠顺序,并确定该元素是否创建新的局部层叠上下文。


2.5、z-index 属性的取值

该属性的取值有三种:

  1. 字符值:auto
  2. 整数值:0, 1, 2, -1, 100等都可以。
  3. 全局值:inheritinitialunset

注意事项:

  • z-index属性的取值是不用加单位的;
  • 如果不同定位元素z-index属性的取值相同,则根据书写顺序,后来者居上。
  • z-index属性的取值为auto时,则盒子不会创建一个新的本地堆叠上下文。在当前堆叠上下文中生成的盒子的堆叠层级和父级盒子相同。
  • z-index属性的取值为整数值时,表示为当前堆叠上下文中的堆叠层级。注意,该元素会创建一个堆叠层级为 0 的本地堆叠上下文,此时该元素的后代元素的z-index属性是不会跟该元素的外部元素的z-index属性进行对比。

2.6、将绝对定位的盒子居中

加了绝对定位的盒子是不能通过margin: 0 auto;进行水平居中,但是可以通过以下方法来实现水平居中:

  1. left: 50%;,将盒子的左侧移动到父级元素的水平中心位置;
  2. margin-left: ?px;,将盒子向左移动自身宽度的一半即可。

通过这两个属性的设置,就可以实现绝对盒子的水平居中。


2.7、定位属性的特殊性

  1. 块级元素添加绝对定位或固定定位后,如果不给宽度或高度,则默认大小为内容是大小;
  2. 行内元素添加绝对定位或固定定位后,就可以直接设置高度或宽度。
  3. 绝对定位的元素(或固定定位)是不会触发外边距margin的合并问题。

3️⃣写在最后

好了,今天的笔记就记到这里。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/765075.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker本地镜像发布到阿里云

我们构建了自己的镜像后,可以发布到远程镜像提供给其他人使用,比如发布到阿里云 使用build/commit生成新的镜像,并生成自己镜像的版本标签tag,此新的镜像在自己的本地库中,使用push可以将镜像提交到阿里云公有库/私有库…

阿里云推出“ModelScopeGPT”大模型调用工具,再添新贵

阿里云近日对外宣布将要推出其首款大模型调用工具——“魔搭GPT(ModelScopeGPT)”,从而为使用者们提供更为优质的人工智能应用支持。而作为阿里云人工智能产品家族中的新成员,这一创新工具也将进一步扩展阿里云在人工智能领域的影…

对抗网络GAN详解:GAN训练不稳定解决方法、GAN中使用的深度学习技巧、GAN使用任务领域、GAN资料大全整理

不建议用博弈论思想 (game theory) 去理解对抗网络,减弱生成器 G 与判别器 D 间的对抗属性有利于稳定训练。不要把判别器理解成一个分类器 (Discriminator, Classifier),让判别器回归判别属性,像 Critic 那样输出一个评分。这样能让判别器为生…

总结SPI、I2C、UART三者的区别以及有关知识

SPI(串行外设接口),I2C(串行总线接口)和UART(通用异步收发器)是三种常用的通信协议,用于在不同的设备之间进行数据传输。 目录 三者的区别: 单工,半双工&am…

windows10 搭建hadoop环境,并且使用hadoop命令

hadoop 环境创建 1. 八、window搭建spark IDEA开发环境 按照步骤安装完 2. windows下安装和配置hadoop 配置环境变量,注意JAVA_HOME路径,修改后,重启电脑,不重启容易报错!!! ​ 新建dat…

Kubernetes - kubeadm部署

Kubernetes - kubeadm部署 1 环境准备1.1 在各个节点上配置主机名,并配置 Hosts 文件1.2 关闭防护墙,禁用selinux,关闭swap1.3 配置免密登录1.4 配置内核参数1.5 配置br_netfilter 2. 安装K8s2.1 安装docker(各节点)2.2 安装K8s组件(各节点)2…

泛型和Object类的区别

文章目录 使用的时机为什么集合类要是用泛型而不用Object如何将List< Object >aa转成List< User >bb使用泛型的好处&#xff1a;泛型标记符 使用的时机 泛型&#xff1a;如果我确定要用哪个对象&#xff0c;并且使用到这个对象里面的属性&#xff0c;选择用泛型&a…

疯狂数据结构-栈-Java

概念 基本概念解读 当谈到 "栈" 时&#xff0c;它是一种遵循后进先出&#xff08;Last In, First Out&#xff0c;LIFO&#xff09;原则 的有序集合。这意味着最后入栈的元素首先被弹出&#xff0c;而最早入栈的元素最后被弹 出。 在栈中&#xff0c;只能对最上面的…

物联网(IoT):连接未来的万物之网

引言&#xff1a; 物联网&#xff08;Internet of Things&#xff0c;简称IoT&#xff09;是指通过各种智能设备和传感器&#xff0c;使物体能够互联互通、收集和共享数据的网络。随着科技的不断进步和智能设备的普及&#xff0c;物联网的应用呈现出爆发式增长&#xff0c;对各…

【文末送书 - 数据分析之pandas篇④】- DataFrame数据合并

向阳花花花花 - 个人主页 迄今所有人生都大写着失败&#xff0c;但并不妨碍我继续向前 Python 数据分析专栏 正在火热更新中 &#x1f525; 文章目录 一、concat二、append三、merge3.1 没有属性相同时3.2 只有一个属性相同时1.一对一合并2.一对多合并3.多对多合并 3.3 有多个…

爬楼梯,假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

题记&#xff1a; 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1 阶 1 阶2 阶 示例…

mysql开启binlog并配置定期删除以及文件大小,删库跑路之数据恢复

一、开启并binlog日志并配置 1、配置文件 [mysqld] #设置3306端口 port 3306 # 设置mysql的安装目录 basedirC:\\JJS\\software\\mysql-5.7.41-winx64\\mysql-5.7.41-winx64 # 允许最大连接数 max_connections200 # 服务端使用的字符集默认为8比特编码的latin1字符集 chara…

Vue前端生成UUID

基础使用 当使用Vue.js生成UUID时&#xff0c;我们可以使用 uuid 库来帮助我们生成通用唯一标识符&#xff08;UUID&#xff09;。UUID是一个128位的唯一标识符&#xff0c;它可以用于唯一标识对象、实体或数据。 以下是在Vue.js中生成UUID的详细步骤&#xff1a; 首先&…

SpringBoot——自动装配之@Import

文章目录 前言ImportImport 的作用1、Import(MyDemo1.class) 将某个对象加载至bean容器中2、Import一个类 该类实现了ImportSelector, 重写selectImports方法该方法返回了String[]数组的对象&#xff0c;数组里面的类都会注入到spring容器当中3、Import一个类&#xff0c;该类实…

Premiere Pro 2023(23.5) Mac

Premiere Pro是一个业界领先的视频编辑软件&#xff0c;旨在帮助用户快速、高效地制作和编辑专业质量的视频内容。作为Creative Cloud套装中的一部分&#xff0c;Premiere Pro具有丰富的功能和工具&#xff0c;可应对各种视频编辑需求。 Premiere Pro的主要特点包括多个视频和音…

Unity游戏源码分享-Unity版本的经典斗地主游戏完整源码

Unity游戏源码分享-Unity版本的经典斗地主游戏完整源码 工程地址&#xff1a; https://download.csdn.net/download/Highning0007/88057828

css+js实现点击特效效果

话不多说&#xff0c;先上效果图 实现代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title…

详细进行wrnchAI 与OpenPose 的姿势检测估计系统的各项性能比较

本文将对wrnchAI 与OpenPose的性能进行比较。我们评估了人体姿势估计系统,并通过比较 wrnchAI 与 OpenPose 的以下参数来报告我们的发现: 准确性运算速度系统要求型号尺寸其他特性 移动支持跟踪支持。绿屏分割。支持应用程序开发。许可易于设置和使用披露:我们从 wrnch 收…

Java - 集合

开篇 数组和集合对比 数组的不足: 1、长度开始时必须指定&#xff0c;而且一旦指定&#xff0c;不能修改&#xff0c;灵活性不够 2、保存的必须为同一类型的元素 3、使用数组进行增删元素的方法比较麻烦 集合 1、可以动态的保存任意多个对象 2、提供一系列操作对象的方法…

基于ResNet50算法实现图像分类识别

概要 在本文中将介绍使用Python语言&#xff0c;基于TensorFlow搭建ResNet50卷积神经网络对四种动物图像数据集进行训练&#xff0c;观察其模型训练效果。 一、目录 ResNet50介绍 图片模型训练预测 项目扩展 二、ResNet50介绍 ResNet50是一种基于深度卷积神经网络&#xff…