一区二区日本_久久久久久久国产精品_无码国模国产在线观看_久久99深爱久久99精品_亚洲一区二区三区四区五区午夜_日本在线观看一区二区

vue3錨點定位兩種實現方式示例

目錄 方法1: 利用ref實現錨點定位 前面的廢話文學 解決問題的方法 1. setup函數內定義變量 2. 動態獲取ref并存放到eleRefs數組當中 3. 滾動到特定的ref位置 方法2: 利用a標簽實現錨點定位(
目錄
  • 方法1: 利用ref實現錨點定位 前面的廢話文學
    • 解決問題的方法
    • 1. setup函數內定義變量
    • 2. 動態獲取ref并存放到eleRefs數組當中
    • 3. 滾動到特定的ref位置
  • 方法2: 利用a標簽實現錨點定位(滾動響應)
    • 第二次的廢話文學
    • 解決問題的方法
    • 2.滾動響應
  • 總結

    方法1: 利用ref實現錨點定位 前面的廢話文學

    說到錨點定位,很多人第一時間會想到 a標簽。但是a標簽實現的錨點定位并不是那么的完美,特別是在hash模式下。
    對我而言,vue3的ref就實在是太完美了。

    解決問題的方法

    很多情況下,我們會循環一定格式的數據對頁面進行渲染,然后再有錨點定位的需求。那么我們該怎么去做呢?

    1. setup函數內定義變量

    const eleRefs = ref([]);
    const setRef = (el) => {
      if (el) {
        eleRefs.value.push(el);
      }
    };
    //獲取變量值
    console.log(eleRefs.value[0])

    2. 動態獲取ref并存放到eleRefs數組當中

     <template v-for="(item, index) in data.catalogue">
          <div class="part-cont" :id="'part' + item.id" :ref="setRef">
            <div class="part-box">
              <template v-for="(j, k) in item.picUrls" :key="k">
                <img :src="http://news.558idc.com/j" alt="">
              </template>
            </div>
            <template v-for="(i, ind) in item.children">
              <div :id="'part' + i.id" :ref="setRef" class="part-box">
                <template v-for="(j, k) in i.picUrls" :key="k">
                  <img :src="http://news.558idc.com/j" alt="">
                </template>
              </div>
            </template>
          </div>
        </template>

    3. 滾動到特定的ref位置

    eleRefs.value[0].scrollIntoView({ block: 'start', behavior: 'smooth' });

    over

    方法2: 利用a標簽實現錨點定位(滾動響應)

    第二次的廢話文學

    小編想了,還是想把a標簽的錨點定位也記錄一下。

    無論是PC端、移動端,還是APP、小程序,只要涉及長篇文章/畫冊、tab切換等的都可能會有錨點定位的需求。我們前端就需要做到點擊錨點能定位,滾動頁面能響應。

    解決問題的方法

    1. a標簽 定位到指定位置

    // 錨記
    	<a  rel="external nofollow" >點擊此處到目標位置</a>
    // 錨記位置
    	<div id="site"></div>

    2.滾動響應

    監聽滾動事件

    let currSite = document.documentElement.scrollTop || document.body.scrollTop // document.documentElement.scrollTop  // 當前滾動位置
    let windowHeight =window.innerHeight||document.documentElement.clientHeight || document.body.clientHeight  // 視口高度
     // 獲取元素信息
     let ele = document.getElementById('site')
     let eleTop = ele.offsetTop // 元素距頁面頂部高度(頭部)
     let eleHeight = ele.clientHeight  // 元素高度
      let eleBot = eleHeight + eleTop  // 元素底部距頁面頂部高度(尾部)
    /* 判斷元素是否在可視區域:
    	1.元素內嵌可視區域(首尾均在可視區域內)
    	2.元素外嵌可視區域(首位均在可視區域外)
    	3.元素頭部在可視區域內,尾部在可視區域外
    */
    if(eleTop >= currSite &&eleTop < currSite + windowHeight || (eleBot  > currSite &&eleBot < currSite + windowHeight) || (eleTop e < currSite && eleBot > currSite + windowHeight)){
    	 // 元素在可視區域
    }else{
    	// 元素不在可視區域
    }

    over

    總結

    到此這篇關于vue3錨點定位兩種實現方式的文章就介紹到這了,更多相關vue3錨點定位內容請搜索技圈網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持技圈網!

    聲明:所有內容來自互聯網搜索結果,不保證100%準確性,僅供參考。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。
    發表評論
    更多 網友評論0 條評論)
    暫無評論

    返回頂部

    主站蜘蛛池模板: 人人人人干 | 亚洲欧美日韩激情 | 亚洲女优在线播放 | 天堂色区 | 午夜免费成人 | 欧美性极品xxxx做受 | 国产精品成人一区二区 | 日本在线视频一区二区 | 成人精品视频在线 | 男女搞网站 | 久久久久久久久久久久一区二区 | 国产成人精品免费 | 搞av.com| 天天操天天射天天舔 | 国产精品一区二区久久久久 | 欧美精品欧美精品系列 | 久国久产久精永久网页 | 一色桃子av一区二区 | 麻豆久久久久久久久久 | 成人国产午夜在线观看 | 久久一区二 | 中文字幕二区三区 | 91一区二区 | 欧美色a v | 99视频免费在线观看 | 精品久久久久一区二区国产 | 国产精品不卡视频 | 韩国av网站在线观看 | 99精品国产一区二区青青牛奶 | 久久精品免费 | 日韩成人国产 | 色综合欧美 | 国产日韩精品一区 | 91成人精品 | 中文字幕乱码亚洲精品一区 | 亚洲视频在线免费 | 欧美区在线 | 国产精品日韩在线观看 | 91一区二区 | 国产精品久久久久久模特 | 日韩精品一区二区三区视频播放 |