css position属性与js滚动

news2024/12/22 22:58:40

 “视口”就是浏览器窗口中实际显示文档内容的区域,不包含浏览器的“外框”,如菜单、工具条和标签。文档则是指整个网页。

1 css 的position

static

正常定位,是元素position属性的默认值,元素遵循常规流。

relative

相对定位,会相对于自身在常规流中的位置进行定位。其在常规流中的位置会被保留。

absolute

绝对定位,会脱离文档流,相对于离自身最近的祖先(position为relative)进行偏移定位。

fixed

固定定位,会脱离文档流,相对窗口进行偏移定位。

sticky

粘性定位,类似static和fixed的结合。

表 css position属性的5个值

1.1 relative 相对定位

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div class="container">
    <div class="con1">
        <div class="block"></div>
        <div class="block">position:static</div>
        <div class="block"></div>
    </div>
    <div class="isolate"></div>
    <div class="con2">
        <div class="block block1"></div>
        <div class="block block2">position:relative</div>
        <div class="block"></div>
    </div>
</div>
</body>
</html>

<style lang="less">
  .block {
    width: 150px;
    height: 100px;
    background-color: #f3bbbb;
    border: solid 1px blue;
    text-align: center;
    line-height: 100px;
    color: red;
  }
  .container {
      display: flex;
      .isolate{
          width: 30px;
      }
      .con2 {
          .block1 {
              z-index: 99;
          }
          .block2 {
              z-index: 1;
              background-color: blue;
              position: relative;
              top: -100px;
          }
      }
  }
</style>

图 position=relative 示意图

注意,当position为static(常规)时,z-index及left(等位置元素)均为无效。

1.2 absolute 绝对定位

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div class="container">
    <div class="con1">
        <div class="block"></div>
        <div class="block">position:static</div>
        <div class="block"></div>
    </div>
    <div class="isolate"></div>
    <div class="con2">
        <div class="block block1"></div>
        <div class="block block2">
            <div>position:absolute (parent is "body")</div>
        </div>
        <div class="block"></div>
    </div>
    <div class="isolate"></div>
    <div class="con2">
        <div class="block block1"></div>
        <div class="parent">
            <div class="block block2">position:absolute (parent is "div")</div>
        </div>
        <div class="block"></div>
    </div>
</div>
</body>
</html>

<style lang="less">
    .block {
        width: 150px;
        height: 100px;
        background-color: #f3bbbb;
        border: solid 1px blue;
        text-align: center;
        line-height: 100px;
        color: red;
    }
    .container {
        display: flex;
        .isolate{
            width: 30px;
        }
        .con2 {
            .block1 {
                z-index: 99;
            }
            .block2 {
                line-height: 50px;
                z-index: 1;
                background-color: blue;
                position: absolute;
                top: 50px;
            }
            .parent {
                position: relative;
            }
        }
    }
</style>

图 position=absolute 示意图

注意: absolute 是相对于position=relative的最近父元素定位,当没有找到相关父元素时,会相对于<body>标签定位。

1.3 fixed 固定定位

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div class="block">
    <div class="con"></div>
</div>
</body>
</html>

<style>
.block {
   width: 10000px;
   height: 600px;
   background: #f3c4c4;
}
.con {
    width: 100px;
    height: 100px;
    position: fixed;
    background: blue;
    left: 100px;
    top: 100px;
}
</style>

 

图 position=fixed示意图

注意:fixed 是相对于窗口,会脱离文档流。

1.4 sticky 粘性定位

当position=sticky时,如果top、right、bottom、left四个属性都不设置具体值,sticky不会生效,其表现效果与static一致。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div class="big-container">
  <div class="container container1">
    <div class="con con1"></div>
    <div class="sep"></div>
    <div class="con con2"></div>
    <div class="sep"></div>
    <div class="con con3"></div>
  </div>
  <div class="container container2">
    <div class="con con1"></div>
    <div class="sep"></div>
    <div class="con con2"></div>
    <div class="sep"></div>
    <div class="con con3"></div>
  </div>
</div>
</body>
</html>

<style>
  .big-container {
    display: flex;
    .container {
      width: 100px;
      height: 250px;
      margin-left: 30px;
      border: solid 1px #8a8a8a;
      overflow: auto;
      .sep {
        width: 100px;
        height: 30px;
        background: grey;
      }
      &.container2 {
        .con2 {
          top: 30px;
          position: sticky;
        }
      }
      .con {
        width: 100px;
        height: 100px;
        background: #f3bbbb;
      }
      .con2 {
        background: green;
      }
    }
  }
</style>

图 position=sticky 示意图

当top、right、bottom、left四个属性中至少设置一个具体值时,元素具备两种状态静态定位状态及固定定位(fixed)状态。例如,当top=30px时,元素离窗口距离大等于30px时,元素为静态定位状态,否则为固定定位状态。

图 position=sticky 元素处理固定状态示意图

注意:当元素处于固定状态时,其在文档流中的位置会被保留。

2 滚动

1)Window对象的scrollTo方法,接收一个点的x和y坐标,这个方法会滚动窗口,从而让这个点位于视口点左上角。如果这个点太接近文档顶部或右边,浏览器会尽可能让视口左上角接近这个点,但不可能真的移动到该点。

2)Window对象的scrollBy方法,参数数个相对值,会加在当前滚动位置之上。

scrollBy(0,50); // 向下滚动50像素。

3)HTML元素上的scrollIntoView方法,保证调用它的那个元素在视口中可见。默认情况下,滚动后的结果会尽量让元素的上边对齐或接近视口上沿。如果给这个方法传人唯一参数false,则滚动结果会尽量让元素的底边对齐视口下沿。

2.1 平衡滚动

如果想让上述滚动方法平滑移动,则需传人一个对象,而不是两个数值。这个对象的behavior属性有两个属性值:auto(instant),默认值,立即滚动到指定位置;smooth,滚动时平滑过渡。

图 平滑滚动示意图

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

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

相关文章

什么是 CNN? 卷积神经网络? 怎么用 CNN 进行分类?(3)

参考视频&#xff1a;https://www.youtube.com/watch?vE5Z7FQp7AQQ&listPLuhqtP7jdD8CD6rOWy20INGM44kULvrHu 视频7&#xff1a;CNN 的全局架构 卷积层除了做卷积操作外&#xff0c;还要加上 bias &#xff0c;再经过非线性的函数&#xff0c;这么做的原因是 “scaled p…

SpringCloud 微服务全栈体系(八)

第九章 Docker 二、Docker 的基本操作 1. 镜像操作 1.1 镜像名称 镜像的名称组成&#xff1a; 镜像名称一般分两部分组成&#xff1a;[repository]:[tag]。在没有指定 tag 时&#xff0c;默认是 latest&#xff0c;代表最新版本的镜像 比如&#xff1a;mysql 就是 reposito…

Linux — vim编辑器的操作

目录 1. vim的整体操作2. 命令模式下的常见命令3. 底行模式下的常见命令结语 1. vim的整体操作 我们使用 touch 创建一个文件之后&#xff0c;直接 vim 文件名 就能够进入到vim编辑器中。如果vim 文件名的文件还不存在时&#xff0c;vim会自动创建该文件&#xff0c;但需要保存…

中山大学计算机学院2024届推免拟录取及分析

拟录取名单&#xff1a; 分析 中山大学计算机学院2023年共录取推免生245人&#xff0c;其中 计算机科学与技术&#xff08;学硕&#xff09;录取245人&#xff0c;计算机技术&#xff08;专硕&#xff09;录取58人&#xff0c;计算数学录取11人。 很明显可以看出&#xff0c;学…

C++笔记-RTTR编译安装简单使用

这里以Linux为例&#xff0c;我使用的机器的gcc版本是4.9.2 使用的RTTR的版本是0.9.5 编译&安装 首先在官网将rttr的0.9.5版本下载下来。 Home |RTTR 按照官方的安装流程&#xff1a; 但这里可能会出现一个问题&#xff1a; 按照解答&#xff0c;切换成root用户&#x…

医学手术麻醉临床信息系统源码

手术麻醉临床信息系统遵循“以病人为中心、服务于临床”的宗旨&#xff0c;使医护人员从繁琐的病历书写中解放出来&#xff0c;集中精力关注病人的诊疗&#xff0c;将更多的时间用于分析、诊断。以服务围术期临床业务工作的开展为核心&#xff0c;为医护人员、业务管理人员、院…

高级工技能等级认定---网络设备安全

目录 一、DHCP 安全配置 二、SSH配置 三、标准ACL的配置 四、配置交换机端口安全 五、三层交换和ACL的配置 一、DHCP 安全配置 配置要求&#xff1a; 1.给交换机配置enable密码. 2.在交换机上创建VLAN 100&#xff0c;将F0/1-3口改为Access口&#xff0c;并加入到VLAN …

【LeetCode刷题-哈希】--706.设计哈希映射

706.设计哈希映射 class MyHashMap {private class Pair{private int key;private int value;public Pair(int key ,int value){this.key key;this.value value;}public int getKey(){return key;}public int getValue(){return value;}public void setValue(int value){this…

Win10安装WSL2和ubuntu

目录 一、win10系统设置 二、安装WSL 三、win10中ubuntu迁移到D盘 四、在vscode中访问ubuntu 在win10中安装WSL2虚拟机&#xff0c;然后安装ubuntu&#xff0c;最后使用vscode连接ubuntu。教程适用于&#xff1a; ubuntu22.04ubuntu20.04ubuntu18.04 一、win10系统设置 …

大型微服务架构智慧工地云平台源码(SaaS模式)

智慧工地云平台建设是采用先进的移动互联、物联网、云计算、大数据等新一代信息技术&#xff0c;主要由信息采集层、网络接入层、网络传输层、信息储存与处理层组成&#xff0c;主要包括云管理平台、综合管理系统、质量管理系统、安全管理系统等模块。施工管理人员可通过PC端&a…

欧姆龙PLC与上位机通讯说明

欧姆龙PLC与上位机连接时一般采用的是Hoslink协议&#xff0c;它是一种简易经济的通讯方式&#xff0c;比较适合一台上位机和一台PLC或者多台PLC进行通讯。上位机可对漂亮C进行程序传送和读写等操作。HOSTLINK系统允许一台上位机通过上位机链接命令向HOSTLINK系统的PLC发送命令…

MyBatis-Plus 实战教程三 拓展插件

文章目录 扩展功能代码生成安装插件使用 静态工具逻辑删除通用枚举定义枚举配置枚举处理器测试 JSON类型处理器定义实体使用类型处理器 仓库地址 扩展功能 代码生成 在使用MybatisPlus以后&#xff0c;基础的Mapper、Service、PO代码相对固定&#xff0c;重复编写也比较麻烦。…

鸿蒙开发第一步-入门

本人安卓开发小趴菜一枚&#xff0c;在现公司做中控产品&#xff0c;目前通过 Java,Kotlin开发&#xff0c;但是随着后面可能会用到华为产品(后续华为可能不支持安卓)做中控设备&#xff0c;所以在领导的建议下&#xff0c;入手鸿蒙开发。 先说下中控产品吧&#xff0c;以pad开…

线扫相机DALSA-相机平场矫正详细步骤

在相机视野下铺放白色亚克力板或纯白纸&#xff0c;采集图像。打开曲线图。 选择 Line Profile 模式。调节好相应所需的曝光时间、光源、增益和镜头光圈&#xff0c;让白平衡纸显示出来的灰度值大概在 150-200 左右。 在Calibration Algorithm 中将显示的数值设置好。 先暗场…

NodeJS回调地狱及Promise优化

NodeJS中有很多异步API&#xff0c;比如常见的fs模块的readFile方法。虽然有同步的版本readFileSync, 但是其性能肯定不如前者。所以这里从异步异步版本readFile说起: const fs require(fs);fs.readFile(./a.txt, utf-8, function(error, data) {if (!error) {console.log(a.…

目标检测理论知识

目标检测 1.基本概念 目标检测&#xff08;Object Detection&#xff09;的任务是找出图像中所有感兴趣的目标&#xff08;物体&#xff09;&#xff0c;确定它们的类别和位置&#xff0c;是计算机视觉领域的核心问题之一。由于各类物体有不同的外观、形状和姿态&#xff0c;…

【Linux】深入理解系统文件操作(1w字超详解)

1.系统下的文件操作&#xff1a; ❓是不是只有C\C有文件操作呢&#xff1f;&#x1f4a1;Python、Java、PHP、go也有&#xff0c;他们的文件操作的方法是不一样的啊 1.1对于文件操作的思考&#xff1a; 我们之前就说过了&#xff1a;文件内容属性 针对文件的操作就变成了对…

AI:43-基于深度学习的昆虫图像识别

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌本专栏包含以下学习方向: 机器学习、深度学…

AI:42-基于机器学习方法下以沙发为例的家具风格识别技术研究

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌本专栏包含以下学习方向: 机器学习、深度学…

【AD9361 数字接口CMOS LVDSSPI】C 并行数据 LVDS <续>

续【AD9361 数字接口CMOS &LVDS&SPI】C 并行数据之LVDS 不同于CMOS的传输方式&#xff0c;lvds只能工作在双端口全双工模式下。 一、 双端口全双工模式 &#xff08;LVDS&#xff09;代称 DFL DUAL PORT FULL DUPLEX MODE DFL 模式通过写入SPI寄存器实现。在此模式下…