IOS6+ 下,使用position:sticky實現粘性布局

回顧一下

開通博客之后,潦草的寫了幾篇,之后由于沒時間,加上文筆不好等等(好吧,都是借口),基本上就沒怎么寫過了,其實平時也做了一些記錄,但就是犯懶,沒有去整理。現在打算重新開始了,記錄一些自己學習過程中,對一些新的知識的理解,不一定對,目的就是鞭策自己不斷的去反省,總結。


正文

場景

OK,回歸正題。相信大家在移動端頁面里,經常會遇到一個場景,頁面里有個導航欄,當用戶向下滑動的時候,將導航欄固定到頁面頂部。

這種布局其實實現起來非常簡單,通常我們都會監聽window的scoll事件,當頁面滾動到某個位置時,將導航條的position設為fixed,否則,取消fixed。

問題來了

但是~~在安卓設備里,沒毛病,在iOS設備里,問題就來了,在iOS上會發現,頁面向下滑,手指離開頁面,還會有一段滾動,但是滾到相應的位置時,我們的導航條并沒有fix到頂部,而是當頁面停止滾動的時候,fixed才會生效。所以這時候,導航欄會有個跳動的效果,剛開始測試妹子給我提bug,我一度認為這尼瑪不是bug啊。。。后來研究了一下

原因及解決方案

在iOS設備上,iOS下的瀏覽器會在頁面滾動的時候,會暫停所有js的執行,直到滾動停止才會繼續去執行js(注意暫停了所有js的執行,所以考慮用setTimeout或setInterval也是沒有用的)。所以頁面滾動時,scroll事件在iOS的瀏覽器下并不會持續被觸發,而是在頁面滾動停止后,才會去觸發一次scroll事件。 這就是問題的根源。

然后,萬能的CSS,position還有一個不常見的屬性:sticky,使用position:sticky,可以完美的解決這個問題,但這個屬性支持度并不好,因此可以先通過以下代碼先判斷是否支持:

    _supportSticky() {let e, i = "-webkit-sticky", s = document.createElement("i");s.style.position = i;e = s.style.position;s = null;return e === i}

如果支持,就給設置position: -webkit-sticky,top:0;這樣,就可以完美實現fixed效果,但是注意:如父容器設置屬性overflow:hidden,父容器根本就不能滾動,所以sticky元素也不會有滾動然后固定的情況。sticky效果就不會生效。

這樣,我們在iOS平臺里,先判斷是否支持sticky屬性是否支持,如果支持,就使用sticky,完美~

轉載于:https://www.cnblogs.com/lkp-blog/p/7506101.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257461.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257461.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257461.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SQL游標使用方法SQL游標使用方法(轉)

1. 為何使用游標:    使用游標(cursor)的一個主要的原因就是把集合操作轉換成單個記錄處理方式。用SQL語言從數據庫中檢索數據后,結果放在內存的一塊區域中,且結果往往是一個含有多個記錄的集合。游標機制允許用戶在SQL server內逐行地訪問…

matlab銑削,基于MATLAB的微細銑削力分析

2010年 12月第 38卷 第 23期 機床與液壓 MACH INE TOOL & HYDRAUL ICS Dec2010Vol38 No123DO I: 10. 3969 / jissn11001 - 38812010231037 收稿日期 : 2009 - 11 - 05 作者簡介 : 張衛鋒 (1978—) , 男 , 講師 , 研究領域為機器人技術、仿真技術、特種加工。電話: 13656487…

軟件測試作業——三

作業見《軟件測試基礎》中文版49頁第7題。英文版63頁 a) b) 令MAXPRIMES 4,t1不能檢查出錯誤,t2發生數組越界,使得t2比t1更容易發現。 c)t3(n1) d)節點覆蓋:TR{1,2,3,4,5&#xff0…

細說Java主流日志工具庫

目錄 概述??java.util.logging (JUL)??Log4j??Logback??Log4j vs Logback??common-logging??slf4j??common-logging vs slf4j??總結實施日志解決方案??引入jar包????slf4j直接綁定日志組件????slf4j兼容非slf4j日志組件????spring 集成 slf4j??…

SQL2008使用json.net實現XML與JSON互轉

借助CLR&#xff0c;首先實現字符串的互轉&#xff0c;然后使用存儲過程實現JSON2table public class JsonFunction { /// <summary> /// XML轉JSON /// </summary> /// <param name"xml"></param> /// <returns></returns> ///…

黑胡桃木php,揭秘美國黑胡桃木的美

家具是藝術和文化的載體&#xff0c;人們對木的喜愛&#xff0c;是一種與生俱來的情懷。好的木材淳厚質樸、溫潤堅定&#xff0c;有著不動聲色的力量。美國黑胡桃木(亦稱黑核桃木)便是如此&#xff0c;“身體”中散發著讓人無法抗拒的魅力&#xff01;美國黑胡桃木體現的是“深…

c mysql備份還原數據庫,MySQL數據庫備份與恢復方法

常有新手問我該怎么備份數據庫&#xff0c;下面介紹3種備份數據庫的方法&#xff1a;(1)備份數據庫文件MySQL中的每一個數據庫和數據表分別對應文件系統中的目錄和其下的文件。在Linux下數據庫文件的存放目錄一般為/var/lib/mysql。在Windows下這個目錄視MySQL的安裝路徑而定&a…

第四篇:白話tornado源碼之褪去模板外衣的前戲

加班程序員最辛苦&#xff0c;來張圖醒醒腦吧&#xff01; ... ... ... 好了&#xff0c;醒醒吧&#xff0c;回歸現實看代碼了&#xff01;&#xff01; 執行字符串表示的函數&#xff0c;并為該函數提供全局變量 本篇的內容從題目中就可以看出來&#xff0c;就是為之后剖析tor…

生活常識

雷雨天野外要關手機 溫漢華介紹&#xff0c;雷雨天&#xff0c;山頂空曠處容易遭雷電襲擊。 他同時提醒&#xff0c;若游客在山上游覽時&#xff0c;遭遇到電閃雷鳴的暴雨天氣時&#xff0c;一定要注意以下事項&#xff1a; 其一&#xff0c;關停自己的手機。 其二&#xff0c;…

主程序分析法MATLAB編程,專題五??概率統計問題的Matlab求解

【實驗目的及要求】I&#xff0e;熟練掌握Matlab編程中常見概率分布的概率密度、概率分布、逆分布、均值和方差等語句的調用格式&#xff0c;學會用Matlab對服從各種分布的樣本進行參數估計和假設檢驗。對實際問題&#xff0c;能夠進行樣本的分析&#xff0c;得出服從哪種分布的…

LFS(Linux From Scratch)學習

一、環境準備 使用Debian平臺&#xff0c;需做如下環境檢查&#xff1a; 1、檢查各個需要的工具及內核版本號&#xff0c;看看是否符合lfs7.7的列表要求 2、檢查需要用到的庫&#xff0c;一共有三個&#xff0c;gmp, mpfr和mpc 工具檢查腳本如下&#xff1a; #filename:check_e…

騰訊云 Centos 配置 JDK Tomcat Mysql

配置JDK 從 oracle 官網下載 rpm 版本的 jdk 包,官方鏈接:點擊此處跳轉。下載jdk的時候記得看一看自己的系統是 64 位還是 32 位的&#xff0c;下對應的版本。下載好以后上傳到騰訊云服務器中,命令格式為 scp &#xff3b;文件路徑] &#xff3b;云主機用戶名ip地址]:[服務器上…

php 取url根域名,php中取得URL的根域名的代碼

/*** 取得根域名** author lonely* create 2011-3-11* version 0.1* lastupdate lonely* package Sl*/class Sl_RootDomain{private static $self;private $domainnull;private $hostnull;private $state_domain;private $top_domain;/*** 取得域名分析實例* Enter description…

如何創建sequence

我用的是在oracle中的方法&#xff0c;在oracle中sequence就是所謂的序列號&#xff0c;每次取的時候它會自動增加&#xff0c;一般用在需要按序列號排序的地方。 1、Create Sequence 你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE權限&#xff0c; CREATE SEQUENCE SI_E…

簡易版jQuery——mQuery

前面的話 雖然jQuery已經日漸式微&#xff0c;但它里面的許多思想&#xff0c;如選擇器、鏈式調用、方法函數化、取賦值合體等&#xff0c;有的已經變成了標準&#xff0c;有的一直影響到現在。所以&#xff0c;jQuery是一個偉大的前端框架。前端世界日新月異&#xff0c;由于實…

LaTeX?安裝配置?OSX

LaTeX 安裝配置 OSX官方網站&#xff1a;http://www.latex-project.orghttp://www.tug.org/mactex/http://pages.uoregon.edu/koch/BasicTeX.pdf完整的Tex超過2G&#xff0c;一般用戶沒必要&#xff0c;可以先安裝BasicTeX&#xff0c;當有需要時include必要的庫即可1.安裝Basi…

php 正三角塔,PHP 環境塔建與數據類型轉換

手動塔建PHP開發環境安裝php c:\apps\php安裝apache c:\apps\apache1.配制apache配制c:\apps\apache\conf\httpd.confDocumentRoot"c:/apps/www" //指定工作目錄,WWW為自已創健Directoryindex index.php index.html // 加入:loadModule php5_module "c:\apps\PH…

C/C++基礎知識:函數指針和指針函數的基本概念

【函數指針】 在程序運行中&#xff0c;函數代碼是程序的算法指令部分&#xff0c;它們和數組一樣也占用存儲空間&#xff0c;都有相應的地址。可以使用指針變量指向數組的首地址&#xff0c;也可以使用指針變量指向函數代碼的首地址&#xff0c;指向函數代碼首地址的指針…

告警系統郵件引擎

2019獨角獸企業重金招聘Python工程師標準>>> 20.23-20.25 告警系統郵件引擎 創建發郵件的腳本——mail.py [rootlocalhost mail]# pwd /usr/local/sbin/mon/mail[rootlocalhost mail]# vim mail.py #!/usr/bin/env python #-*- coding: UTF-8 -*- import os,sys rel…

【HTTP 2】簡介(Introduction)

前情提要 在上一篇文章《【HTTP 2.0】 序言》中&#xff0c;我們簡要介紹了 HTTP 2 協議的概要和協議狀態。 在本篇文章中&#xff0c;我們將會了解到 HTTP 2 協議簡介&#xff08;Introduction&#xff09;部分的內容。 簡介&#xff08;Introduction&#xff09; 超文本傳輸協…