【CSS】定位

news2025/2/22 13:13:40

📝个人主页:爱吃炫迈
💌系列专栏: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.coloradmin.cn/o/717510.html

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

相关文章

(免费分享)基于springboot,vue在线小说系统

本系统功能包括&#xff1a; 普通用户端登录注册&#xff0c;小说的分类&#xff0c;日榜&#xff0c;月榜&#xff0c;年榜&#xff0c; 小说的阅读&#xff0c;分章节&#xff0c;小说的评论&#xff0c;收藏&#xff0c;推荐等等&#xff0c;以 及后台小说的维护&#xff0c…

Linux服务器扩容VG时报错 Couldn‘t create temporary archive name

今天扩容磁盘遇到失败报错。 [rootmysql ~]# vgextend rhel /dev/sdc1 Couldnt create temporary archive name. 原因&#xff1a;磁盘使用100%&#xff0c;无法执行挂载&#xff0c;须预留部分空间出来。解决办法&#xff1a;删掉其中无用文件、log日志继续操作即可。释放空间…

SpringBoot+Vue实现文件上传功能

目录 1.后端代码部分&#xff1a; 2.前端代码部分 3.效果展示 1.后端代码部分&#xff1a; RestController RequestMapping("/file") public class FileController {private final String UPLOAD_PATH "D:/OBS/";//这里写上你需要上传的路径&#xff…

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

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

leetcode 110. 平衡二叉树

2023.7.4 平衡二叉树 &#xff0c;经典题目 。需要利用到之前求二叉树高度的思路。 先定义一个求高度的函数&#xff0c;然后使用递归的方式判断左子树和右子树的高度差是否小于等于1&#xff0c;下面上代码&#xff1a; class Solution { public:int get_length(TreeNode* cu…

C语言学习(三十二)---动态内存(一)

在昨天的内容中&#xff0c;我们学习有关结构体和联合体在内存中存储的相关问题&#xff0c;由于粗心&#xff0c;有一个代码重复了&#xff0c;感谢这位朋友的提醒&#xff1a; 现在已经对内容进行了修改&#xff0c;感谢朋友们的支持。 今天我们将学习有关动态内存的相关问…

Android Studio 和 Android Gradle 插件的已知问题

Android Studio 的已知问题 渲染 Compose 预览时出错 从 Android Studio Chipmunk 开始&#xff0c;如果您在问题面板中看到 java.lang.NoSuchFieldError: view_tree_saved_state_registry_owner 或 java.lang.ClassNotFoundException: androidx.savedstate.R$id&#xff0c;…

大势速影:机载激光快速建模测绘装备

实景三维模型高逼真、高真实、高精度的展示地物的几何结构、纹理色彩、空间位置等信息&#xff0c;在当前测绘应急保障、规划等领域具备极大的应用价值。但是&#xff0c;激光雷达和倾斜摄影建模技术均无法较好的满足快速建模应用需求&#xff0c;具体表现在&#xff1a;激光点…

LiDAR SLAM 闭环——BoW3D: Bag of Words for Real-time Loop Closing in 3D LiDAR SLAM

先说总结 现算法已经开源&#xff0c;代码链接&#xff1a; GitHub - YungeCui/BoW3D: [RA-L] BoW3D: Bag of Words for Real-Time Loop Closing in 3D LiDAR SLAM. 背景 SLAM&#xff08;同时定位与地图构建&#xff09;是一种让机器人在构建环境地图的同时&#xff0c;定位…

zk集群启动异常:Error contacting service. It is probably not running.

# ./zkServer.sh status ZooKeeper JMX enabled by default Using config: /opt/aspire/product-kafka3.4/zookeeper/bin/../conf/zoo.cfg Error contacting service. It is probably not running. 查看 是否 iptables 限制了 端口访问&#xff0c; 2181端口&#xff0c; 需要把…

浅谈企业信息化能源管理系统的设计与应用

安科瑞 华楠 摘要: 我国的经济社会不断发展&#xff0c;对环境和资源造成的压力也越来越大。为了促进经济和社会的协调发展&#xff0c;可持续发展的理念被提出&#xff0c;企业信息化能源管理系统应运而生。将上述管理系统应用在企业之中&#xff0c;可以节约能源&#xff0…

Linux下输出带背景颜色和字体颜色的文本

最近在用Go语言开发项目&#xff0c;在跟踪Go底层实现时发现控制台输出的文本有样式&#xff0c;发现linux下在控制台输出可以控制文本样式&#xff0c;在此做个整理。 目录 1.发现 2.命令行输出测试 3.Linux下样式文本 1.发现 以下是我的一段Go代码&#xff1a;test_exec…

2023年07月IDE流行度最新排名

点击查看最新IDE流行度最新排名&#xff08;每月更新&#xff09; 2023年07月IDE流行度最新排名 顶级IDE排名是通过分析在谷歌上搜索IDE下载页面的频率而创建的 一个IDE被搜索的次数越多&#xff0c;这个IDE就被认为越受欢迎。原始数据来自谷歌Trends 如果您相信集体智慧&am…

那些无法避免的弯路

近日&#xff0c;某高校毕业生在校期间窃取学校内网数据&#xff0c;收集全校学生个人隐私信息的新闻引发了人们对互联网生活中个人信息安全问题的再度关注。在大数据时代&#xff0c;算法分发带来了隐私侵犯&#xff0c;在享受消费生活等便捷权利的同时&#xff0c;似乎又有不…

Pyformer: 内嵌局部机理的时序预测模型

待续 代码粗解 在 data_lorder.py文件中&#xff0c;定义了几个用于处理不同数据集的类&#xff0c;这里只关注Dataset_ETT_hour类。Dataset_ETT_hour类用来加载、处理ETTH数据集&#xff0c;主要包含以下4个方法&#xff1a;__read_data__&#xff0c; def __getitem__(sel…

Mybaits-Plus学习5 代码生成器

引入代码生成器依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.1</version> </dependency> <dependency><groupId>org.freemarker</groupId…

旅游卡app软件开发解决方案

旅游业的不断发展&#xff0c;旅游卡作为一种便捷的旅游方式越来越受到人们的青睐。旅游卡可以帮助游客节省旅游开支&#xff0c;同时也能让游客更好地规划自己的旅游行程。针对这种情况&#xff0c;开发一款旅游卡app软件是非常必要的。本文将介绍旅游卡app软件开发的解决方案…

mysql 视图

视图&#xff0c;是虚拟存在的表&#xff0c;视图中的数据在数据库中实际不存在&#xff0c;视图只保存查询SQL的逻辑&#xff0c;不保存查询结果 建表sql DROP TABLE IF EXISTS w_dict; CREATE TABLE w_dict (id int(0) NOT NULL AUTO_INCREMENT,label varchar(255) CHARACT…

rsync+intofy实时同步部署(上行、下行)

目录 一&#xff1a;rsync 远程同步 二&#xff1a;配置rsync源服务器 1、安装rsync 2、建立/etc/rsyncd.conf 配置文件 3、 为备份账户创建数据文件 4、 保证所有用户对源目录/var/www/html 都有读取权限 5、 启动 rsync 服务程序 6、关闭 rsync 服务 三&#xff1a; 发起…

华为OD机试(B卷)

华为OD机试&#xff08;B卷&#xff09; 有幸接到了华为OD的机试邀请&#xff0c;三道算法题。比较幸运的是&#xff0c;最后一题&#xff0c;也相对来说不算太难&#xff0c;没有抽到动态规划&#xff0c;还是花了大约90分钟&#xff0c;三道题都通过了&#xff0c;最终拿到了…