1. 程式人生 > >vue的滾動scroll事件 實現某元素吸頂或者固定位置顯示

vue的滾動scroll事件 實現某元素吸頂或者固定位置顯示

最近寫了一個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樣式

<div class="searchBar" id="searchBar">
  <ul :class="searchBarFixed == true ? 'isFixed' :''">
    <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>
</div>

固定後的結果:


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

destroyed () {
  window.removeEventListener('scroll', this.handleScroll)
},

相關推薦

vue滾動scroll事件 實現元素或者固定位置顯示

最近寫了一個VUE的web app專案,需要實現某個部位吸頂的效果。即,頁面往上滑動,剛好到達該部位時,該部分,固定在頂部顯示。1、監聽滾動事件利用VUE寫一個在控制檯列印當前的scrollTop,首先,在mounted鉤子中給window新增一個滾動滾動監聽事件,mounted () { window.

vue監聽滾動事件 實現元素或者固定位置顯示

最近寫了一個VUE的web app專案,需要實現某個部位吸頂的效果。即,頁面往上滑動,剛好到達該部位時,該部分,固定在頂部顯示。 1、監聽滾動事件 利用VUE寫一個在控制檯列印當前的scrollTop, 首先,在mounted鉤子中給window新增一個滾動滾

Vue 事件監聽實現導航欄效果(頁面滾動後定位)

所說的吸頂效果就是在頁面沒有滑動之前,導航欄的效果如下圖所示:當頁面向上滑動之後,導航欄始終固定在頁面的上方。具體程式碼:寫入事件監聽,監聽滾動條。mounted () { // 事件監聽滾動條 window.addEventListener('scroll', this.watchS

jQuery scroll事件實現監控滾動條分頁示例

scroll事件適用於window物件,但也可滾動iframe框架與CSS overflow屬性設定為scroll的元素。 複製程式碼程式碼如下: $(document).ready(function () { //本人習慣這樣寫了     $(window).sc

實現元素上滑至頂端時固定懸浮

.afix{ position:fixed; top:45px; z-index:100; } .fix{ position:fixed; top:0px; z-index:100; } .parent { background: white; width: 100%; border-bottom: 1px

vue獲取當前事件的dom元素 var thisDom = e.currentTarget;

在vue裡面,經常用到click,如何獲取執行click事件的當前dom物件呢? <span class="btn-play" tapmode @click="playvideo($event,

vue滾動載入事件

created(){//頁面建立的時候呼叫 this.scrollLoding(); }, scrollLoding() { // 快取指標 let self = this;

RecyclerView自身帶的滾動事件(平滑的移動到特定的Position位置顯示)

關於滾動事件RecyclerView給我們提供了兩個方法: 方法一: 直接呼叫; mRecycleview.scrollToPosition(position);   是可以實現直接顯示到當前你要顯示的position的位置的 但是給我的體驗是並沒有移動的那種效果所以我搜索了

Android studio RecyclerView實現炫酷效果

public class SectionDecoration extends RecyclerView.ItemDecoration { private List<NameBean> beanList; private TextPaint textPaint; priva

jquery實現導航欄效果(簡潔版)

憋說話,直接上程式碼,先是最最重要的js:   $(function(){     var a = $('#course-tab'),       b =a.offset();//返回或設定導航欄相

C# 滑鼠懸浮mouseHover事件的新增 實現滑鼠懸浮在按鈕或者控制元件 顯示相關的幫助資訊

有些時候,我們為了讓程式更加的人性化,降低應用的難度,必要的幫助資訊是不可少的。 比如,儘管某些按鈕我們已經給其取了名字,我們可以從名字上大致判斷出這個按鈕的作用是什麼,但是有些時候這些資訊還是不夠,或者是軟體的使用者並不是業內相關的人員,這時候我們可以使用mouseHov

easyui 視窗 滾動固定位置顯示

$('#w').window('open'); $('#w').window("move",{top:$(document).scrollTop() + 30}); 獲得右側滾動條目前的高度位置,然後再移動此位置

vue監聽滾動事件 實現動態錨點

title 復制代碼 嘗試 理念 元素 滾動 功能 time 滿足 前幾天做項目的時候,需要實現一個動態錨點的效果 如果是傳統項目,這個效果就非常簡單。但是放到 Vue 中,就有兩大難題: 1. 在沒有 jQuery 的 animate() 方法的情況下,如何實現平滑滾動

如何在Vue專案中實現元素

我的思路就是判斷合適的時候將這個元素的position設為fixed,那麼這個合適的時機如何判斷呢?我們可以計算頁面滾動的距離。 監聽頁面滾動狀態 在mounted鉤子中加入以下程式碼: mounted() { // handleScroll為頁面滾動的監聽回撥 wind

Vue 自定義指令實現點選元素外觸發事件

前言 最近搞了畢設,需要實現一個場景,點選一塊區域,彈出一個編輯區域,點選頁面的其他地方的時候,這個編輯區域就隱藏,本想想之前寫模態框一樣寫個方法的時候,突然覺得可以嘗試用 vue 相關的東西優雅的解決這個事情,然後就學了下面的自定義指令了。 前置知識 既然要用 V

Qt中隱藏滾動條重新實現鼠標滾輪事件wheelEvent

spa pan del 滾輪 重載方法 div qt5 delta event delta()已經被棄用了,QT5中用的是angleDelta(),計算的時候取angleDelta().y()值。 #重載方法wheelEvent(self,event),即滾輪事件

滾動頁面,加載元素實現邏輯

height 加載 set clas 提前 fse () -s fun 1 <script> 2 $(function(){ 3 $(window).scroll(function () { //滾動觸發 4

vue.js click點擊事件獲取當前元素對象

sage div get fun 事件傳播 處理 class 前行 innerhtml Vue.js可以傳遞$event對象 <body id="app"> <ul> <li v-on:click="say(‘hello!‘, $

js滾動事件實現滾動觸底加載

ans spa 網頁 寫法 round 移動 text som ul li 移動端觸底加載時前端開發過程中常用功能,主要是通過三個值的大小來進行判斷; 首先介紹jquery的寫法,代碼如下: $(window).scroll(function(){ var wind

Vue實現音樂播放器(十六):滾動列表的實現

com 作用 efault nor 大小 -s stylus BE ack 滾動列表是一個基礎組件 他是基於scroll組件實現的 在base文件夾下面創建一個list-view文件夾 裏面有list-view.vue組件 <template>