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

        前言:在网页布局的时候,我们需要将想要的元素放到指定的位置上,这个时候我们就可以使用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.mzph.cn/pingmian/8258.shtml

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

相关文章

文件一键删除:高效清理电脑空间,批量删除重复文件的步骤与技巧

在数字化时代&#xff0c;我们的电脑中储存了大量的文件&#xff0c;从文档、图片到视频、音频等&#xff0c;各类文件混杂在一起。随着时间的推移&#xff0c;电脑中的文件数量不断增长&#xff0c;重复文件也随之增多&#xff0c;占用了宝贵的硬盘空间。为了高效清理电脑空间…

dvwa靶场Weak Session IDs(弱会话IDs)全难度教程(附代码分析)

Weak Session&#xff08;Security Level: low&#xff09; 漏洞利用 第一次cookie 回包后变成2了 多回几次之后发现是递增关系 那么构造一下payload就可以进行登入 代码分析 <?php$html "";if ($_SERVER[REQUEST_METHOD] "POST") {if (!isset ($…

3D模型素材有哪些常见的用途?

3D模型素材已经成为了设计、游戏开发、电影制作和建筑等领域的重要工具。它们以其独特的形式和丰富的细节&#xff0c;为这些领域的专业人士提供了无尽的创作可能性。 1.建筑和室内设计&#xff1a;在建筑设计中&#xff0c;3D模型可以帮助建筑师更直观地展示设计方案&#xff…

[YOLOv8] 用YOLOv8实现指针式圆形仪表智能读数(一)

最近研究了一个项目&#xff0c;利用python代码实现指针式圆形仪表的自动读数&#xff0c;并将读数结果进行输出&#xff0c;若需要完整数据集和源代码可以私信。 目录 &#x1f353;&#x1f353;1.yolov8实现圆盘形仪表智能读数 &#x1f64b;&#x1f64b;2.仪表目标检测…

ES6-自学01

调用方法读取文件&#xff1a;如果失败就throw抛出err,成功则抛出data 2.使用promise封装&#xff0c;如果失败就改变状态为 reject(err) 如果成功就 resolve(返回成功的值) &#xff0c;然后then,就可以获取返回的值&#xff0c;值toString&#xff08;&#xff09;方法来把…

填报表如何实现电话号码的校验

单元格校验时&#xff0c;只能输入数字和特定字符&#xff08;-&#xff09;&#xff0c;即实现固话和手机号码的校验&#xff0c;保证录入的规范&#xff0c;应如何实现&#xff1f; 解决方案&#xff1a;使用正则表达式实现校验效果&#xff0c;如下图所示&#xff1a; 校验…

Milvus向量数据库(一)Milvus存储byte[]类型源向量数据

两种路线&#xff1a; 第一种是把byte[]转换为List< float >&#xff0c;然后存储到Milvus的floatVector中第二种是把byte[]转换为ByteBuffer&#xff0c;然后存储到Milvus的BinaryVector中 步骤&#xff1a; 我先用的是第一种&#xff0c;但是在转换float过程中&…

IP协议全解析:网络层通信的基石

⭐小白苦学IT的博客主页⭐ ⭐初学者必看&#xff1a;Linux操作系统入门⭐ ⭐代码仓库&#xff1a;Linux代码仓库⭐ ❤关注我一起讨论和学习Linux系统❤ 前言 在数字化时代的浪潮中&#xff0c;网络通信无处不在&#xff0c;它连接着世界的每一个角落&#xff0c;承载着信息的高…

Apache DolphinScheduler 4月简报:社区发展与技术革新速递

各位热爱 DolphinScheduler 的小伙伴们&#xff0c;4 月份的 DolphinScheduler 社区月报更新啦&#xff01;这里将记录 DolphinScheduler 社区每月的重要更新&#xff0c;欢迎关注&#xff01; 月度 Merge 之星 感谢以下小伙伴 4 月为 Apache DolphinScheduler 所做的精彩贡献…

构建 imx6ull sd 卡启动

1. 硬件环境 imx6ull 256MB tf 卡 512 MB 的 ddr&#xff1b; ubuntu 20.04&#xff1b; 芯片默认的启动方式是通过 LCD_DATA0 ~ LCD_DATA23&#xff1b;上下拉方式来确认的&#xff1b; 需要注意的上下拉是 BOOT_CFG1[7] BOOT_CFG1[6] BOOT_CFG1[5] 启动选择 和 BOOT_CF…

HR招聘人才测评,沟通能力和岗位胜任力测评

什么是沟通能力? 沟通能力通常也叫沟通和表达能力&#xff0c;指的是能倾听他人&#xff0c;理解他人的感受、观点&#xff0c;并针对实际场景做出适当合理的反应。沟通能力是一个人的综合体现&#xff0c;包括了他的知识和能力&#xff0c;也包括了思想品德。 沟通能力是…

如何修复显示器或笔记本电脑屏幕的黄色色调?这里提供几种方法

序言 如果你的笔记本电脑屏幕呈淡黄色,则可以启用夜灯功能。该问题也可能源于连接松散的显示电缆、损坏的显卡驱动程序或错误配置的显示器设置。以下是一些故障排除步骤,你可以尝试解决此问题。 禁用夜间模式 夜间模式功能旨在减少显示器的蓝色色调,使屏幕看起来更温暖,…

挤橡机编制机盘笼绞成缆摇盘包膜机PLC数据采集远程监控联网方案

裸铜车间 编制车间 绞线车间 橡缆车间 橡缆车间 橡缆车间 力缆车闻 综合车间 设备名称设备编码、MMH101/RM201/S632拉丝生产线TC21039WGSB-4 48锭卧式高速编制机TC21033JCJX-13DHT中线连退拉丝机TC310636090150三层共挤连硫生产线TC22050电加热蒸汽锅炉TC22100TC22082T…

数据结构学习:栈(详细讲解)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;C语言基本概念 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 &#x1f697;1.对栈概念理解&#xff1a; &a…

力扣刷题Day5——内涵动态规划讲解

题目1&#xff1a; 先来一道很简单的题目&#xff1a; 2697. 字典序最小回文串 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 为了得到字典序最小的回文字符串&#xff0c;对于回文串&#xff0c;就是需要左右的字符相等&#xff0c;而要最小的回文串&#xff…

从开发角度理解漏洞成因(03)

文章目录 JS前端验证 - 文件上传设计浏览器禁用JS&#xff0c;前端绕过文件上传漏洞验证漏洞 Ajax 登录验证&#xff0c;状态回显&#xff0c;状态码设计修改返回包绕过登录验证 通过Ajax 传递数据进行购物验证设计1此漏洞也可以修改状态码绕过 持续更新中… 文章中代码资源已上…

Codeforces Round 943 (Div. 3) A~G1

A.Maximize?&#xff08;枚举&#xff09; 题意&#xff1a; 给你一个整数 x x x。你的任务是找出任意一个整数 y y y ( 1 ≤ y < x ) (1\le y\lt x) (1≤y<x)&#xff0c;使得 gcd ⁡ ( x , y ) y \gcd(x,y)y gcd(x,y)y为最大可能数。 ( 1 ≤ y < x ) (1\le y\lt…

深入解析Python中的`add_argument`用法

深入解析Python中的add_argument用法 在Python编程中&#xff0c;add_argument通常与命令行参数解析库argparse有关。这个库主要用于编写用户友好的命令行接口&#xff0c;其核心功能之一就是通过add_argument方法来指定程序可以接受哪些命令行参数。本篇博客将详细介绍argpar…

【算法练级js+java】重复给定字符n次

题目 Repeats the given string n times.&#xff08;复制指定的字符串n次&#xff09; 期望结果 /** * Repeats the given string n times. * * repeat(‘, 3) * // > **’ * * repeat(‘abc’, 2) * // > ‘abcabc’ * * repeat(‘abc’, 0) * // > “” **/ 代码…

【自动驾驶|毫米波雷达】逻辑化讲清快时间与慢时间傅里叶变换

碎碎念&#xff1a;实习过程中发现在进行雷达知识交流时&#xff0c;大部分同事都会用英文简称代替中文的一些称呼&#xff0c;比如Chirp、FFT等等。起初我觉得是因为很多英伟达、TI芯片的开发教程都是英文的&#xff0c;所以看得多了大家都习惯这样称呼&#xff0c;后来在和指…