移動端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導航欄吸頂:IOS(sticky)和Android兩種實現方式
混合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判斷瀏覽器iOS(iPhone)、Android手機移動端
通過判斷瀏覽器的userAgent,用正則來判斷手機是否是ios和Android客戶端。網上搜索來的,比較簡單: var u = navigator.userAgent;var isAndroid = u.indexOf('Android')>-1|| u.inde
HTML5中sessionStorage和localStorage兩種儲存方式的使用
<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必須是不可變資料型別:可雜湊,鍵一般是唯一的,如果重複,會替換前面的,值
Maven:mirror(映象)和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 reduce端join的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到陣列最