HTML5 定位详解:相对定位、绝对定位和固定定位

news2025/5/16 19:01:39
  在HTML5和CSS中,定位(positioning)是控制元素在页面上位置的重要机制。主要有四种定位方式:静态定位(static)、相对定位(relative)、绝对定位(absolute)和固定定位(fixed)。下面我将详细讲解这三种非静态定位方式,并提供相应的源代码示例。

1. 相对定位 (Relative Positioning)

特点:

  • 元素相对于其正常位置进行偏移

  • 不会脱离文档流,原来的空间仍然保留

  • 使用 top、right、bottom、left 属性进行定位

  • 常用于微调元素位置或作为绝对定位元素的参照

  • <!DOCTYPE html>
    <html>
    <head>
    <style>
    .relative-box {
      position: relative;
      left: 50px;
      top: 20px;
      width: 200px;
      height: 100px;
      background-color: lightblue;
      border: 2px solid blue;
    }
    </style>
    </head>
    <body>
    <h2>相对定位示例</h2>
    <p>这是一个普通段落。</p>
    <div class="relative-box">这个div使用了相对定位,向右移动50px,向下移动20px。</div>
    <p>注意相对定位元素原来的空间仍然保留。</p>
    </body>
    </html>

    2. 绝对定位 (Absolute Positioning)

    特点:

  • 元素相对于最近的已定位祖先元素(非static)进行定位

  • 如果没有已定位祖先,则相对于初始包含块(通常是html元素)

  • 完全脱离文档流,不占据空间

  • 使用 top、right、bottom、left 属性进行精确定位

  • 常用于创建浮动元素、对话框等

    <!DOCTYPE html>
    <html>
    <head>
    <style>
    .container {
      position: relative;
      width: 400px;
      height: 200px;
      background-color: #f0f0f0;
      border: 2px solid gray;
    }
    
    .absolute-box {
      position: absolute;
      right: 20px;
      bottom: 10px;
      width: 150px;
      height: 80px;
      background-color: lightcoral;
      border: 2px solid red;
    }
    </style>
    </head>
    <body>
    <h2>绝对定位示例</h2>
    <div class="container">
      这是一个相对定位的容器
      <div class="absolute-box">这个div使用了绝对定位,相对于容器定位在右下角。</div>
    </div>
    </body>
    </html>

    3. 固定定位 (Fixed Positioning)

    特点:

  • 元素相对于浏览器窗口进行定位

  • 不随页面滚动而移动

  • 完全脱离文档流

  • 常用于导航栏、返回顶部按钮等需要固定在屏幕某处的元素

    <!DOCTYPE html>
    <html>
    <head>
    <style>
    .fixed-box {
      position: fixed;
      right: 20px;
      bottom: 20px;
      width: 100px;
      height: 50px;
      background-color: lightgreen;
      border: 2px solid green;
      text-align: center;
      line-height: 50px;
    }
    </style>
    </head>
    <body>
    <h2>固定定位示例</h2>
    <p>向下滚动页面,右下角的按钮会固定在相同位置。</p>
    <div style="height: 2000px;">很多内容...</div>
    <div class="fixed-box">固定按钮</div>
    </body>
    </html>

    三种定位方式的主要区别

    特性相对定位 (relative)绝对定位 (absolute)固定定位 (fixed)
    参照物自身原始位置最近的已定位祖先浏览器窗口
    文档流保留原空间脱离文档流脱离文档流
    滚动影响随页面滚动随祖先元素滚动不随页面滚动
    常见用途微调元素位置、作为定位上下文弹出层、浮动元素导航栏、固定按钮
    z-index可应用可应用可应用
<!DOCTYPE html>
<html>
<head>
<style>
body {
  font-family: Arial, sans-serif;
  margin: 0;
  padding: 20px;
}

.container {
  position: relative;
  width: 80%;
  height: 300px;
  margin: 30px auto;
  background-color: #f5f5f5;
  border: 2px dashed #333;
  padding: 20px;
}

.relative-box {
  position: relative;
  left: 50px;
  top: 20px;
  width: 200px;
  height: 100px;
  background-color: rgba(173, 216, 230, 0.7);
  border: 2px solid blue;
}

.absolute-box {
  position: absolute;
  right: 30px;
  top: 50px;
  width: 150px;
  height: 80px;
  background-color: rgba(240, 128, 128, 0.7);
  border: 2px solid red;
}

.fixed-box {
  position: fixed;
  left: 20px;
  top: 20px;
  width: 120px;
  height: 60px;
  background-color: rgba(144, 238, 144, 0.7);
  border: 2px solid green;
  text-align: center;
  line-height: 60px;
}

.sticky-box {
  position: sticky;
  top: 10px;
  width: 100%;
  height: 50px;
  background-color: rgba(255, 255, 0, 0.7);
  border: 2px solid orange;
  text-align: center;
  line-height: 50px;
  margin-top: 20px;
}

.long-content {
  height: 1500px;
  margin-top: 30px;
  padding: 20px;
  background-color: #eee;
}
</style>
</head>
<body>
<div class="fixed-box">固定定位</div>

<h1>CSS定位方式演示</h1>

<div class="sticky-box">粘性定位(Sticky)</div>

<div class="container">
  <div class="relative-box">相对定位</div>
  <div class="absolute-box">绝对定位</div>
  <p>这是一个相对定位的容器,包含相对定位和绝对定位的元素。</p>
</div>

<div class="long-content">
  <p>向下滚动页面,观察不同定位元素的行为...</p>
  <p>固定定位元素始终在窗口固定位置。</p>
  <p>粘性定位元素在到达指定位置时会粘住。</p>
</div>
</body>
</html>

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

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

相关文章

OpenCv高阶(4.0)——案例:海报的透视变换

文章目录 前言一、工具函数模块1.1 图像显示函数1.2 保持宽高比的缩放函数1.3 坐标点排序函数 二、透视变换核心模块2.1 四点透视变换实现 三、主流程技术分解3.1 图像预处理3.2 轮廓检测流程3.3 最大轮廓处理 四、后处理技术4.1 透视变换4.2 形态学处理 五、完整代码总结 前言…

光谱相机的图像预处理技术

光谱相机的图像预处理技术旨在消除噪声、增强有效信息&#xff0c;为后续分析提供高质量数据。 一、预处理流程与技术要点 ‌辐射校正‌ ‌辐射定标‌&#xff1a;将图像灰度值转换为绝对辐射亮度&#xff0c;常用反射率法、辐亮度法和辐照度法消除传感器响应差异&#xff0…

k8s监控方案实践补充(一):部署Metrics Server实现kubectl top和HPA支持

k8s监控方案实践补充&#xff08;一&#xff09;&#xff1a;部署Metrics Server实现kubectl top和HPA支持 文章目录 k8s监控方案实践补充&#xff08;一&#xff09;&#xff1a;部署Metrics Server实现kubectl top和HPA支持一、Metrics Server简介二、Metrics Server实战部署…

嵌入式调试新宠!J-Scope:免费+实时数据可视化,让MCU调试效率飙升!

&#x1f4cc; 痛点直击&#xff1a;调试还在用“断点打印”&#xff1f; 嵌入式开发中&#xff0c;你是否也经历过这些崩溃瞬间&#xff1f; 想实时观察变量变化&#xff0c;代码里插满printf&#xff0c;结果拖垮系统性能&#xff1f; 断点调试打断程序运行&#xff0c;时序…

微信小程序学习之搜索框

1、第一步&#xff0c;我们在index.json中引入vant中的搜索框控件&#xff1a; {"usingComponents": {"van-search": "vant/weapp/search/index"} } 2、第二步&#xff0c;直接在index.wxml中添加布局&#xff1a; <view class"index…

Altium Designer AD如何输出PIN带网络名的PDF装配图

Altium Designer AD如何输出PIN带网络名的PDF装配图 文描述在Altium Designer版本中设置焊盘网络名时遇到的问题&#xff0c;网络名大小不一致&#xff0c;部分PAD的网络名称未显示&#xff0c;可能涉及字符大小设置和版本差异。 参考 1.AD导出PCB装配图 https://blog.csd…

VMware虚拟机 安装 CentOS 7

原文链接: VMware虚拟机 安装 CentOS 7 安装准备 软件: VMware Workstation Pro 17.6.3 镜像: CentOS-7.0-1406-x86_64-DVD.iso 我打包好放这了&#xff0c;VMware 和 CentOS7 &#xff0c;下载即可。 关于VMware Workstation Pro 17.6.3&#xff0c;傻瓜式安装即可。 CentO…

Python训练打卡Day22

复习日&#xff1a; 1.标准化数据&#xff08;聚类前通常需要标准化&#xff09; scaler StandardScaler() X_scaled scaler.fit_transform(X) StandardScaler() &#xff1a;这部分代码调用了 StandardScaler 类的构造函数。在Python中&#xff0c;当你在类名后面加上括号…

Cold Diffusion: Inverting Arbitrary Image Transforms Without Noise论文阅读

冷扩散&#xff1a;无需噪声的任意图像变换反转 摘要 标准扩散模型通常涉及两个核心步骤&#xff1a;图像降质 &#xff08;添加高斯噪声&#xff09;和图像恢复 &#xff08;去噪操作&#xff09;。本文发现&#xff0c;扩散模型的生成能力并不强烈依赖于噪声的选择&#xf…

嵌软面试每日一阅----通信协议篇(二)之TCP

一. TCP和UDP的区别 可靠性 TCP&#xff1a;✅ 可靠传输&#xff08;三次握手 重传机制&#xff09; UDP&#xff1a;❌ 不可靠&#xff08;可能丢包&#xff09; 连接方式 TCP&#xff1a;面向连接&#xff08;需建立/断开连接&#xff09; UDP&#xff1a;无连接&#xff0…

机器学习 --- 模型选择与调优

机器学习 — 模型选择与调优 文章目录 机器学习 --- 模型选择与调优一&#xff0c;交叉验证1.1 保留交叉验证HoldOut1.2 K-折交叉验证(K-fold)1.3 分层k-折交叉验证Stratified k-fold 二&#xff0c;超参数搜索三&#xff0c;鸢尾花数据集示例四&#xff0c;现实世界数据集示例…

AGI大模型(15):向量检索之调用ollama向量数据库

这里介绍将向量模型下载到本地,这里使用ollama,现在本地安装ollama,这里就不过多结束了。直接从下载开始。 1 下载模型 首先搜索模型,这里使用bge-large模型,你可以根据自己的需要修改。 点击进入,复制命令到命令行工具中执行。 安装后查看: 2 代码实现 先下载ollama…

什么是Agentic AI(代理型人工智能)?

什么是Agentic AI&#xff08;代理型人工智能&#xff09;&#xff1f; 一、概述 Agentic AI&#xff08;代理型人工智能&#xff09;是一类具备自主决策、目标导向性与持续行动能力的人工智能系统。与传统AI系统依赖外部输入和显式命令不同&#xff0c;Agentic AI在设定目标…

day 17 无监督学习之聚类算法

一、聚类流程 1. 利用聚类发现数据模式 无监督算法中的聚类&#xff0c;目的就是将数据点划分成不同的组或 “簇”&#xff0c;使得同一簇内的数据点相似度较高&#xff0c;而不同簇的数据点相似度较低&#xff0c;从而发现数据中隐藏的模式。 2. 对聚类后的类别特征进行可视…

时源芯微| KY键盘接口静电浪涌防护方案

KY键盘接口静电浪涌防护方案通过集成ESD保护元件、电阻和连接键&#xff0c;形成了一道有效的防护屏障。当键盘接口受到静电放电或其他浪涌冲击时&#xff0c;该方案能够迅速将过电压和过电流引导至地&#xff0c;从而保护后续电路免受损害。 ESD保护元件是方案中的核心部分&a…

CodeBuddy编程新范式

不会写&#xff1f;不想写&#xff1f; 腾讯推出的CodeBuddy彻底解放双手。 示例 以下是我对CodeBuddy的一个小体验。 我只用一行文字对CodeBuddy说明了一下我的需求&#xff0c;剩下的全部就交给了CodeBuddy&#xff0c;我需要做的就是验收结果即可。 1.首先CodeBuddy会对任…

小刚说C语言刷题—1088求两个数M和N的最大公约数

1.题目描述 求两个正整数 M 和 N 的最大公约数(M&#xff0c;N都在长整型范围内&#xff09; .输入 输入一行&#xff0c;包括两个正整数。 输出 输出只有一行&#xff0c;包括1个正整数。 样例 输入 45 60 输出 15 2.参考代码(C语言版) #include <stdio.h> …

【LLIE专题】基于码本先验与生成式归一化流的低光照图像增强新方法

GLARE: Low Light Image Enhancement via Generative Latent Feature based Codebook Retrieval&#xff08;2024&#xff0c;ECCV&#xff09; 专题介绍一、研究背景二、GLARE方法阶段一&#xff1a;正常光照代码本学习&#xff08;Normal-Light Codebook Learning&#xff09…

[MySQL数据库] SQL优化

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

网络编程epoll和udp

# epoll模型核心要点## 1. epoll核心概念### 1.1 高效IO多路复用- 监视列表与激活列表分离- 内核使用红黑树存储描述符- 边缘触发模式(EPOLLET)支持### 1.2 事件触发机制- **水平触发(LT)**&#xff1a;- 默认模式&#xff0c;类似select/poll- 数据未读完持续触发事件- **边缘…