モバイル端末HTML 5ナビゲーションバー吸上:IOS(sticky)とAndroidの2つの実装方式
2864 ワード
アプリ、フロントエンドH 5ページをミックスし、ナビゲーションバーがスライドしたときに貼り付ける.
注意:
まず書く時、scrollイベントを傍受し、指定された位置にスライドする時、位置
調べたところ
互換性
とくせい
1、stickyはBFCをトリガーしません.親要素はoverflow:hiddenまたはoverflow:autoプロパティではありません
2、スタイルシート書き込みz-indexが無効です.行内style書き込みは有効です.
3、stickyは容器に関するもので、つまりstickyの特性は彼の置かれている容器の中でしか発効しない.すなわち、sticky要素が親要素内でのみ有効であることを強調するのは、実際の使用では、親要素の高さがsticky要素の高さよりも低くてはならないからである.
最終コード:
参考記事:1.https://www.jianshu.com/p/b72f504121f5 2. http://web.jobbole.com/90352/
注意:
まず書く時、scrollイベントを傍受し、指定された位置にスライドする時、位置
position:fixed;
に変更し、実際の運用中、IOSはscrollイベントをリアルタイムで傍受することができず、スクロールが停止した後にトリガーされる $(window).on("scroll", function () {
var _this = $(this),
scrollTop = _this.scrollTop();
if (topHeight < scrollTop+5) {
$tabs.addClass("fixed");
} else {
$tabs.removeClass("fixed");
}
});
調べたところ
position:sticky;
stickyコード.sticky {
position: sticky;
position: -webkit-sticky;
top: 0;
}
互換性
とくせい
1、stickyはBFCをトリガーしません.親要素はoverflow:hiddenまたはoverflow:autoプロパティではありません
2、スタイルシート書き込みz-indexが無効です.行内style書き込みは有効です.
3、stickyは容器に関するもので、つまりstickyの特性は彼の置かれている容器の中でしか発効しない.すなわち、sticky要素が親要素内でのみ有効であることを強調するのは、実際の使用では、親要素の高さがsticky要素の高さよりも低くてはならないからである.
最終コード:
if (isIos) {
$tabs.addClass("sticky");
} else {
var topHeight = $(".top").height();
var navHeight = $tabs.height();
$(window).on("scroll", function () {
var _this = $(this),
scrollTop = _this.scrollTop();
if (topHeight < scrollTop+5) {
$tabs.addClass("fixed");
} else {
$tabs.removeClass("fixed");
}
});
}
参考記事:1.https://www.jianshu.com/p/b72f504121f5 2. http://web.jobbole.com/90352/