Ionic2 Sticky 粘附效果

2021-07-25 14:15:29 字數 1921 閱讀 8766

ionic2中實現sticky功能,在ios中使用的是position:sticky屬性,但是這個屬性在大部分的瀏覽器中並不支援,android瀏覽器也一樣不支援。在安卓中使用fixed屬性。

我在做這個功能的時候花了大量的時間,主要還是因為對ionic2的不熟悉造成的。下面給出我的爬坑之路。

第一坑:使用directive

理論上來說使用directive是最好的方法,但是本人實力有限實現不了。

首先執行:ionic g directive stick,會在專案中生成乙個components資料夾,裡面有乙個stick.ts檔案:

import  from '@angular/core';

/* generated class

forthe

stick

directive.

see

for more info on angular 2 directives.

*/@directive()

export

class

stick

}

具體用法
@ngmodule()
然後就可以在所有頁面去應用這個directive了。

第二坑:在ionic2中使用原生js進行scroll的監聽

1、使用angular2提供的hostlistener

@hostlistener('window:scroll',['$event'])

handlescrollevent(e)

//這種方式監聽不到scroll事件但是可以監聽到click事件

2、使用window.onscroll

window.onscroll = (e)=>

//這樣的方式也監聽不到滾動事件

3、使用document.addeventlistener

document.addeventlistener('scroll', (e) => , true);

這種方式是可以監聽到滾動事件的,但是在這裡面沒有辦法獲取到滾動時距頂部的距離,也沒有辦法使用

最終在多番嘗試之後使用的是angular2提供的addscrolllistener方法

import  from '@angular/core';

import from 'ionic-angular';

@viewchild(content) content:content;

@viewchild('item') stick;

ionviewdidload() else

})}

使用以下的方法即可實現滾動的時候獲取距離頂部的距離了。但是要使用這個方法,必須在頁面對應的ts檔案中,而不能寫成directive,但是按道理是可以寫進directive的,但是本人水平有限,望高人不吝賜教。

但是在ionic rc.4中addscrolllistener又不適用了,而是需要使用以下方法,

this.content.ionscroll.subscribe(($event: any) =>
然後新增stick-item這個class後就可以寫相應的樣式了

--scss檔案---

ion-content

}}

padding>

item1ion-item-divider>

}ion-item>

item2ion-item-divider>

}ion-item>

ion-list>

ion-content>

這裡使用#item標識然後用@viewchild獲取。

ionic2 常用裝飾器

裝飾器是提供元資料,即描述資料的資料 對資料及資訊資源的描述。常用到的裝飾器有 component class mycomponent 元件裝飾器,宣告乙個類是元件,並提供提供有關元件的元資料,對屬性進行描述。directive class mydirective 宣告乙個類是乙個指令,並提供有關該...

Ionic2 新版本試用

聽說ionic2 beta已經出來很久了,手頭上的專案還是1.2版本的,就想著往2上面遷了.估計很多人也沒有用到,也想學習下,那我先把遇到的坑來講一下,好讓大家少走彎路.1 首先就是node了,以前用的是4.2.2這個版本的 然後我就就開開心心的走到官網去了,這樣就可以了,但是網速問題,所以down...

ionic2 中的網路監測功能

參考 後須還將發表其他我正在ionic2使用的外掛程式或功能 增加網路監測功能的cordova外掛程式 ionic plugin add cordova plugin network information 開啟網路狀態動態檢測 開啟網路監測 startnetdetect stop disconne...