当前位置: 首页 > news >正文

【记录62】网站输入框搜索内容页面定位

首先肯定页面有一个输入框,绑定一个方法handleChange()

核心部分
const element = document.getElementById(selectQuery); // 根据 id 标识 获取dom
element.scrollIntoView({ behavior: "smooth", block: "start" }); // 平滑滚动到内容位置
document.body.scrollIntoView(true); // 未查找到,返回顶部
参数说明:
scrollIntoView() 方法支持多种参数配置来自定义滚动行为,主要包括滚动动画效果、垂直和水平对齐方式等
behavior 参数控制滚动动画效果。auto立即跳转目标元素,没有动画过度效果;smooth平滑滚动到元素,具有动画效果
block 参数定义垂直方向对其方式。start 元素顶部与视口顶部对齐;center 元素中心与视口中心对齐;end 元素底部与视口底部对齐;nearest 滚动到最接近视口的位置
inline 参数定义水平方向对齐方式。start 元素顶部与视口顶部对齐;center 元素中心与视口中心对齐;end 元素底部与视口底部对齐;nearest 滚动到最接近视口的位置
注意:smooth在IOS设备存在兼容性问题
如果有人想设置滚动速度快慢,抱歉没有

要想用该方法,先考虑是否动态根据数据生成,就可以使用,如果是定制(静止),不建议,非要加也是可以的,就是需要手动的去添加它的唯一标识,维护起来挺麻烦的

注意:html和JavaScript中的sys-${index}-${i},实则位置是根据这个定位内容

<div v-for="(ele, index) in navarList" :key="index + 'b'" class="parentnav"><div class="cards"><div class="cardtitle">{{ ele.label }}</div><div style="text-align: center"><div v-for="(ite, i) in ele.children" :key="i + 'child'" class="cardbox"><divclass="childcard":id="`sys-${index}-${i}`"@click="toSystemClick(ite)"v-throttle><img :src="ite.src" alt="" style="" /><div class="childtext">{{ ite.label }}</div></div></div></div></div></div>
handleChange() {if (this.searchValue) {// 空,不触发方法const array = this.navarList;// 递归函数,const recursionFunc = function name(filter, array, query = "sys") {// 递归取class类if (array.length && filter) {for (let S = 0; S < array.length; S++) {const element = array[S];if (element.label.includes(filter)) return `${query}-${S}`;if ("children" in element && element.children.length) {const result = recursionFunc(filter, element.children, `${query}-${S}`);// 重点,这里查询符合条件的内容并标识,唯一性if (result) return result;}}}return null;};// 这里为啥子要用递归函数,因为我也不确定后期这个数据是嵌套多少层,通过递归函数无所谓嵌多少层了const selectQuery = recursionFunc(this.searchValue, array, "sys");if (selectQuery === "sys" || !selectQuery) {//	标识为sys或空,返回页面顶部document.body.scrollIntoView(true);return;}this.$nextTick(() => {// 重新加载内容位置// const element = document.querySelector(selectQuery);const element = document.getElementById(selectQuery);if (element) {// 定位内容所在位置// 方法一// window.scrollTo({//   top: element.offsetTop,//   behavior: "smooth",// });// 方法二element.scrollIntoView({ behavior: "smooth", block: "start" });  //// block: "start/center/end/nearest默认值根据最短滚动距离原则决定是否滚动"‌:定义垂直方向的对齐方式,这里表示元素的顶部与视窗(或可滚动容器)的顶部对齐// behavior: "smooth/auto默认,无平滑动画/instant无动画,直接跳转"‌:指定滚动行为为平滑滚动过渡,而不是瞬间跳转,这能提供更好的用户体验// element.focus();}});} else {// 返回顶部document.body.scrollIntoView(true);}},
http://www.dtcms.com/a/515928.html

相关文章:

  • 2025年新版ADB工具箱下载+驱动+ADB指令集+fastboot刷机ROOT工具
  • 上海网站建设平台站霸网络快速提升关键词排名软件
  • 【Android】从源码角度理解Handler机制
  • docker技术之部署docker
  • node框架做网站国外浏览器推荐
  • 悬赏平台 wordpress免费网站优化怎么做
  • java数据结构--LinkedList与链表
  • 【笔记--如何安装python环境】
  • 汇川H5U 威纶通HMI双仿真编程
  • 平均指数移动(EMA)
  • 可灵AI邀请码
  • 做外贸的网站怎么建立矿大师德建设网站
  • C语言需要掌握的基础知识点之前缀和
  • Java Optional orElse orElseGet orElseThrow()
  • windows10 wordpress十堰seo优化
  • 优选算法:01 双指针巧解移动零问题
  • 消息队列Kafka
  • 做游戏陪玩网站连锁销售网站制作
  • 【数字逻辑】数字逻辑实验实战:74HC151实现逻辑函数+74HC138搭全加器(附接线步骤+避坑指南)
  • Ubuntu上vue3 vite使用MBTiles搭建地图服务器
  • CClink转EtherCAT协议转换落地——汇川PLC管控球磨机CClink伺服案例
  • wordpress handsome长沙seo免费诊断
  • ChatGPT Atlas 发布:把 AI 直插进浏览器的一次重构
  • 第1章:初识Linux系统——第9节:安装服务软件、维护文件系统安全与文件权限配置实例
  • openAI发布的AI浏览器:什么是Atlas?(含 ChatGPT 浏览功能)macOS 离线下载安装Atlas完整教程
  • 西安市高陵区建设局网站聊城网站制作信息
  • ssh别名和多服务器同步文件
  • 苏州建设网站的公司软件开发和编程的区别
  • Linux I²C 总线驱动开发:从架构到实战的完整指南
  • Eureka控制台页面参数说明 ​