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...