vue+vux scrollTop無法實現定位到具體dom

来源:https://www.cnblogs.com/ligulalei/archive/2019/03/29/10622778.html
-Advertisement-
Play Games

vue+vux scrollTop無法實現定位到具體dom可以試試scrollIntoView() ...


先看一下最終的運行效果。

項目背景介紹:
技術棧: vue+vux+nodejs
需求:對汽車品牌列表可以按照字母進行索引定位

在開發中實現這種需求,心想還不是小菜一碟,作為一個飽經bug的程式員,別的我就不吹了,最起碼Ctrl+C用的還是蠻不錯的。
雖然我的複製能力MAX,但最起碼的功能點還是要先梳理一下。
要實現這個功能統共分兩步,
第一根據點擊找到需要定位的位置,
第二觸發頁面滾動直接到這個位置。
so easy 嘛~
我以迅雷不接掩耳盜小鈴鐺之勢就從我的程式小倉庫里Ctrl+C了一段代碼:
如下:
document.querySelector('#id'); // 獲取點擊節點找到節點對應的內容然後控制滾動
$(window).scrollTop($('#' + s + '1').offset().top); // 跳轉到的位置

因為項目中沒有用到jQuery,在用的時候要把$去掉。做了點小改動
document.documentElement.scrollTop = document.querySelector('#id').offset().top);

大吉大利,萬無一失,程式跑起來。



貌似不行,翻遍全網只要是用scrollTop 都不行。
因為在vue中使用scrollTo不能賦值,總是0。
在解決程式疑難扎症這一點上,還真沒遇到過對手。說了這麼多到底怎麼做呢?
請自行看下麵的總結。

在試錯過程中發現scrollIntoView()方法可以實現定位顯示。

具體怎麼實現的看下麵的程式吧,總結一下有三點。
1.在需要定位到的dom中創建一個隱藏的dom
2.設置要定位的dom元素 position:relative 隱藏的dom position:absolute;
3.把點擊點定位到隱藏的dom即可
嗯,暫時先總結到這裡吧,下麵有源碼可供參考。
完美~

methods: {
jump(index){
document.getElementById("tchar_nav_"+index).scrollIntoView(); 
}, 
},

<!-- 字母導航 start -->
<div class="fixed-nav" style="opacity: 1; display: block;">
<ul class="rows-box">
<li v-for="(item, index) in listAll" :key="index" :id="'char_'+index">
<a @click="jump(index)">{{index}}</a>
</li> 
</ul>
</div>
<div class="alert" style="display: none;"><span>Y</span></div>
<!-- 字母導航 end -->

<div class="brand-list bybrand_list" v-for="(item, index) in listAll" :key="index">
<div :id="'tchar_nav_'+index" class="positionTo"></div>
<div :id="'char_nav_'+index" class="tt-small phone-title" :data-key="index">
<span>{{index}}</span></div>
<div class="box">
<ul>
<li id="char_nav_audi" v-for="(item2, index2) in item" :key="index2">
</li>
</ul>
</div>
</div>

<style lang="less" scoped>
.brand-list{
position: relative;
}
.positionTo{
position: absolute;
height: 30px;
background: transparent;
width: 30px;
background: red;
z-index: 99;
top:-46px;
}
</style>

  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 程式36:有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人推出圈子,問最後留下的是原來第幾號的那位 var n=20; var arr=[]; for(var i=0;i<n;i++){ arr.push(1); } for(var j=1,least=n;;j++){ ...
  • 這段時間學習了 socket.io ,用它寫了小項目,在此總結下它的基本使用方式和一些要點。 socket.io 是基於 Node.js 和 WebSocket 協議的實時通信開源框架,它包括客戶端的JavaScript和伺服器端的Node.js。 服務端 這裡後端使用的框架是 koa2 , soc ...
  • fetch("/") .then(response => response.json()) .then(json => { this.restaurants = json; console.log(this.restaurants.length) }) ...
  • 簡介 "Koa" 就是一種簡單好用的 Web 框架。它的特點是優雅、簡潔、表達力強、自由度高。本身代碼只有1000多行,所有功能都通過插件實現。 學前準備 檢查Nodejs版本 打開cmd命令行視窗 註意:Koa 必須使用 7.6 以上的版本。如果你的版本低於這個要求,就要先升級 Node。 "配套 ...
  • 還是先從一個題目開始: 寫一個隔1s輸出數組的一項的函數。 如果可以用ES6語法,則可以這麼寫: 但是如果把這裡的 改成 ,則輸出就會變成一連串的 。 有同學很快想到了這是閉包啊,因為 把函數加入到 中,所以等到setTimeout的函數體執行時, 已經走完了 迴圈,變成了 。`arr[arr.le ...
  • 一、事件對象event 1.1 preventdefault()和returnValue阻止預設事件 通知瀏覽器不要執行與事件關聯的預設動作。 preventdefault() 支持Chrome等高級瀏覽器 returnValue 支持IE6、7、8 1.2 stopPropagation()和ca ...
  • 概述 眼下wepack似乎已經成了前端開發中不可缺少的工具之一,而他的一切皆模塊的思想隨著webpack版本不斷的迭代(webpack 4)使其打包速度更快,效率更高的為我們的前端工程化服務 相信大家使用webpack已經很熟練了,他通過一個配置對象,其中包括對入口,出口,插件的配置等,然後內部根據 ...
  • HTML的概念 概念: HTML 是用來描述網頁的一種語言。 HTML 指的是超文本標記語言 (Hyper Text Markup Language) HTML 不是一種編程語言,而是一種標記語言 (markup language) 標記語言是一套標記標簽 (markup tag) HTML 使用標 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...