scrollIntoView()的方法属性及使用其实现锚点定位

2023-11-05

scrollIntoView()方法属性

在一个移动项目中遇到个这样的需求,一个表单填写页面,每项都有表单验证,并且点击提交按钮,未通过校验的输入框下边显示校验信息,同时页面滑动定位到第一个未通过校验的输入框.
我们在完成这项需求时,使用的scrollIntoView()方法.
下边我们详细介绍一下scrollIntoView的属性用法.

简介

该scrollIntoView()方法将调用它的元素滚动到浏览器窗口的可见区域。

语法

element.scrollIntoView(); // 等同于element.scrollIntoView(true)
element.scrollIntoView(alignToTop); //布尔参数
element.scrollIntoView(scrollIntoViewOptions); //对象参数

语法参数

alignToTop [可选],目前之前这个参数得到了良好的支持
true 元素的顶部将对齐到可滚动祖先的可见区域的顶部。对应于scrollIntoViewOptions: {block: “start”, inline: “nearest”}。这是默认值
false 元素的底部将与可滚动祖先的可见区域的底部对齐。对应于scrollIntoViewOptions: {block: “end”, inline: “nearest”}。
scrollIntoViewOptions [可选],目前这个参数浏览器对它的支持并不好,可以查看下文兼容性详情
behavior [可选]定义动画过渡效果, "auto"或 “smooth” 之一。默认为 “auto”。
block [可选] 定义垂直方向的对齐, “start”, “center”, “end”, 或 "nearest"之一。默认为 “start”。
inline [可选]定义水平方向的对齐, “start”, “center”, “end”, 或 "nearest"之一。默认为 “nearest”。

示例

var element = document.getElementById("box"); 
element.scrollIntoView();
element.scrollIntoView(false);
element.scrollIntoView({block: "end"});
element.scrollIntoView({behavior: "instant", block: "end", inline: "nearest"});

注意:
取决于其它元素的布局情况,此元素可能不会完全滚动到顶端或底端。

浏览器兼容性

在这里插入图片描述
实例应用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .top {
            position: fixed;
            right: 30px;
            bottom: 30px;
        }
    </style>
</head>
<body>
    <div>
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Cupiditate saepe enim nulla nobis provident quaerat tempore. Adipisci voluptatem velit optio voluptatum, id laborum perferendis cumque! Iste sint sit blanditiis eaque?
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde eligendi vitae dolorum placeat harum soluta nihil minus reiciendis nulla, fuga explicabo optio. Dolorum ut magnam laborum exercitationem? Non, distinctio accusamus.
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Cupiditate saepe enim nulla nobis provident quaerat tempore. Adipisci voluptatem velit optio voluptatum, id laborum perferendis cumque! Iste sint sit blanditiis eaque?
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde eligendi vitae dolorum placeat harum soluta nihil minus reiciendis nulla, fuga explicabo optio. Dolorum ut magnam laborum exercitationem? Non, distinctio accusamus.
    </div>
    <div class="bottom" style="height: 20px;border:1px solid #f00;"></div>
    <button class="top">点击</button>
<div>
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Cupiditate saepe enim nulla nobis provident quaerat tempore. Adipisci voluptatem velit optio voluptatum, id laborum perferendis cumque! Iste sint sit blanditiis eaque?
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde eligendi vitae dolorum placeat harum soluta nihil minus reiciendis nulla, fuga explicabo optio. Dolorum ut magnam laborum exercitationem? Non, distinctio accusamus.
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Cupiditate saepe enim nulla nobis provident quaerat tempore. Adipisci voluptatem velit optio voluptatum, id laborum perferendis cumque! Iste sint sit blanditiis eaque?
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        <br>
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Unde eligendi vitae dolorum placeat harum soluta nihil minus reiciendis nulla, fuga explicabo optio. Dolorum ut magnam laborum exercitationem? Non, distinctio accusamus.
    </div>
 
    <script>
        var btn = document.querySelector('.top');
        btn.addEventListener('click', function() {
            var element = document.querySelector('.bottom')
            element.scrollIntoView({behavior: "smooth", block: "start",});
        })
    </script>
</body>
</html>
</body>
</html>

效果图
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

scrollIntoView()的方法属性及使用其实现锚点定位 的相关文章

  • Sublimewebinspector 断点不能打上的解决方法

    最近老大在sublime上开发出了我们产品的开发包 这个开发包能像ZenCoding一样快速打出前端代码 这样开发者用我们产品的概率就大多了 但是对于产品中的js代码 现在还没有很好的工具 搬砖的我小有雄心壮志的想给我们的产品开发一个JS代
  • 【每日一练】79—CSS实现扫描二维码动画

    二维码的应用越来越普通 加个好友 付个款 做个核酸 想去一个地方 还要扫个场所码 总之 需要二维码的地方越来越多 因此 在这样的大环境里 如何让你的码与众不同 引人注意 就显得非常重要 今天我们就来练习一个二维码的动画效果 具体效果如下 看
  • html中使用js实现体彩11选5随机选号

    体彩11选5随机选号 页面预览 代码实现
  • Html如何引用公用的JS和CSS

    1 问题原因 项目开发几乎每个Html都会引用JS和CSS 那么就会有一些常用JS或者CSS 我们不希望每个Html文件都引用一堆文件 而是只引用公用的JS和CSS就可以了 2 解决办法 2 1定义commonJs js添加公用的JS文件引
  • 多维数组变成一维数组

    这个问题来源于一个朋友曾经问过我的问题 当时是一个二维数组变成一维数组 后面我想整理一下 整理一个多维 并且是不定维的数组 一 二维数组变成一维数组 1 遍历数组 将元素一个个放入新数组 结果 如果元素不是数组 将会报错 下面是改良版 这样
  • js制作简单的轮播图

    实现原理 首先定义一个div 设置width和height 然后在这个div里面再定义一个div2 该div的宽度为父div的宽度的n倍 其中n表示图片的张数 在这个div2里面放置需要进行轮播的所有图片 设置每张图片的宽度为一个最外层父类
  • JS for循环的3种使用

    1 1 for循环使用 1 for in 遍历存放对象的一维数组 var arr id 1 name 張山 id 2 name 李四 for var i in arr console log i 结果 仅仅会得到数组的索引会遍历数组的原型属
  • Ajax核心技术之XMLHttpRequest对象

    XMLHttpRequest对象到底是什么 跟Ajax到底有什么联系 在了解它之前还是要先了解一下Ajax的功能 与以往的技术不同 Ajax是为了实现异步操作 那么关于异步 好像一个管理者安排好一个项目计划后 将这个项目交给下属去做 而自己
  • html 中的正则(基础)

    正则表达式 1 什么是 正则表达式就是专门规定一个字符串中字符出现的规律的一套规则 2 何时 2大类场景 a 验证字符串格式 b 查找敏感词 如何在js中创建正则表达式 用于查找和匹配 2种 1 标准写法 a var 变量 new RegE
  • html标签中src=“图片路径”,怎么用变量替换路径

    div style background image none bg0 gif bg5 gif div
  • js获取时间戳的四种方法

  • 微信小程序之map地图规划路线以及显示距离

    有个问题 在选择公交路线 包含步行和公交 时 怎么才能让不同的路线显示不同的颜色 ps 有个方式 自己写坐标解压往后的存入新数组 把步行时的数据标注下 有什么简单的方法呢 自定义函数文件 自动获取定位信息 function getLocat
  • js读取jpg图片扩展信息,处理二进制数据

    js 读取图片扩展信息 将图片转为ArrayBuffer var http new XMLHttpRequest http onload function if this status 200 this status 0 console l
  • React class组件、react-hook函数组件分别实现五子棋

    react class类组件 react hook函数组件分别实现五子棋 前言 使用create react app脚手架简单搭建 不用安装其他依赖 纯 js css实现 这里就只是简单的说明目录结构和思路 具体的代码实现请转到 Githu
  • Js中的defer属性和async属性

    Js中的defer属性和async属性 一 defer和async 1 defer 指外部js文件和当前html页面同时加载 异步加载 但只在当前页面解析完成之后执行js代码 async 指外部js文件和当前html页面同时加载 异步加载
  • 6.js--布尔值和null

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 目录 1 布尔数据 boolean 2 null 3 null和undefined的意义 1 布尔数据 boolean var a true var b false
  • 节流与防抖

    1 我们先了解为什么要节流和防抖 我们给一个inpu输入框绑定一个oninput事件 此时我们输入 前端开发 四个字 我们 观察以下后台打印
  • WPF 路径动画PathAnimations的使用

    在wpf中让一个控件按照一定的路径运行的动画 叫做路径动画 这个示例演示了让一个rectangle按照一个s形曲线反复运行的动画 效果 只有一个文件 全部代码如下
  • JS实现成才网注册系统(网页数据验证)

    主代码
  • 30天精通Nodejs--第二十二天:express-认证和授权

    目录 引言 理解JWT及其工作原理 安装与引入JWT库 生成JWT令牌 验证JWT令牌 注意事项与最佳实践 结语 引言 在现代Web应用开发中 JSON Web Tokens JWT 作为一种轻量级 自包含且安全的标准 已被广泛用于实现用户

随机推荐

  • vue项目使用vue-quill-editor,光标位置控制(已解决)

    查了网上很多资料使用 都没有解决 故记录在此 全局引入 import Vue from vue import VueQuillEditor from vue quill editor require styles import quill
  • [重点]call、apply和bind的区别以及源码解析

    前言 在前端面试中 最常见的面试题 this的指向问题 如何改变this指向 call apply和bind的区别以及源码解析 如果面试官问到this的指向问题 那么你去引导面试官 让他问你如何改变this指向 call apply和bin
  • Wazuh检测反弹shell

    Wazuh通过在agent服务器上执行指定的命令 并收集命令结果 可以在一定程度上发现反弹shell的入侵行为 目前有2中常见的检测方法 一种是通过netstat输出网络连接中的shell进程来识别 另一种是通过ps输出进程信息中的反弹sh
  • 光纤中的多种光学模式芯径_「涨知识」你想知道的光纤常识都在这里了,看不看随你...

    光纤已经成为远距离有线信号传输的主要手段 安装 维护光纤也是弱电人的基本功 光纤中涉及的理论知识 组件和铺设要点都很多 我们在这里作了一些梳理 三种光 不是所有的光都能用于光纤中信号传播 光线中主要使用三种波长的光 850 nm 1300
  • Zotero文献导入到Endnote

    1 2 导入的时候 请选择
  • STM32 DAC + DMA + TIM 输出正弦波,三角波,方波信号

    硬件平台 STM32F4 库类型 标准库 参考 二代示波器教程 第12章 示波器设计 DAC信号发生器的实现 DAC框图如下 通过TIM触发DAC转换 转换完成后通过DMA输出 DMA通道框图 DAC输出阻抗的问题 DAC集成了2个输出缓存
  • matlab练习程序(弧形、圆柱投影的复原)

    前一段介绍了从矩形图像到圆柱的正向投影 看这里和这里 今天介绍如何从已经投影的图像反映射到原图像上 本来此种变换一定是需要数学公式的 不过这里只是用了一个很简单的方式来完成反映射 具体就把每一列有像素数据的长度拉伸到原图像的高就行了 原图像
  • html网页超链接

    HTML网页超链接可以通过a标签来添加超链接 其语法是 a href target self title a 它的两个属性值分别是href用来设置网页目标地址 target是用来设置打开超链接的方式 a href 网址 链接地址 targe
  • 字体子集化fontmin应用

    const fm require fontmin const f 字体名称 ttf const fontmin new fm fontmin src f use fm glyph text 天地玄黄 宇宙洪荒 use fm ttf2svg
  • 二、图像二值化方法(python)---阈值全局固定、大津法

    文章目录 阈值全局固定 利用python实现阈值全局固定时的二值化 效果图 大津法OTSU 利用Python实现大津法 效果图如下 图像二值化也叫做图像阈值化处理 通过设定某个阈值为门限 把多灰度级的图像转化为仅仅有两个极端的灰度级 0和2
  • C/C++编程笔记:如何将字符串转换为数字,数字转换为字符串?

    通常 或更具体地说 在竞争性编程中 有许多情况需要将数字转换为字符串或将字符串转换为数字 但是缺乏某些必不可少的工具的知识使我们不得不这样做 本文介绍了一些实现此任务的方法 将字符串转换为数字 方法1 使用stringstream类或ssc
  • 【转】探索推荐引擎内部的秘密

    from http www ibm com developerworks cn web 1103 zhaoct recommstudy1 index html ca drs 赵 晨婷 软件工程师 IBM 马 春娥 软件工程师 IBM 简介
  • 基于API调用管理的SDN应用层DDoS攻击防御机制

    摘要 软件定义网络 SDN software defined network 针对北向接口安全研究少 加之缺乏严格的访问控制 身份认证及异常调用检测等机制 导致攻击者有机会开发恶意的应用程序 造成北向应用程序接口 API applicati
  • Ubuntu中最简单好用截图工具shutter安装

    题记 在ubuntu中 shutter截图工具是我目前使用过最简单好用的截图神器 安装 直接在ubuntu软件市场中搜索下载 然后安装即可了
  • 软件测试工程师必备的10个测试技术体系(零基础入行测试必学)

    很多测试新手在刚开始学习软件测试的时候都不知道该如何开始 以及软件测试需要掌握哪些必备的知识点 以下是根据个人总结 粗略整理的一份软件测试学习大纲 基本涵盖了软件测试工程师需要掌握的全部技能 希望给准备学习测试的朋友提供一点指引和帮助 PS
  • 八大排序算法-堆排序

    在说堆排序之前 要先说明二叉堆的概念 因为堆排序就是通过二叉堆来实现的 注 以下说会用堆来作二叉堆的简称 至于堆的定义 大家可以自行查阅 在了解完堆之后 我们知道堆有大根堆和小根堆的不同 我们先了解堆排序的思想 之后用一个大根堆来实现代码
  • 搜索引擎-应用篇(地理位置查询)

    一 背景 查询附近的洗车店 二 原理探究 像Redis和ES都支持GEO来存储地理位置 GEO类型 地理点 geo point 即经纬度查询 地理形状查询 geo shape 即支持点 线 圈 多边形查询 GeoHash GeoHash 原
  • 转:图谱中的关系推理是什么

    知识图谱本质上是语义网络 是一种基于图的数据结构 由节点 Point 实体 和边 Edge 关系 组成 在知识图谱里 每个节点表示现实世界中存在的 实体 每条边为实体与实体之间的 关系 知识图谱是关系的最有效的表示方式 通俗地讲 知识图谱就
  • Win10企业版本激活方法

    右键管理员身份运行cmd 或者直接Win键 X 直接打开Windows Powershell 管理员 粘贴下面的命令即可 slmgr skms kms 03k org slmgr ato
  • scrollIntoView()的方法属性及使用其实现锚点定位

    scrollIntoView 方法属性 在一个移动项目中遇到个这样的需求 一个表单填写页面 每项都有表单验证 并且点击提交按钮 未通过校验的输入框下边显示校验信息 同时页面滑动定位到第一个未通过校验的输入框 我们在完成这项需求时 使用的sc