1. 程式人生 > >移動端HTML5導航欄吸頂:IOS(sticky)和Android兩種實現方式

移動端HTML5導航欄吸頂:IOS(sticky)和Android兩種實現方式

混合App,前端H5頁面,實現導航欄滑動到的時候貼頂。

注意:

首先寫的時候,監聽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"); } }); }

相關推薦

移動HTML5導航IOSstickyAndroid實現方式

混合App,前端H5頁面,實現導航欄滑動到的時候貼頂。 注意: 首先寫的時候,監聽scroll事件,滑動到指定位置時改為定位 position:fixed;,實際運用過程中,IOS無法實時監聽scroll事件,在滾動停止之後才觸發的 $(wind

通過判斷瀏覽器的userAgent,用正則來判斷手機是否是ios蘋果Android安卓客戶

A- A+ 通過判斷瀏覽器的userAgent,用正則來判斷手機是否是 ios (蘋果)和 Android (安卓)客戶端。程式碼如下: <script type="text/java

滾動列表導航功能的封裝

前言 因為遇到了這個需求,網上找了一圈也沒發現好用的外掛,於是就自己寫了一個,使用方式簡便,已經在專案的好幾處用到了這個外掛,現分享出來。 滾動列表頭部吸頂效果 安裝 Installation npm i sticky-list-headers --save 使用 usa

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

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

jquery實現導航效果簡潔版

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

android介面設計筆記底部導航實現方式

demo:https://github.com/linliangliang/BottomNavagationBar android底部導航欄的實現方式比較多,今天學習其中兩種方式: 一、使用tabLayout+Fragment實現。 二、使用BottomNavagationBar實現。 第一

android介面設計筆記底部導航實現方式

demo:https://github.com/linliangliang/BottomNavagationBar android底部導航欄的實現方式比較多,今天學習其中兩種方式: 一、使用tabLayout+Fragment實現。 二、使用BottomNavigationBar實現。

JS判斷瀏覽器iOSiPhoneAndroid手機移動

通過判斷瀏覽器的userAgent,用正則來判斷手機是否是ios和Android客戶端。網上搜索來的,比較簡單: var u = navigator.userAgent;var isAndroid = u.indexOf('Android')>-1|| u.inde

HTML5中sessionStoragelocalStorage儲存方式的使用

<head> <meta charset="utf-8"> <title>HTML5 本地儲存</title> <script type="text/javascript"> function $(id){retur

python基礎資料型別dict字典近期知識點總結__005

字典dict 1、資料型別劃分:可變資料型別,不可變資料型別 (1)不可變資料型別(可雜湊):str、int、bool、元組 (2)可變資料型別(不可雜湊):dict、list、set 2、dict: key必須是不可變資料型別:可雜湊,鍵一般是唯一的,如果重複,會替換前面的,值

Mavenmirror映象repository倉庫 區別

internal repository是指在區域網內部搭建的repository,它跟central repository, jboss repository等的區別僅僅在於其URL是一個內部網址 mirror則相當於一個代理,它會攔截去指定的遠端repository下載構

多執行緒學習多執行緒的實現方式

程序和執行緒 程序是受作業系統管理的基本執行單元。 執行緒是在程序中獨立執行的子任務。 多執行緒的優點 使用多執行緒技術後,可以在同一時間內執行更多不同種類的任務。 單執行緒是同步執行任務,多執行緒是非同步執行任務。 多執行緒的使用方式 1:繼承Thread 2:實現

自動補全、自動提示的實現方式前端實現與後實現

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <link rel="style

hadoop streaming reducejoin的python實現方式

實現student和course資料表的join操作,以學生編號(sno)為連線欄位 測試資料 student.txt檔案 #以一個空格分隔 #學生編號 姓名 #sno sname 01 lily 02 tom 03 jac

android介面設計側邊實現方式

dome:https://github.com/linliangliang/sidebar 一、使用sideingMenu結合fragment實現。 二、使用NavigationView和DrawerLayout實現。 第一種實現方式:https://mp.csdn.net/posted

android介面設計側邊實現方式

dome:https://github.com/linliangliang/sidebar 一、使用slideingMenu結合fragment實現。 二、使用Navigation和DrawerLayout實現。 第二種實現方式:https://mp.csdn.net/postedit/

Go語言學習八切片slice範圍range

// Go 語言切片是對陣列的抽象。切片的單詞來源於可以對其他陣列和切片進行片段擷取 // Go 陣列的長度不可改變,在特定場景中這樣的集合就不太適用, // Go中提供了一種靈活,功能強悍的內建型別切片("動態陣列"), // 與陣列相比切片的長度是不固定的,可以追加

判斷機器大小實現方式

一、為什麼會有大小端之分 這是因為在計算機系統中,我們是以位元組為單位的,每個地址單元都對應著一個位元組,一個位元組為 8bit。但是在C語言中除了8bit的char之外,還有16bit的short型,32bit的long型(要看具體的編譯器),另外,對於位數

Android-動態載入外掛化的實現方式介面

上一篇部落格中http://blog.csdn.net/lxping51/article/details/71480239,主要通過反射的方式來實現動態載入外掛化,今天我們以介面的方式來達到目的。介面的實現比反射更為簡單,而且直接呼叫對效能有很大的提高。但是這也

二分查詢演算法的實現方式非遞迴實現遞迴實現

二分查詢的條件是對一組有序陣列的查詢,這一點很容易忘記,在使用二分查詢的時候先要對陣列進行排序。 先說一下二分查詢的思路:一個有序陣列,想要查詢一個數字key的下標,首先算出中間下標mid,利用mid把這個陣列分為兩半,前一半從下標0到mid-1,後一半從mid+1到陣列最