最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue使用原生js實(shí)現(xiàn)滾動(dòng)頁(yè)面跟蹤導(dǎo)航高亮的示例代碼

 更新時(shí)間:2018年10月25日 11:23:24   作者:小恐龍  
這篇文章主要介紹了vue使用原生js實(shí)現(xiàn)滾動(dòng)頁(yè)面跟蹤導(dǎo)航高亮的示例代碼,滾動(dòng)頁(yè)面指定區(qū)域?qū)Ш礁吡?。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

需要使用vue做一個(gè)專(zhuān)題頁(yè)面。滾動(dòng)頁(yè)面指定區(qū)域?qū)Ш礁吡痢?br />

監(jiān)聽(tīng)滾動(dòng)頁(yè)面事件,對(duì)比當(dāng)前頁(yè)面的位置與元素的位置,如果當(dāng)前滾動(dòng)的區(qū)域位置大于元素的位置,導(dǎo)航添加class,其他去掉class進(jìn)行樣式切換。

我使用的方法是在定位元素上添加id,在導(dǎo)航添加data-id屬性,監(jiān)聽(tīng)滾動(dòng)事件,如果當(dāng)前滾動(dòng)區(qū)域大于定位元素區(qū)域,將元素的id賦值給變量,然后與導(dǎo)航的data-id進(jìn)行匹配,切換class。

html結(jié)構(gòu)

main.vue

<template>
 <div class="qz-home">
  <div class="quiz-container">
   <div class="quiz-ad-pic" id="pagetop"></div>
   <div class="quiz-main">
    <div class="quiz-main-inside" id="js-content">
     <quiz-sessions class="item" id="quizhall"></quiz-sessions>
     <quizRecords class="item" id="quizrecord"></quizRecords>
     <quiz-history class="item" id="quizHistory"></quiz-history>
     <quiz-mine class="item" id="quizMine"></quiz-mine>
     <quiz-rank class="item" id="quizRank"></quiz-rank>
     <quiz-rule class="item" id="quizRule"></quiz-rule>
    </div>
   </div>
   <navigation id="js-nav"></navigation>
  </div>
 </div>
</template>

navigation.vue

<template>
 <nav class="nav-container">
  <div class="nav-mark"></div>
  <div class="nav-main">
   <ul class="nav-list">
    <li :class="{'cur': curindex === index}" v-for="(item, index) in navList" :key="index" :data-id="item.id"><a @click="linkTo(item.id, index)">{{item.name}}</a></li>
   </ul>
   <div class="backtop" @click="backTop()">
    <a></a>
   </div>
  </div>
 </nav>
</template>

javascript

export default {
 name: "Navigation",
 data() {
  return {
   navList: [
    { name: "競(jìng)猜大廳", id: "quizhall" },
    { name: "競(jìng)猜記錄", id: "quizrecord" },
    { name: "歷史賽事", id: "quizHistory" },
    { name: "我的競(jìng)猜", id: "quizMine" },
    { name: "排行榜", id: "quizRank" },
    { name: "玩法", id: "quizRule" }
   ],
   curindex: 0
  };
 },
 mounted() {
  this.initScroll();
 },
 methods: {
  initScroll() {
   window.addEventListener('scroll', function() {
    // 封裝類(lèi)名函數(shù)集:判斷、移除、增加、獲?。ê?jiǎn)單粗暴版);
    function removeClass(obj, cls) {
     if (obj.className == cls) {
      obj.className = "";
     }
    }
    function addClass(obj, cls) {
     if (obj.className != cls) {
      obj.className = cls;
     }
    }

    let pos = document.documentElement.scrollTop;
    if (pos > 300) {
     document.querySelector('.nav-container').style.display = 'block';
    } else {
     document.querySelector('.nav-container').style.display = 'none';
    }
    var menus = document.getElementById("js-nav").getElementsByTagName("li");
    var items = document.getElementById("js-content").querySelectorAll(".item");
    var currentId = "";
    
    for (var i = 0; i < items.length; i++) {
     var _item = items[i];
     var _itemTop = _item.offsetTop;
     if (pos > _itemTop - 200) {
      currentId = _item.id;
     } else {
      break;
     }
    }
    if (currentId) {
     for (var j = 0; j < menus.length; j++) {
      var _menu = menus[j];
      // href屬性獲取的是整個(gè)link,需以#為界截除獲取最后一個(gè)元素;
      var _href = _menu.getAttribute('data-id');
      if (_href != currentId) {
       removeClass(_menu, "cur");
      } else {
       addClass(_menu, "cur");
      }
     }
    }
   })
  }
 }
};

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue的Class與Style綁定的方法

    Vue的Class與Style綁定的方法

    本篇文章主要介紹了Vue的Class與Style綁定的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • vue2中l(wèi)ess的安裝以及使用教程

    vue2中l(wèi)ess的安裝以及使用教程

    less是css預(yù)處理器,對(duì)原先css進(jìn)行了擴(kuò)展和補(bǔ)充,下面這篇文章主要給大家介紹了關(guān)于vue2中l(wèi)ess的安裝以及使用的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • Vue使用js-audio-recorder實(shí)現(xiàn)錄制,播放與下載音頻功能

    Vue使用js-audio-recorder實(shí)現(xiàn)錄制,播放與下載音頻功能

    這篇文章主要為大家詳細(xì)介紹了Vue如何使用js-audio-recorder實(shí)現(xiàn)錄制,播放與下載音頻功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2023-12-12
  • Vue中的Ajax?配置代理slot插槽的方法詳解

    Vue中的Ajax?配置代理slot插槽的方法詳解

    這篇文章主要介紹了Vue中的Ajax?配置代理?slot插槽的相關(guān)知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • Vue.js狀態(tài)管理之Pinia與Vuex詳解

    Vue.js狀態(tài)管理之Pinia與Vuex詳解

    Pinia和Vuex一樣都是是vue的全局狀態(tài)管理器,其實(shí)Pinia就是Vuex5,只不過(guò)為了尊重原作者的貢獻(xiàn)就沿用了名字Pinia,下面這篇文章主要給大家介紹了關(guān)于Vue.js狀態(tài)管理之Pinia與Vuex的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • Vue中的全局指令防止按鈕重復(fù)點(diǎn)擊

    Vue中的全局指令防止按鈕重復(fù)點(diǎn)擊

    這篇文章主要介紹了Vue中的全局指令防止按鈕重復(fù)點(diǎn)擊,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Vue動(dòng)態(tài)組件component標(biāo)簽的用法大全

    Vue動(dòng)態(tài)組件component標(biāo)簽的用法大全

    這篇文章主要介紹了Vue動(dòng)態(tài)組件component標(biāo)簽的用法,在Vue中,可以通過(guò)component標(biāo)簽的is屬性動(dòng)態(tài)指定標(biāo)簽,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • vue?parseHTML?函數(shù)拿到返回值后的處理源碼解析

    vue?parseHTML?函數(shù)拿到返回值后的處理源碼解析

    這篇文章主要為大家介紹了vue?parseHTML?函數(shù)拿到返回值后的處理源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • HTML頁(yè)面中使用Vue示例進(jìn)階(快速學(xué)會(huì)上手Vue)

    HTML頁(yè)面中使用Vue示例進(jìn)階(快速學(xué)會(huì)上手Vue)

    Vue是用于構(gòu)建用戶(hù)界面的漸進(jìn)式JavaScript框架。特色:構(gòu)建用戶(hù)界面—數(shù)據(jù)變成界面;漸進(jìn)式—Vue可以自底向上逐層的應(yīng)用。VUE有兩種使用方式,一種實(shí)在html中直接使用vue做開(kāi)發(fā),一種是企業(yè)級(jí)的單頁(yè)面應(yīng)用。
    2023-02-02
  • vue3動(dòng)態(tài)監(jiān)聽(tīng)瀏覽器窗口變化實(shí)例

    vue3動(dòng)態(tài)監(jiān)聽(tīng)瀏覽器窗口變化實(shí)例

    這篇文章主要給大家介紹了關(guān)于vue3動(dòng)態(tài)監(jiān)聽(tīng)瀏覽器窗口變化的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue3具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-07-07

最新評(píng)論

永吉县| 龙口市| 瑞金市| 横山县| 聂拉木县| 阜南县| 通州区| 慈溪市| 玉龙| 邢台县| 汉源县| 广水市| 葫芦岛市| 苍溪县| 福鼎市| 泸水县| 蒙城县| 兴安县| 南澳县| 海口市| 古蔺县| 江孜县| 博野县| 宽甸| 东丰县| 沈丘县| 濉溪县| 紫金县| 大埔县| 宿州市| 吐鲁番市| 陈巴尔虎旗| 湘潭县| 乌审旗| 陕西省| 炎陵县| 乌鲁木齐市| 海宁市| 叙永县| 大同市| 闵行区|