【前端就业课 第二阶段】CSS 零基础到实战(04)定位

若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我,若你是真心学习可以送你书籍,指导你学习,给予你目标方向的学习路线,无套路,博客为证。

一、定位

定位分为相对定位以及绝对定位。

相对定位可以理解为在 HTML 中,元素会依照原有的顺序进行显示,通过相对距离(例如左右距离多少)的方式使这些元素进行位置的显示。

绝对定位可以理解为,在 HTML 中,元素并不会按照有序的方式进行排列,需要依靠自身给予的定位信息决定元素出现在 HTML 页面中的位置。

1.1 文档流

我们在了解定位前,需要了解什么是文档流。

在 HTML 中,默认情况下一个网页是多个元素从上而下自动进行排列而成,并且是一行一行组成,这些行中的元素则是从左往右默认进行排列,当元素超过其宽度大小则会进行换行,而这就是文档流。

而定位就是指对某个元素显示于在文档流(页面)中的某个位置,又或使某个元素脱离文档流进行显示,而在此所属的脱离则是表示某元素不存在于文档流中,具体是如何咱们接下来详细说明。

1.2 position 属性

在 HTML 中通过 position 属性对网页中的元素进行定位,position 属性支持以下 5 个值:

  • static(默认)
  • relative
  • absolute
  • fixed
  • sticky

在本章开始时,了解了相对定位和绝对定位,而后又了解了 position 定位的属性值,这些值对应了相对定位和绝对定位,例如:

  • 相对定位的 position 属性值有 relative
  • 绝对定位的值有 absolute 、fixed 、sticky

其中使用 static 与 relative 定位元素,其元素不会脱离文档流,因为是相对定位,需要在有序的元素排序中使用相对的定位使其进行排列,而使用 absolute 、fixed 、sticky 定位将会使元素脱离文档流。这些元素都使用 left、top、right、bottom 进行定位(relative 也使用 left、top、right、bottom 进行定位),其作用如下:

  • left:距离左侧距离多少
  • top:距离顶部距离多少
  • right:距离右侧距离多少
  • bottom:距离底部距离多少

1.3 relative

position 属性为 relative 时,将会根据 left、top、right、bottom 进行定位,例如以下代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>文档流</title><style>div{width: 50%;height: 60px;background-color: black;}.relative {width: 300px;top: 10px;position: relative;background-color: aqua;}</style>
</head>
<body><div></div><div class="relative"></div>
</body>
</html>

以上代码中定义了 div 的默认宽高,给予了正常 div 容器的背景色为黑色,随后给予了一个类 relative 为 relative 定位,使用该类后,其定位将会为 relative ;在该类中,重新定义了宽度为 300px,对应的高度则是依旧是整体定义的 div 高度,使用了 top 属性表示距离头部距离为 10px,并且给予了淡青色为背景颜色,在页面中显示如下:

在这里插入图片描述
我们可以明显的看到淡青色的 div 距离顶部有一定的距离,接着咱们在对应的css 中增加 right 属性:
在这里插入图片描述
此时将会看到,在页面中淡青色的元素将会往左侧索入,因为在当前 div 右侧无元素,但增加了距离右侧的距离,那么此时只会往左侧缩入:
在这里插入图片描述
我们将 right 属性改为 left,该元素将会距离左侧有一定的距离:
在这里插入图片描述
其结果如下:
在这里插入图片描述
此时我们再将 left 改成 bottom 将会与顶部正常文档流的 div 发生重叠:
在这里插入图片描述

结果如下:
在这里插入图片描述
此时我们还需要注意使用 relative 时会出现的一个情况:使用 relative 后,即时发生了偏移覆盖掉了(以上示例情况)其他元素,其本身所占的位置依旧占据,例如如下示例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>文档流</title><style>div{width: 50%;height: 60px;background-color: black;}.relative {width: 300px;bottom: 10px;position: relative;background-color: aqua;}</style>
</head>
<body><div></div><div class="relative"></div><div class="relative" style="top: 50px;"></div><div></div></body>
</html>

以上代码中新增了一个 div,并且使其距离顶部 50px:
在这里插入图片描述
此时这个div 将会往下移动覆盖掉下部分的 div,但是其本身的位置还是存在,我们可以通过示例看出:
在这里插入图片描述

index-z

在使用绝对定位时,若发生了覆盖,想使其中一个定位元素现实于另外一个定位元素之上,可以使用 z-index 属性,该属性可以更改当前页面元素的层级,z-index 的属性值为数字,数字越大则表示层级越大,可以理解层级为覆盖层数,0最小表示在最下层,数字越大层级越大,层架大的数覆盖于小的数,此时给该 div 设置 z-index 为 1则会显示在上层,z-index 的值默认为0:

<body><div class="relative"></div><div class="relative" style="top: 20px;"></div><div class="relative" style="background-color: red;"></div>
</body>

以上代码为 css 样式相同时发生了 div 重叠,效果如下:
在这里插入图片描述
在此时需要第二个 div 不再被红色覆盖,可以在样式中添加 z-index 属性:
在这里插入图片描述
其效果如下:
在这里插入图片描述

1.4 absolute 绝对定位

绝对定位是脱离文档流而存在的,如何脱离咱们可以接下来的示例进行查看。

首先我们需要知道一个点,绝对定位的父元素不能是 static ,也就是 position不能是 static,而 static 是position 的默认值,也就是说直咱们需要一个 div 设置为 relative 后再对其进行子元素 设置定位为 absolute:

<style>div{width: 50%;height: 160px;background-color: black;}.relative {width: 600px;position: relative;background-color: aqua;}.absolute{width: 300px;height: 60px;position: absolute;background-color: rgb(255, 0, 128);}
</style><body><div class="relative"><div class="absolute"></div><div class="absolute" style="background-color: rgb(38, 0, 255);"></div></div>
</body>

其页面效果如下:

在这里插入图片描述
咱们可以看到,我们设置了两个 absolute 的 div 元素在页面中只显示了第二个背景色为蓝色的 div:
在这里插入图片描述
其原因是定位为 absolute 定位将会使其元素脱离文档流,此时两个元素是进行了重叠,咱们只需要使用 top 这些定位属性使其显示即可:
在这里插入图片描述
显示效果如下:
在这里插入图片描述
如何使用 absolute 将会在之后文章进行讲解。

1.5 fixed 固定于窗口的定位

在定位为 fixed 时,该div 将会悬浮于整个文档流内容之上,例如在浏览一些网页时,某些可视区域(例如导航、搜索、广告等)将会一直固定于页面之上,示例如下:

<style>div{width: 50%;height: 160px;background-color: black;}.relative {width: 600px;position: relative;background-color: aqua;}.fixed  {position: fixed ;width: 100%;height: 10px;top: 20px;background-color:rgb(255, 145, 0);}
</style>
<body><div><div class="fixed"></div></div><div class="relative"><div class="absolute" style="background-color: rgb(38, 0, 255);top: 30px;"></div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
</body>

此时示例中添加了 fixed ,并且为了使页面高度高于可视高度,增加了多个div ,其效果如下:
请添加图片描述
使用了 fixed 定位后,其元素将会固定于页面之上,而且不管你是否设置 fixed 在何位置,其效果都是一致的,例如:
在这里插入图片描述
在效果演示中还可以看到,其 absolute 内容覆盖了 fixed 元素,只需要在 fixed 元素中增加 z-index 属性即可。

1.6 sticky 可在文档流中使用

之前使用的 fixed 在文档流中使用并“无效”,实现这个效果咱们可以使用 sticky,代码示例如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>文档流</title><style>div{width: 50%;height: 160px;background-color: black;}.sticky  {position: sticky ;top: 20px;background-color:rgb(0, 0, 0);width: 100%;height: 60px;}span{display:inline-block;width: 100%;color: aliceblue;text-align: center;height: 60px;line-height: 60px;}</style>
</head>
<body><div></div><div></div><div style="height: auto;width: 100%;"><div class="sticky"><span>这里是 sticky 定位内容——《1_bit 的前端课》</span></div><div style="background-color: rgb(17, 175, 69);width: 100%;"></div><div style="background-color: rgb(85, 17, 175);width: 100%;"></div><div style="background-color: rgb(175, 17, 101);width: 100%;"></div><div style="background-color: rgb(175, 146, 17);width: 100%;"></div><div style="background-color: rgb(17, 175, 175);width: 100%;"></div><div style="background-color: rgb(190, 219, 23);width: 100%;"></div><div style="background-color: rgb(175, 17, 114);width: 100%;"></div></div>
</body>
</html>  

为了方便显示我 sticky 定位中添加了 span 并且给予了 span 样式,在 span 样式中转变了其元素类型 display:inline-block;,随后给予了字体颜色白色、text-align: center;、height: 60px;line-height: 60px;,其中 text-align: center;使其内容水平居中显示、height: 60px;设置 span 高度、line-height: 60px;设置其行高,行高与高度相同其内容将会水平居中,最终效果如下:
请添加图片描述

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

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

相关文章

Android TextView设置ClickableSpan 点击结尾空白位置也响应点击的问题

解决办法&#xff0c;在后边紧接着追加一个0宽度字符&#xff1a; builder.append("\u200b"); 相关知识&#xff1a; “\u200b” 为 Unicode Character ‘ZERO WIDTH SPACE’ (U200B)&#xff0c;可用于内容标识&#xff0c;不占位数&#xff08;宽度0&#xff0…

【MATLAB统计分析与应用100例】案例017:matlab读取Excel数据,进行变量系统聚类分析

1. 变量系统聚类分析结果 2. matlab完整代码 (1)读取数据,并转为距离向量 [X,textdata] = xlsread(examp09_03.xls); % 从Excel文件中读取数据 y = 1 -

WinForm 之 窗口最小化到托盘及右键图标显示菜单

日常开发有时候需要实现窗口最小化到系统托盘&#xff0c;本文就来讲讲该如何实现winfrom最小化到系统托盘&#xff0c;本例子基于VS2019编写。用C#开发winform桌面程序时&#xff0c;程序启动后&#xff0c;默认是显示在桌面而且在任务栏中有对应的图标。有的时候&#xff0c;…

C语言学习笔记--函数与指针

1. 函数类型 (1)C 语言中的函数有自己特定的类型,这个类型由返回值、参数类型和参数个数共同决定。如 int add(int i,int j)的类型为 int(int,int)。 (2)C 语言中通过 typedef 为函数类型重命名 typedef type name(parameter list);//如 typedef int f(int,int); 2. 函数指针 (…

C语言试题五十七之假定输入的字符串中只包含字母和*号。请编写函数function,它的功能是:删除字符串中所有*号。在编写函数时,不得使用c语言提供的字符串函数。

📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 假定输入的…

Wordpress:将图片、post等的URL转换为相对路径

2019独角兽企业重金招聘Python工程师标准>>> 例如上传一张图片&#xff0c;其地址是可能 http://127.0.0.1/wp-content/uploads/2015/12/1_.png&#xff0c; 问题是如果我们通过其他的电脑通过wordpress主机的公网IP访问这张图片时会提示找不到。 最好的处理方法是不…

MySQL数据库的优化(下)MySQL数据库的高可用架构方案

【51CTO独家特稿】如果单MySQL的优化始终还是顶不住压力时&#xff0c;这个时候我们就必须考虑MySQL的高可用架构(很多同学也爱说成是MySQL集群)了&#xff0c;目前可行的方案有&#xff1a;一、MySQL Cluster 优势&#xff1a;可用性非常高&#xff0c;性能非常好。每份数据至…

【MATLAB统计分析与应用100例】案例018:matlab读取Excel数据,进行K均值聚类分析

文章目录 1. K均值聚类分析结果2. matlab完整代码(1)读取数据,并进行标准化变换(2)选取初始凝聚点,进行聚类(3)绘制轮廓图1. K均值聚类分析结果 2. matlab完整代码 (1)读取数据,并进行标准化变换 [X, textdata] = xlsread(examp09_04.xls

C# 扩展object类 将string强制转换成int

扩展代码&#xff1a; public static class ClassExtend{/// <summary>/// 将object强制转化为int/// </summary>/// <param name"o">要强制转换的object</param>/// <param name"defaultValue">o为null或者转换失败的默认值…

Android之华为手机打开app奔溃提示java.io.FileNotFoundException: res/drawable/abc_vector_test.xml

1、问题 新建立的项目,华为手机运行起来提示如下 06-24 18:24:03.175 13314 13314 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.appsinnova.android.booming/com.appsinnova.android.picper.MainActivity}: android.content…

CSS 零基础到实战(05)布局、盒子模型、弹性盒子【前端就业课 第二阶段】

若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我&#xff0c;若你是真心学习可以送你书籍&#xff0c;指导你学习&#xff0c;给予你目标方向的学习路线&#xff0c;无套路&#xff0c;博客为证。 一、流动布局 流动布局有3种布局模型&#xff0c;分别是流动布局&…

DVWA系列之24 high级别上传漏洞

最后再来分析high级别的代码&#xff1a;这里首先有一条语句需要理解&#xff1a;$uploaded_ext substr($uploaded_name, strrpos($uploaded_name, .) 1);在这条语句里&#xff0c;首先利用strrpos() 函数来查找“.”在变量$uploaded_name中出现的位置&#xff0c;然后将得到…

WPF 基础控件之 TreeView 样式

其他基础控件1.Window2.Button3.CheckBox4.ComboBox5.DataGrid 6.DatePicker7.Expander8.GroupBox9.ListBox10.ListView11.Menu12.PasswordBox13.TextBox14.RadioButton15.ToggleButton16.Slider TreeView 实现下面的效果1&#xff09;TreeView来实现动画&#xff1b;Grid 分两…

CSS文本样式

装饰&#xff1a; text-decoration&#xff1a;line-through&#xff08;贯穿线&#xff09;&#xff0c;underline&#xff08;下划线&#xff09;&#xff0c;overline&#xff08;上划线&#xff09; 对齐&#xff1a; text-align&#xff1a;center&#xff08;居中&#x…

利用系统错误日志监控磁盘健康状况

一、故障现象 这个星期出现了两块磁盘不能读写&#xff0c;后面通过系统日志查看&#xff0c;关键字“EXT4-fs error对应某个磁盘”&#xff0c;因此利用zabbix&#xff0c;把系统日志抓取出来&#xff0c;作告警&#xff01; 二、步聚 1.机器太多&#xff0c;用到ansible的pla…

【MATLAB统计分析与应用100例】案例019:matlab读取Excel数据,进行K均值聚类分析

文章目录 1. 读取数据,并进行标准化变换2. 进行模糊C均值聚类3. 查看聚类结果4. K均值聚类分析结果1. 读取数据,并进行标准化变换 % 从文件examp09_05.xls中读取数据 [xdata,textdata] = xlsread(examp09_05.xls); % 提取元胞数组textdata第1列的第4行至最后一行,即城市名称…

HTML Animation 【前端就业课 第二阶段】CSS 零基础到实战(06)

若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我&#xff0c;若你是真心学习可以送你书籍&#xff0c;指导你学习&#xff0c;给予你目标方向的学习路线&#xff0c;无套路&#xff0c;博客为证。 一、Animation 基础 使用 Animation 可以设置帧动画&#xff0c;与 tr…

史上最全的Visual Studio Code安装C/C++环境,若不行头砍给你。

一、下载Visual Studio Code安装 下载链接地址 二、安装C/C++插件 输入c/c++, 然后点击那里install 三、下载MinGW配置环境变量 下载地址 进入网站后不要点击 "Download Lasted Version",往下滑,找到最新版的 "x86_64-posix-seh"。

C# 11 新特性:泛型 Attribute

之前使用JsonConverterAttribute&#xff0c;我们可以为任意类型自定义 Json 序列化。例如&#xff1a;[JsonConverter(typeof(UserJsonConverter))] public class User {public string Name { get; set; }public override string ToString(){return Name;} }public class User…

highcharts动态获取数据生成图表问题

动态获取数据说白点就是从后台传值到前台&#xff0c;前台把这些值赋值给x轴与y轴&#xff08;这里指的是你X轴与Y轴都是变化的数据&#xff0c;如果你的X轴是固定的&#xff0c;像时间等等的那就另说&#xff09;。 柱状图的动态传值&#xff1a; //获取后台数据var x [];//…