CSS定位(如果想知道CSS有关定位的知识点,那么只看这一篇就足够了!)

news2024/10/6 16:31:17

        前言:在网页布局的时候,我们需要将想要的元素放到指定的位置上,这个时候我们就可以使用CSS中的定位操作。


✨✨✨这里是秋刀鱼不做梦的BLOG

✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客

先让我们看一下本篇文章的大致内容:

目录

什么是定位

1.相对定位

2.绝对定位

3. 固定定位

4. 粘性定位

5. 定位层级

6. 定位的特殊应用

        (1)让定位元素的宽充满包含块

       (2)让定位元素在包含块中居中


什么是定位

        在了解有哪些定位之前,让我们先来了解一下什么是定位:(以下为官网解释

CSS中 position属性(即定位)用于指定一个元素在文档中的定位方式。left、right、top和bottom属性则决定了该元素的最终位置。

从官网的解释中我们可以知道,CSS中 position属性(即定位)是用于调整html中元素的位置的。

        在上文中,我们已经了解了什么是定位,在下文我们会讲解不同的定位方式,首先来看第一个,相对定位。

1.相对定位

        首先我们要考虑的就是如何对所想要的元素开启相对定位:(方法如下)

给元素设置 position:relative 即可实现相对定位。

在上文所说,定位即调整html中的元素的位置,那么开启了相对定位之后,我们如何对其位置进行调整呢?

我们只需要使用 left 、right 、top 、bottom 四个属性调整位置即可。

那么相对定位的参考点在哪里?

其相对的是自己原来的位置。

案例演示:

html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./2024.5.8.css">
</head>
<body>
    <div class="outer">
        <div class="inner">这是内部元素</div>
    </div>
</body>
</html>

CSS代码:

.outer {
    width: 400px;
    height: 300px;
    background-color: rgb(176, 176, 176);
    border: 2px solid black;
}
.inner {
    width: 100px;
    height: 100px;
    background-color: orange;
    border: 2px solid black;
    position: relative;
    left: 50px;
    top: 50px;
}

从上图我们就可以看到内部橙色背景的元素偏离了自己原来的位置横竖各50px,这样我们就大致的了解了相对定位的使用了!

补充:相对定位的特点

1.  不会脱离文档流,元素位置的变化,只是视觉效果上的变化,不会对其他元素产生任何影响。
2.  定位元素的显示层级比普通元素高,无论什么定位,显示层级都是一样的。默认规则是:
        (1)定位的元素会盖在普通元素之上。
        (2)都发生定位的两个元素,后写的元素会盖在先写的元素之上。
3.  left 不能和right 一起设置, top 和bottom 不能一起设置。
4.  相对定位的元素,也能继续浮动,但不推荐这样做。
5.  相对行为的元素,也能通过margin 调整位置,但不推荐这样做。

注意:绝大多数情况下,相对定位会与绝对定位配合使用。(下文会讲)!

这样我们就了解了所有关于相对定位的内容了。

2.绝对定位

        对于绝对定位,我们如何设置绝对定位呢?

给元素设置 position: absolute 即可实现绝对定位。

那么开启了绝对定位之后,我们如何对其位置进行调整呢?

我们只需要使用 left 、right 、top 、bottom 四个属性调整位置即可。

绝对定位的参考点在哪里呢?

参考它的包含块。

看到这,有读者就会问了,什么是包含块,在之前的学习中并没有讲解过什么是包含块啊?(以下即是包含块的概念)

包含块:

1. 对于没有脱离文档流的元素:包含块就是父元素;
2. 对于脱离文档流的元素:包含块是第一个拥有定位属性的祖先元素(如果所有祖先都
没定位,那包含块就是整个页面)。

从包含块概念的第二条中,我们就可以理解上文讲解相对定位时候所说的绝大多数情况下,相对定位会与绝对定位配合使用了)

案例演示:

html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./2024.5.8.css">
</head>
<body>
    <div class="outer">
        <div class="inner">这是内部元素</div>
    </div>
</body>
</html>

CSS代码:

.outer {
    width: 400px;
    height: 300px;
    background-color: rgb(176, 176, 176);
    border: 2px solid black;
}
.inner {
    width: 100px;
    height: 100px;
    background-color: orange;
    border: 2px solid black;
    position: absolute;
    right: 50px;
    top: 50px;
}

在CSS代码中,内部元素的所有父类都没有开启定位,所有这里就是如果所有祖先都没定位,那包含块就是整个页面。

如果给其父类开启定位,CSS代码:

.outer {
    width: 400px;
    height: 300px;
    background-color: rgb(176, 176, 176);
    border: 2px solid black;
    position: relative;
}
.inner {
    width: 100px;
    height: 100px;
    background-color: orange;
    border: 2px solid black;
    position: absolute;
    right: 50px;
    top: 50px;
}

这样我们就大致的了解了绝对定位的使用规则了!

补充:绝对定位元素的特点:

1.  脱离文档流,会对后面的兄弟元素、父元素有影响。
2.  left 不能和right 一起设置, top 和bottom 不能一起设置。
3.  绝对定位、浮动不能同时设置,如果同时设置,浮动失效,以定位为主。
4.  绝对定位的元素,也能通过margin 调整位置,但不推荐这样做。
5.  无论是什么元素(行内、行内块、块级)设置为绝对定位之后,都变成了定位元素。

这样我们就了解了所有关于绝对定位的内容了。

3. 固定定位

         对于绝对定位,我们如何设置固定定位呢?

给元素设置 position: fixed 即可实现固定定位。

那么开启了固定定位之后,我们如何对其位置进行调整呢?

我们只需要使用 left 、right 、top 、bottom 四个属性调整位置即可。

固定定位的参考点在哪里呢?

参考它的视口。

什么是视口?—— 对于PC 浏览器来说,视口就是我们看网页的那扇“窗户”。(如图)

案例演示:

html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./2024.5.8.css">
</head>
<body>
    <div class="outer">
        <div class="inner">这是内部元素</div>
    </div>
</body>
</html>

CSS代码:

.outer {
    width: 400px;
    height: 300px;
    background-color: rgb(176, 176, 176);
    border: 2px solid black;
    position: relative;
}
.inner {
    width: 100px;
    height: 100px;
    background-color: orange;
    border: 2px solid black;
    position: fixed;
    top: 0px;
    right: 0px;
}

我们会发现,即使其父元素开启了定位,但是固定定位的参考点也是视口。

注意:当浏览页面顶部时,定位元素处于右上角。在滚动后,它相对于视口仍处于同一位置。

这样我们就大致的了解了固定定位的使用规则了!

补充:固定定位元素的特点

1.  脱离文档流,会对后面的兄弟元素、父元素有影响。
2.  left 不能和right 一起设置, top 和bottom 不能一起设置。
3.  固定定位和浮动不能同时设置,如果同时设置,浮动失效,以固定定位为主。
4.  固定定位的元素,也能通过margin 调整位置,但不推荐这样做。
5.  无论是什么元素(行内、行内块、块级)设置为固定定位之后,都变成了定位元素。

这样我们就了解了所有关于固定定位的内容了。

4. 粘性定位

         对于绝对定位,我们如何设置绝对定位呢?

给元素设置 position:sticky 即可实现粘性定位。

那么开启了粘性定位之后,我们如何对其位置进行调整呢?

我们只需要使用 left 、right 、top 、bottom 四个属性调整位置即可。

粘性定位的参考点在哪里呢?

离它最近的一个拥有“滚动机制”的祖先元素,即便这个祖先不是最近的真实可滚动祖先。

案例演示:

CSS代码:

.inner {
    height: 50px;
    background-color: orange;
    border: 2px solid black;
    position: sticky;
    top: 10px;
}

粘性定位可以被认为是相对定位和固定定位的混合。元素在跨越特定阈值前为相对定位,之后为固定定位。

在视口滚动到元素 top 距离小于 10px 之前,元素为相对定位。之后,元素将固定在与顶部距离 10px 的位置,直到视口回滚到阈值以下。

这里给读者一段代码,读者可以复制到编译器上尝试一下效果:

html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./2024.5.8.css">
</head>
<body>
    <div>
        <dl>
          <dt>A</dt>
          <dd>Andrew W.K.</dd>
          <dd>Apparat</dd>
          <dd>Arcade Fire</dd>
          <dd>At The Drive-In</dd>
          <dd>Aziz Ansari</dd>
        </dl>
        <dl>
          <dt>C</dt>
          <dd>Chromeo</dd>
          <dd>Common</dd>
          <dd>Converge</dd>
          <dd>Crystal Castles</dd>
          <dd>Cursive</dd>
        </dl>
        <dl>
          <dt>E</dt>
          <dd>Explosions In The Sky</dd>
        </dl>
        <dl>
          <dt>T</dt>
          <dd>Ted Leo & The Pharmacists</dd>
          <dd>T-Pain</dd>
          <dd>Thrice</dd>
          <dd>TV On The Radio</dd>
          <dd>Two Gallants</dd>
        </dl>
      </div>
</body>
</html>

CSS代码:

* {
    box-sizing: border-box;
  }
  
  dl {
    margin: 0;
    padding: 24px 0 0 0;
  }
  
  dt {
    background: #b8c1c8;
    border-bottom: 1px solid #989ea4;
    border-top: 1px solid #717d85;
    color: #fff;
    font:
      bold 18px/21px Helvetica,
      Arial,
      sans-serif;
    margin: 0;
    padding: 2px 0 0 12px;
    position: -webkit-sticky;
    position: sticky;
    top: -1px;
  }
  
  dd {
    font:
      bold 20px/45px Helvetica,
      Arial,
      sans-serif;
    margin: 0;
    padding: 0 0 0 12px;
    white-space: nowrap;
  }
  
  dd + dd {
    border-top: 1px solid #ccc;
  }
  

注意:粘性定位和相对定位的特点基本一致,不同的是:粘性定位可以在元素到达某个位置时将其固定

这样我们就大致的了解了粘性定位的使用规则了!

粘性定位的用处:

粘性定位常用于定位字母列表的头部元素。标示 B 部分开始的头部元素在滚动 A 部分时,始终处于 A 的下方。而在开始滚动 B 部分时,B 的头部会固定在屏幕顶部,直到所有 B 的项均完成滚动后,才被 C 的头部替代。

补充:粘性定位元素的特点

1.  不会脱离文档流,它是一种专门用于窗口滚动时的新的定位方式。
2.  最常用的值是top 值。
3.  粘性定位和浮动可以同时设置,但不推荐这样做。
4.  粘性定位的元素,也能通过margin 调整位置,但不推荐这样做。

这样我们就了解了所有关于粘性定位的内容了。

5. 定位层级

        了解完了不同类型的定位之后,现在让我们了解一下定位的层级(即谁显示在上边,谁显示在下边)

定位层级规定:

1.  定位元素的显示层级比普通元素高,无论什么定位,显示层级都是一样的。
2.  如果位置发生重叠,默认情况是:后面的元素,会显示在前面元素之上。
3.  可以通过 css 属性 z-index 调整元素的显示层级。
4.  z-index 的属性值是数字,没有单位,值越大显示层级越高。
5.  只有定位的元素设置 z-index 才有效。
6.  如果z-index 值大的元素,依然没有覆盖掉z-index 值小的元素,那么请检查其包含块的层级。

也就是说,我们可以给所需元素设置其定位层级,使其在开启定位中显示在更上层。

6. 定位的特殊应用

说在前面,注意:

1. 发生固定定位、绝对定位后,元素都变成了定位元素,默认宽高被内容撑开,且依然可以设置宽高。
2. 发生相对定位后,元素依然是之前的显示模式。
3. 以下所说的特殊应用,只针对 绝对定位 和 固定定位 的元素,不包括相对定位的元素。

了解完了定位的设置与使用之后,在让我们看一下定位属性的一些特殊应用场景:

        (1)让定位元素的宽充满包含块

1. 块宽想与包含块一致,可以给定位元素同时设置 left 和 right 为0 。

html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./2024.5.8.css">
</head>
<body>
    <div class="outer">
        <div class="inner">这是内部元素</div>
    </div>
</body>
</html>

CSS代码:

.outer {
    width: 400px;
    height: 300px;
    background-color: rgb(176, 176, 176);
    border: 2px solid black;
    position: relative;
}
.inner {
    height: 100px;
    background-color: orange;
    border: 2px solid black;
    position: absolute;
    /* 注意这里不能在设置内部元素的宽度了 */
    left: 0px;
    right: 0px;
}


        这里会有读者会有疑问,上文中不是说了不能同时设置left和right属性吗?如果同时设置不是只会执行left的效果吗?这里为什么又可以了呢?

        这就是定位的特殊运用了,只要我们不对内部元素设置其宽度,我们同时使用left和right属性,就会使其块宽想与包含块一致,但是如果设置了宽度,那么就会遵循不能同时设置left和right属性的规则。

注意:如果想让块宽想与包含块一致,那么这里就不能在设置内部元素的宽度了!

2. 高度想与包含块一致, top 和 bottom 设置为 0 。

html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./2024.5.8.css">
</head>
<body>
    <div class="outer">
        <div class="inner">这是内部元素</div>
    </div>
</body>
</html>

CSS代码:

.outer {
    width: 400px;
    height: 300px;
    background-color: rgb(176, 176, 176);
    border: 2px solid black;
    position: relative;
}
.inner {
    width: 100px;
    background-color: orange;
    border: 2px solid black;
    position: absolute;
    /* 注意这里不能在设置内部元素的高度了 */
    top: 0px;
    bottom: 0px;
}

 

      

       (2)让定位元素在包含块中居中

学习完定位之后,我们就可以使用定位的操作来让定位元素在包含块中居中。

给想要居中的元素设置其CSS代码:

left:0;
right:0;
top:0;
bottom:0;
margin:auto;

案例演示:

html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./2024.5.8.css">
</head>
<body>
    <div class="outer">
        <div class="inner">这是内部元素</div>
    </div>
</body>
</html>

CSS代码:

.outer {
    width: 400px;
    height: 300px;
    background-color: rgb(176, 176, 176);
    border: 2px solid black;
    position: relative;
}
.inner {
    width: 100px;
    height: 100px;
    background-color: orange;
    border: 2px solid black;
    position: absolute;
    left:0;
    right:0;
    top:0;
    bottom:0;
    margin:auto;
}

注意:这里需要设置其内部元素的宽高,要不就会变成充满整个包含块了(由定位元素的特殊运用(一)得出)

这样我们就了解了定位属性的一些特殊应用场景了!

想了解更多的CSS知识-------------------------------------------->CSS_秋刀鱼不做梦的博客-CSDN博客


以上就是本篇文章所有内容了~~~

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

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

相关文章

「YashanDB迁移体验官」Oracle向YashanDB迁移的丝滑体验

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、My…

网络安全公司观察,看F5如何将安全化繁为简

应用无处不在的当下&#xff0c;从传统应用到现代应用再到边缘、多云、多中心的安全防护&#xff0c;安全已成为企业数字化转型中的首要挑战。根据IDC2023年《全球网络安全支出指南》&#xff0c;2022年度中国网络安全支出规模137.6亿美元&#xff0c;增速位列全球第一。有专家…

大模型驱动的新一代 BI 平台,Sugar BI 开启智慧决策新模式

本文整理自 2024 年 4 月 16 日的 2024 百度 Create 大会上的《大模型驱动的新一代 BI 平台如何开启智慧决策》分享。 全文包括了可视化 BI 分析技术架构、智能图表推荐策略与规则设计、Sugar Bot 智能问数的技术实现流程&#xff0c;以及目前的场景应用等。 1 Sugar BI 产…

数据结构-线性表-应用题-2.2-10

1)算法的基本设计思想&#xff1a; 三次翻转&#xff0c;将数组视为ab&#xff08;a代表数组的前p个元素&#xff0c;b代表数组的余下n-p个元素&#xff09; 也可以先将a,b单独翻转&#xff0c;然后再整体翻转 2)使用c语言描述如下&#xff1a; void Reverse(int R[],int l…

【小黑送书—第二十期】>>K邻算法:在风险传导中的创新应用与实践价值(文末送书)

01 前言 在当今工业领域&#xff0c;图思维方式与图数据技术的应用日益广泛&#xff0c;成为图数据探索、挖掘与应用的坚实基础。本文旨在分享嬴图团队在算法实践应用中的宝贵经验与深刻思考&#xff0c;不仅促进业界爱好者之间的交流&#xff0c;更期望从技术层面为企业在图数…

【JAVA |数组】数组定义与使用、常见的Arrays类介绍

目录 一、前言 二、数组的创建和初始化 三、数组的使用 四、数组是引用类型 1.JVM的内存分配 2.与引用类型变量 3.null 五、二维数组 六、Java中Arrays类的常用方法 1. Arrays.fill ->填充数组 2. Arrays.sort ->数组排序 3. Arrays.toString ->数组打印 …

管易云与金蝶K3-WISE对接集成发货单查询2.0打通新增销售出库(红蓝字)

管易云与金蝶K3-WISE对接集成发货单查询2.0打通新增销售出库&#xff08;红蓝字&#xff09; 源系统:管易云 金蝶管易云是金蝶集团旗下以电商和新零售为核心业务的子公司&#xff0c;公司于2008年成立&#xff0c;拥有从事电商及新零售业务相关专业知识工作者超过1000人。为伊利…

ODOO17数据库安全策略一(ODOO17 Database Security Policy I)

ODOO17作为ERP软件&#xff0c;其核心优势在于数据安全。凭借强大的原生安全机制及灵活的配置&#xff0c;确保数据安全无忧&#xff1a; ODOO17, as an ERP software, boasts its significant advantage in exceptional data security performance. It effectively ensures wo…

中国护照照片尺寸分辨率要求及居家自拍制作教程

经常出国的小伙伴都知道&#xff0c;护照照片作为出国旅行的重要身份证明文件&#xff0c;其规格和质量要求非常严格。本文将详细介绍中国护照照片的具体要求&#xff0c;并提供一些实用的居家自拍技巧&#xff0c;帮助您轻松拍出符合规定的护照照片&#xff08;手机和相机居家…

项目解决方案:多台poe摄像机接到3台NVR上,如何进行统一管理

目录 一、概述 二、建设目标及需求 三、设计依据与设计原则 1、先进性与适用性 2、经济性与实用性 3、可靠性与安全性 4、开放性 5、可扩充性 6、追求最优化的系统设备配置 7、提高监管力度与综合管理水平 四、建设方案设计 &#xff08;一&#xff09;系统方案设计…

roblox国际服游戏充值付款订阅Robux套装商城会员,roblox国际服虚拟信用卡充值教程

roblox是一款由Roblox公司开发的大型多人在线游戏创建平台&#xff0c;该平台允许用户设计自己的游戏、物品及衣服&#xff0c;以及游玩自己和其他开发者创建的各种不同类型的游戏。 没有账号注册一个账号&#xff0c;他支持多种平台授权登录&#xff0c;我这里直接选择注册一个…

FlashAttention(flash-attn)安装

FlashAttention&#xff08;flash-attn&#xff09;安装 Flash Attention是一种注意力算法&#xff0c;用于减少这一问题&#xff0c;并更有效地缩放基于转换器的模型&#xff0c;从而实现更快的训练和推理。标准注意力机制使用高带宽内存&#xff08;HBM&#xff09;来存储、…

回归测试?

1. 什么是回归测试&#xff08;Regression Testing&#xff09; 回归测试是一个系统的质量控制过程&#xff0c;用于验证最近对软件的更改或更新是否无意中引入了新错误或对以前的功能方面产生了负面影响&#xff08;比如你在家中安装了新的空调系统&#xff0c;发现虽然新的空…

PaddleOCR使用

最近在项目过程中需要用到文字识别的能力&#xff0c;之前没有接触过。需要对现有的开源能力进行调研和学习。 1. 基本概念 1.1 PaddlePaddle PaddlePaddle 是一个由百度开源&#xff0c;基于 Python 的深度学习框架。PaddlePaddle 针对不同的硬件环境提供了不同的安装包或安…

极验4 一键解混淆

提示&#xff01;本文章仅供学习交流&#xff0c;严禁用于任何商业和非法用途&#xff0c;未经许可禁止转载&#xff0c;禁止任何修改后二次传播&#xff0c;如有侵权&#xff0c;可联系本文作者删除&#xff01; AST简介 AST&#xff08;Abstract Syntax Tree&#xff09;&a…

书名号怎么打?4个输入方法请记好!

“我在电脑上对文档进行编辑时&#xff0c;需要输入书名号&#xff0c;但不知道书名号怎么打。大家平常是怎么输入书名号的呀&#xff1f;可以分享一下吗&#xff1f;” 在撰写文档、编辑文章或发送信息时&#xff0c;我们经常需要用到书名号。书名号主要用于标明书名、篇名、报…

数据库系统概论(超详解!!!)第七节 关系数据库理论

1.问题的提出 关系数据库逻辑设计&#xff1a; 针对具体问题&#xff0c;如何构造一个适合于它的数据模式 针对一个具体问题&#xff0c;构造出一个适合于它的数据模式&#xff0c;即应该构造几个关系&#xff0c;每个关系由哪些属性组成等。 数据库逻辑设计的工具──关系…

Omnity 进展月报 | 2024.4.1-4.30

Omnity 大事摘要 1、Octopus 官宣升级为 Omnity。 2、Omnity 4月28号正式上线&#xff0c;实现BTC 和 ICP 之间跨链转账 Runes 资产。 3、为庆祝上线&#xff0c;以符文 HOPE•YOU•GET•RICH 为资产&#xff0c;发红包快速触达大量用户&#xff0c;体验跨链服务。 4、Omni…

kubebuilder(6)webhook

operator中的webhook也是很重要的一块功能。也是相对比较独立的模块&#xff0c;所以放在后面讲。 webhook是一个callback&#xff0c;注册到k8s的api-server上。当某个特定的时间发生时&#xff0c;api server就会查询注册的webhook&#xff0c;并根据一些逻辑确认转发消息给…

抖音小店是什么?它和直播带货有什么区别和联系?一篇详解!

大家好&#xff0c;我是电商糖果 在网上大家都说抖音的流量大&#xff0c;在抖音做电商比较赚钱。 可是有很多人对抖音电商并不了解。 甚至搞不懂抖音小店是什么&#xff1f;它和直播带货的区别和联系也不清楚。 下面&#xff0c;糖果就来给大家好好解答一下这个问题。 抖音…