首頁  >  文章  >  web前端  >  vue監聽滾動事件某元素吸頂或固定位置顯示詳解

vue監聽滾動事件某元素吸頂或固定位置顯示詳解

小云云
小云云原創
2018-05-10 16:48:579083瀏覽

本文主要為大家詳細介紹了vue實現某元素吸頂或固定位置顯示,監聽滾動事件,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能幫助到大家。

最近寫了一個VUE的web app項目,需要實現某個部位吸頂的效果。即,頁面往上滑動,剛好到達該部位時,該部分,固定在頂部顯示。

1、監聽捲動事件
利用VUE寫一個在控制台列印目前的scrollTop,
首先,在mounted鉤子中為window新增一個捲動捲動監聽事件,

mounted () {
 window.addEventListener('scroll', this.handleScroll)
},

然後在方法中,加入這個handleScroll方法

handleScroll () {
 var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
 console.log(scrollTop)
},

控制台列印結果:

##2、監聽元素到頂部的距離  並判斷滾動的距離如果大於了元素到頂部的距離時,設定searchBar為true,否則就是false

handleScroll () {
 var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
 var offsetTop = document.querySelector('#searchBar').offsetTop
 if (scrollTop > offsetTop) {
 this.searchBarFixed = true
 } else {
 this.searchBarFixed = false
 }
},

先寫一個該元素固定到頂部的樣式,isFixed(less寫法)

.searchBar{
 .isFixed{
 position:fixed;
 background-color:#Fff;
 top:0;
 z-index:999;
 }
 ul {
 WIDTH:100%;
 height: 40px;
 line-height: 40px;
 display: flex;
 li {
  font-size: 0.8rem;
  text-align: center;
  flex: 1;
  i {
  font-size: 0.9rem;
  padding-left: 5px;
  color: #ccc;
  }
 }
 border-bottom: 1px solid #ddd;
 }
}

然後將需要固定的元素的class與searchBar進行綁定,如果searchBar為true時,就應用這個isFixed樣式

<p class="searchBar" id="searchBar">
 <ul :class="searchBarFixed == true ? &#39;isFixed&#39; :&#39;&#39;">
 <li>区域<i class="iconfont icon-jiantouxia"></i></li>
 <li>价格<i class="iconfont icon-jiantouxia"></i></li>
 <li>房型<i class="iconfont icon-jiantouxia"></i></li>
 <li>更多<i class="iconfont icon-jiantouxia"></i></li>
 </ul>
</p>

固定後的結果:

注意,如果離開該頁面需要移除這個監聽的事件,不然會報錯。

destroyed () {
 window.removeEventListener(&#39;scroll&#39;, this.handleScroll)
},

相關推薦:


關於JavaScript如何實作導覽列吸頂操作的實例分享

js實作導覽吸頂效果

實作tab吸頂使用react.js中的問題#

以上是vue監聽滾動事件某元素吸頂或固定位置顯示詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn