【CSS】定位

📝个人主页:爱吃炫迈
💌系列专栏:HTML+CSS
🧑‍💻座右铭:道阻且长,行则将至💗

文章目录

  • 标准流(Normal Flow)
  • 元素定位
  • position属性
  • 静态定位-static
  • 相对定位-relative
  • 固定定位-fixed的
  • 绝对定位-absolute
  • 粘性定位-sticky


标准流(Normal Flow)

默认情况下,元素都是按照normal flow(标准流、常规流、正常流、文档流)进行排布:

  • 从左到右、从上到下按顺序摆放好

  • 默认情况下,互相之间不存在层叠现象

image-20230704140734032

在标准流中,可以使用marginpadding对元素进行定位。

缺点:

  • 设置一个元素的margin或者padding,通常会影响到标准流中其他元素的定位效果
  • 不便于实现元素层叠的效果

如果我们希望一个元素可以跳出标准流,单独的对某个元素进行定位:可以通过position属性来进行设置

元素定位

定位允许从正常的文档流布局中取出元素,并使它们具有不同的行为:

  • 例如放在另一个元素的上面
  • 或者始终保持在浏览器视窗内的同一位置

image-20230704141528689

position属性

利用position可以对元素进行定位,常用取值有5个:staticrelativeabsolutestickyfixed

默认值:

static:默认值,静态定位

使用下面的值,可以让元素变成==定位元素==:

relative:相对定位

absolute:绝对定位

fixed:固定定位

sticky:粘性定位


image-20230704160710908

静态定位-static

position属性的默认值

  • 元素按照normal flow布局
  • left、right、top、bottom没有任何作用

相对定位-relative

  • 元素按照normal flow布局

  • 可以通过left、right、top、bottom进行定位

    • 定位参照对象是元素自己原来的位置
  • leftrighttopbottom用来设置元素的具体位置,对元素的作用如下图所示:

image-20230704143624235

  • 相对定位的应用场景:在不影响其他元素位置的前提下,对当前元素位置进行微调

固定定位-fixed的

  • 元素脱离normal flow(脱离标准流、脱标)
  • 可以通过left、right、top、bottom进行定位
    • 定位参照对象是视口(viewport)
  • 当画布滚动时,固定不动

视口(Viewport):文档的可视区域

画布(Canvas):用于渲染文档的区域,文档内容超出视口范围,可以通过滚动查看

宽高对比:画布>=视口

image-20230704152049553

绝对定位-absolute

  • 元素脱离normal flow(脱离标准流、脱标)
  • 可以通过left、right、top、bottom进行定位
    • 定位参照对象是最邻近的定位祖先元素
    • 如果找不到这样的祖先元素,参照对象是视口

子绝父相

在绝大数情况下,子元素的==绝对定位都是相对于父元素进行定位==

如果希望子元素相对于父元素进行定位,又不希望父元素脱标,常用解决方案是:“子绝父相”

  • 父元素设置position:relative(让父元素成为定位元素,而且父元素不脱离标准流)
  • 子元素设置position:absolute

绝对定位元素的特点

  • 可以随意设置宽高
  • 宽高默认由内容决定
  • 不在受标准流的约束
    • 不再严格按照从上到下、从左到右排布
    • 不再严格区分块级、行内级,块级、行内级的很多特性都会消失
  • 不再给父元素汇报宽高数据
  • 脱标元素内部默认还是按照标准流布局
  • 定位参照对象的宽度=left+right+margin-left+margin-right+绝对定位元素的实际占用宽度
  • 定位参照对象的高度=top+bottom+margin-top+margin-bottom+绝对定位元素的实际占用高度
  • 如果希望绝对定位元素的宽度和定位参照对象一样,可以给绝对定位元素设置以下属性:left:0right:0margin:0
  • 如果希望绝对定位元素的高度和定位参照对象一样,可以给绝对定位元素设置以下属性:top:0bottom:0margin:0
  • 如果希望绝对定位元素在定位参照对象中居中显示,可以给绝对定位元素设置以下属性:
    • left:0right:0top:0bottom:0margin:auto
    • 另外,还得设置具体的宽高值(宽高小于定位参照对象的宽高)

绝对定位案例

image-20230704175724452

// html
<body><div class="item"><div class="top"><img src="./imgs/music_album.jpg" alt="音乐封面" /><a class="cover" href="#"></a><div class="info"><i class="icon"></i><span class="count">2917</span><i class="icon1"></i></div></div><div class="bottom"><a href="#">听首老歌 回味永不褪色的华语经典</a></div></div></body>
// css<style>.item {width: 140px;margin: 0 auto;}.item .top {position: relative;}.item .top img {display: block;}.item .top .cover {position: absolute;top: 0;left: 0;/* width: 140px;height: 140px; */right: 0;bottom: 0;/* 精灵图 */background-image: url(./imgs/music_sprite.png);background-position: 0 0;}.item .top .info {position: absolute;width: 100%;height: 27px;line-height: 27px;left: 0;bottom: 0;font-size: 12px;color: #ccc;background-image: url(./imgs/music_sprite.png);background-position: 0 -537px;}.item .top .info .icon {display: inline-block;width: 14px;height: 11px;background-image: url(./imgs/music_sprite1.png);background-position: 0 -24px;margin: 0 3px 0 10px;}.item .top .info .icon1 {position: absolute;display: inline-block;top: 0;bottom: 0;margin: auto 0;right: 10px;width: 16px;height: 17px;background-image: url(./imgs/music_sprite1.png);background-position: 0 0;}.item .bottom {font-size: 14px;}.item .bottom a {display: inline-block;max-width: 100%;line-height: 1.4;color: #000;vertical-align: middle;text-decoration: none;margin: 8px 0 3px;}</style>

粘性定位-sticky

  • sticky可以看做是相对定位和固定(绝对)定位的结合体;
  • 它允许被定位的元素表现得像相对定位一样,;
  • 直到它滚动到某个阈值点,当达到这个阈值点时, 就会变成固定(绝对)定位;

vertical-align: middle;
text-decoration: none;
margin: 8px 0 3px;
}


# 粘性定位-sticky- sticky可以看做是相对定位和固定(绝对)定位的结合体;
- 它允许被定位的元素表现得像相对定位一样,;
- 直到它滚动到某个阈值点,当达到这个阈值点时, 就会变成固定(绝对)定位;- sticky是相对于最近的滚动祖先包含滚动视口的

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

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

相关文章

Squid代理服务器应用

目录 一、概述 1.代理的工作机制 2.代理服务器的概念 3.作用 4.Squid代理类型 二、安装 Squid 服务 1.编译安装 Squid 2.修改 Squid 的配置文件 3. Squid 的运行控制 4.Squid 服务自动化管理 4.1编写 squid 服务脚本 4.2加入系统服务 三、构建传统代理服务器 1.修…

迈瑞BC系列出图汇总

迈瑞的几个仪器出图需要画图&#xff0c;搞的很费劲&#xff0c;没办法&#xff0c;厂商自己不改&#xff0c;明明有图发Base64串的&#xff0c;就非两个图要自己画&#xff0c;画的方法又描述不清。每个LIS厂商都要浪费很多时间&#xff0c;没什么必要浪费在这种没意义的事情上…

对于大连企业而言如何提升网站的曝光率

对于大连企业而言&#xff0c;提升网站的曝光率是非常重要的&#xff0c;可以通过以下几种方式来实现&#xff1a; 1. 优化网站结构和内容&#xff1a;确保网站的结构清晰&#xff0c;布局合理&#xff0c;并且内容丰富、有吸引力。网站的页面加载速度也要快&#xff0c;以提升…

windows 如何ping ip 加端口号

先在系统中找到 勾选上 和平时的pingip命令不一样了 现在是telnet ip 端口号 先看一组无法ping通端口号的案例 若telnet 127.0.0.1 6379 跳转至一个空白界面 代表ping此ip的端口号成功

JMeter安装RabbitMQ测试插件

目录 前言&#xff1a; 具体实现步骤&#xff1a; 1、ant环境搭建 2、AMQP源码下载 3、拷贝JMeter_core.jar包到JMeter-Rabbit-AMQP插件根目录下 4、修改AMQP插件的配置文件 5、打包 6、RabbitMQ客户端插件下载 7、完成以上&#xff0c;重启JMeter创建线程组就可以看到…

Python 数据类型转换

文章目录 每日一句正能量前言隐式类型转换实例实例 显式类型转换实例实例实例实例 每日一句正能量 在人生的道路上&#xff0c;即使一切都失去了&#xff0c;只要一息尚存&#xff0c;你就没有丝毫理由绝望。因为失去的一切&#xff0c;又可能在新的层次上复得。 前言 有时候&…

Unity与Android交互(4)——接入SDK

【前言】 unity接入Android SDK有两种方式&#xff0c;一种是把Unity的工程导出google project的形式进行接入&#xff0c;另一种是通过把Android的工程做成Plugins的形式进行接入。我们接入SDK基本都是将SDK作为插件的形式接入的。 对我们接入SDK的人来说&#xff0c;SDK也是…

谷歌浏览器Crx插件库-https://crxdl.com/

地址&#xff1a;https://crxdl.com/ postman插件&#xff1a;talend json插件库&#xff1a;csdn插件 抓取视频&#xff1a;猫抓

科技富豪抑郁了

原美团二当家王慧文据说抑郁了 什么能解决抑郁问题&#xff1f; 趣讲大白话&#xff1a;科技富豪也抑郁 【趣讲信息科技216期】 **************************** 王富豪创立光年之外AI公司2个月就休息了 知识解决不了抑郁问题 抑郁是现代社会一个常见的症状 是压力所带来的综合症…

MySql入门操作

一.前节回顾 1.web项目环境配置 2.通用增删改&#xff0c;通用查询方法 3.前台&#xff0c;后台代码显示效果 所有你都理解了吗&#xff1f; 二.Mysql数据库介绍 1.什么是MySQL&#xff1f; MySQL是一种开源的关系型数据库管理系统。它是目前最流行和广泛使用的数据库之一&…

如何禁用usb接口 禁用usb端口的九种方法

USB&#xff08;通用串行总线&#xff09;接口是一种常见的连接设备和计算机的方式。然而&#xff0c;有时候我们可能需要禁用USB接口&#xff0c;以保护电脑上重要数据的安全性或限制用户的访问权限。本文将介绍几种禁用USB接口的方法&#xff0c;包括硬件方法、软件方法、物理…

什么是内存溢出,什么是内存泄漏?

文章目录 一、什么是内存溢出&#xff1f;二、什么是内存泄漏&#xff1f;三、如何避免&#xff1f; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、什么是内存溢出&#xff1f; 假设我们 JVM 中可用的内存空间只剩下 3M&#xff0c;但是我们要创…