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.mzph.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; 超文本传输协…