使用scrollIntoView滾動元素到可視區域

1. 實現效果

點擊頂部標簽欄,讓對應的內容出現在可視區域:
在這里插入圖片描述
在這里插入圖片描述

2. scrollIntoView ()

scrollIntoView 是一個內置的 JavaScript 方法,用于將元素滾動到視口可見的位置。它通常用于用戶界面中,以便用戶能輕松看到特定的元素。此方法可以應用于任何 DOM 元素,并且有多個參數可以控制滾動行為。

scrollIntoView()
scrollIntoView(alignToTop)  // 傳一個布爾值
scrollIntoView(scrollIntoViewOptions) // 傳一個配置項對象

alignToTop(一個布爾值):可選

  • 如果為 true,元素的頂端將和其所在滾動區的可視區域的頂端對齊。相應的 scrollIntoViewOptions: {block: “start”, inline: “nearest”}。這是這個參數的默認值
  • 如果為 false,元素的底端將和其所在滾動區的可視區域的底端對齊。相應的 scrollIntoViewOptions: {block: “end”, inline: “nearest”}。

scrollIntoViewOptions(個配置項對象):可選
behavior: 定義滾動是立即的還是平滑的動畫

smooth:滾動應該是平滑的動畫。
instant:滾動應該通過一次跳躍立刻發生。
auto:滾動行為由 scroll-behavior 的計算值決定

block: 定義垂直方向的對齊

可選值:start、center、end 或 nearest ,默認為 start。

inline: 定義水平方向的對齊

可選值: start、center、end 或 nearest 。默認為 nearest。

3. 示例代碼

<!-- 通過操作dom節點上的 scrollIntoView方法來實現將元素滾到可視區-->
<template><div class="outer"><div class="tab-outer-wrap"><div class="tab-wrap"><div class="tab-item" :class="{ 'active-tab': index === activeIndex }" v-for="(item, index) in tabs":key="index" @click="changeTab(index)">{{ item }}</div></div></div><div class="content-wrap"><div class="content-item" v-for="(item, i) in tabs" :key="i" :ref="(e: any) => (contentRefs[i] = e)">{{ item }}</div></div></div>
</template>
<script setup lang="ts">
// contentRefs 是一個對象,存儲多個ref,鍵名是索引,值是dom實例
const contentRefs = reactive<Record<number, HTMLDivElement>>({});const tabs = ['A', 'B', 'C', 'D', 'E']
const activeIndex = ref(0)
const changeTab = (index: number) => {activeIndex.value = index// 將當前激活的tab對應的content滾動到可視區域contentRefs[index].scrollIntoView({behavior: 'smooth',//定義滾動是立即的還是平滑的動畫block: 'start',//定義垂直方向的對齊inline: 'nearest'//定義水平方向的對齊})
}</script>
<style scoped lang="scss">
.outer {position: relative;width: 100%;height: 100%;
}.tab-outer-wrap {position: fixed;top: 0;left: 0;width: 100%;z-index: 999;
}.tab-wrap {display: grid;grid-template-columns: repeat(5, 1fr);height: 40px;.tab-item {display: flex;justify-content: center;align-items: center;background-color: rgb(235, 231, 226);&.active-tab {color: red;}}
}.content-wrap {position: absolute;top: 40px;left: 0;width: 100%;height: 100%;.content-item {height: 220px;background-color: rgb(238, 219, 195);margin-bottom: 10px;// 定義滾動吸附區域的上外邊距scroll-margin-top: 40px;display: flex;justify-content: center;align-items: center;}
}
</style>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/10422.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/10422.shtml
英文地址,請注明出處:http://en.pswp.cn/web/10422.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

perf 中的 cpu-cycles event 介紹

perf 中的 cpu-cycles event 介紹 cycles簡介 cycles事件記錄處理器核心執行的時鐘周期數。每個時鐘周期代表處理器內部時鐘振蕩器的一個周期。這個事件通常用于衡量處理器的執行速度&#xff0c;因為它直接反映了指令執行所需的時間。一個較高的cycles計數可能意味著代碼執行…

JavaScript中指定大小分割數組的一種實現

今天分享一個使用JavaScript分割數組為多個自數組的方法實現。我使用它的場景如下&#xff1a; 給定一個數組 arr 和指定大小 fixed&#xff1a; const arr [{id: 1,name: name1},{id: 2,name: name2},{id: 3,name: name3},{id: 4,name: name4},{id: 5,name: name5},{id: 6,…

2024版本idea集成SpringBoot + Ai 手寫一個chatgpt 【推薦】

題目&#xff1a;SpringBoot OpenAi 在這里獲取key和url&#xff1a;獲取免費key base-url為這兩個&#xff1a; 話不多說直接來&#xff01; 一、簡介 Spring AI 是 AI 工程的應用框架。其目標是將 Spring 生態系統設計原則&#xff08;如可移植性和模塊化設計&#xff…

暗區突圍pc資格 暗區突圍pc端測試資格獲取

《暗區突圍》的誕生&#xff0c;仿佛在游戲界投下了一枚深水炸彈&#xff0c;它不僅僅是射擊游戲的新標桿&#xff0c;更是對玩家策略思維、生存直覺與團隊協作能力的一次全面考驗。在這個精心構建的虛擬戰場中&#xff0c;每一次踏入暗區&#xff0c;都是對未知的探索&#xf…

【練習4】

1.兩數之和 暴力&#xff1a; class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {int n nums.size();vector<int> res(2, -1); // 初始化結果為-1for (int i 0; i < n; i) {int temp nums[i];for (int j i 1; j <…

Python 技巧:滿意的逗號放置

當你在 Python 中添加或刪除列表、字典或集合中的項目時&#xff0c;記住總是將所有行結尾加一個逗號。這是一個非常有用的技巧&#xff0c;可以幫助你避免一些常見的問題。 不確定我所說的什么&#xff1f;讓我給你一個快速示例。假設你在代碼中有一個名單列表&#xff1a; …

銀行家算法簡易實現

這里寫目錄標題 實驗要求內容代碼main.cppmyfunc.hmyfunc.cpp 運行結果與分析 實驗要求 程序可以針對不同進程的請求進行判斷&#xff0c;并決定是否滿足其需求。算法程序需要設計合理的數據結構&#xff0c;對資源情況、進程相關數據進行存儲。 內容 隨機生成數據, 并校驗數據…

做視頻號小店,怎么找達人合作?這里有詳細講解

大家好&#xff0c;我是電商笨笨熊 做視頻號小店是沒有自然流量的&#xff0c;這點剛入駐的新玩家還不清楚&#xff1b; 因此很多老電商玩家們還想著繼續拿其他平臺動銷自然流的玩法去做視頻號&#xff1b; 只能說這種方式在視頻號是完全行不通的&#xff0c;當下想要推廣售…

設計模式2——原則篇:依賴倒轉原則、單一職責原則、合成|聚合復用原則、開放-封閉原則、迪米特法則、里氏代換原則

設計模式2——設計原則篇 目錄 一、依賴倒轉原則 二、單一職責原則&#xff08;SRP&#xff09; 三、合成|聚合復用原則&#xff08;CARP&#xff09; 四、開放-封閉原則 五、迪米特法則&#xff08;LoD&#xff09; 六、里氏代換原則 七、接口隔離原則 八、總結 一、依賴…

Python-VBA函數之旅-setattr函數

目錄 一、setattr函數的常見應用場景 二、setattr函數使用注意事項 三、如何用好setattr函數&#xff1f; 1、setattr函數&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推薦閱讀&#xff1a; 個人主頁&#xff1a; https://blog.csdn.net/ygb_1024?…

宏集Panorama SCADA軟件獲BACnet BTL認證

Panorama 獲得BACnet BTL認證 建筑物的組件&#xff08;空調系統、照明傳感器等&#xff09;能否使用共同通訊協議&#xff1f;這正是標準化 BACnet協議&#xff08;Building Automation and Control Networks&#xff09;所提供的功能。該協議旨在實現建筑物中各種設備和系統…

【TS】入門

創建項目 vscode自動編譯ts 生成配置文件 tsc --init 然后發現終端也改變了&#xff1a;

SOCKET編程(3):相關結構體與函數

相關結構體與函數 sockaddr、sockaddr_in結構體 sockaddr和sockaddr_in詳解 struct sockaddr共16字節&#xff0c;協議族(family)占2字節&#xff0c;IP地址和端口號在sa_data字符數組中 /* Structure describing a generic socket address. */ struct sockaddr {__SOCKADDR…

抓大鵝教程電腦端秒通關……

大家好&#xff0c;我是小黃。 最近抓大鵝小程序游戲很火&#xff0c;抓大鵝小游戲是由青島藍飛互娛科技股份有限公司開發并推出的一款休閑益智類三消游戲。在游戲中&#xff0c;玩家需要在特定的“購物籃子”背景下&#xff0c;找到三個相同的物品并將其消除。游戲的玩法簡單…

社工庫信息查詢

此網站需要注冊賬號&#xff0c;新用戶注冊送3點券&#xff0c;每日簽到可獲得1.5點券。也可通過充值來查 我這里有方法可以利用缺陷來無限獲取點券查人

Python 實戰之量化交易

1. Python 實戰之量化交易 2..Python量化交易實戰-04.量化交易系統架構的設計 Python量化交易實戰-04.量化交易系統架構的設計 - 知乎 3.Python量化交易實戰-06.通過PythonAPI獲取股票數據 Python量化交易實戰-06.通過PythonAPI獲取股票數據 - 知乎 3.Python量化交易實戰…

程序員的歸宿。。

大家好&#xff0c;我是瑤琴呀。 相信每個進入職場的人都考慮過自己的職業生涯規劃&#xff0c;在不同的年齡段可能面臨不同挑戰&#xff0c;這點對于 35 的人應該更為感同身受。 對于程序員來說&#xff0c;大部分人的職業道路主要是下面三種&#xff1a;第一條&#xff0c;…

【Delphi 爬蟲庫 6】使用正則表達式提取貓眼電影排行榜top100

正則表達式庫的簡單介紹 正則表達式易于使用&#xff0c;功能強大&#xff0c;可用于復雜的搜索和替換以及基于模板的文本檢查。這對于輸入形式的用戶輸入驗證特別有用-驗證電子郵件地址等。您還可以從網頁或文檔中提取電話號碼&#xff0c;郵政編碼等&#xff0c;在日志文件中…

人生是曠野,不是軌道

最近看到一句話&#xff0c;很喜歡&#xff0c;分享一下。"人生是曠野&#xff0c;不是軌道"。人生不是固定的方程式&#xff0c;也沒有唯一答案&#xff0c;沒有誰生來就應該是什么樣。別太被太多世俗觀念束縛住手腳&#xff0c;每個人都有權利自由生長&#xff0c;…

用友暢捷通T+ keyEdit sql注入漏洞

產品介紹 暢捷通 T 是一款靈動&#xff0c;智慧&#xff0c;時尚的基于互聯網時代開發的管理軟件&#xff0c;主要針對中小型工貿與商貿企業&#xff0c;尤其適合有異地多組織機構&#xff08;多工廠&#xff0c;多倉庫&#xff0c;多辦事處&#xff0c;多經銷商&#xff09;的…