小技巧css解决移动端ios不兼容position:fixed属性,无需插件

本文主要是介绍小技巧css解决移动端ios不兼容position:fixed属性,无需插件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

移动端开发仿app头部底部固定设置position:fixed,android2.2以上已经实现。但是在ios8以下系统,当小键盘激活时,都会出现位置浮动问题。如图:


如何解决:

查阅资料之后想到一下几种解决方法

1,使用position:absolute模拟

<script type="text/javascript">window.οnscrοll=function(){$(".fixed").css("top",$(window).scrollTop());$(".foot").css("top",$(window).scrollTop()+$(window).height());}</script>

问题来了:滑动页面时头部底部div会有明显的抖动。

2,判断当前获得焦点元素是input则隐藏div改为position:absolute

<body οnlοad=setInterval("a()",500)><script type="text/javascript">function a(){if(document.activeElement.tagName == 'INPUT'){    $(".fixed").css({'position': 'absolute','top':'0'}); } else {  $(".fixed").css('position', 'fixed');  }}</script>

问题来了:不停监控dom,消耗资源。如果input个数较少,可在input里面添加onfocus事件好一些。

3,插件iscroll.js个人感觉不是很好用。可能方法不对,jQuery Mobile  没尝试,感觉会增负担。

4,重点来了:

只需要在中间部分外层div添加css样式position:fixed;top:50px; bottom:50px;overflow:scroll;就可以实现效果,无需插件。可拷贝下面代码运行。

<!DOCTYPE html><html lang="zh_cmn"><head><meta charset=utf-8 /><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /><meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0" /><title></title><style>.head,.foot{position:fixed;left:0;height:38px;line-height:38px;width:100%;background-color:#99CC00;}.head{top:0;}.foot{bottom:0;}.main{position:fixed;top:38px;bottom:38px;width:100%;overflow:scroll;background-color:#BABABA;}</style></head><body><header class="head">顶部固定区域</header><article class="main"  id="wrapper">  <div><p>当内容欲出隐藏时,灰色区域可上下拖动</p><p>当内容欲出隐藏时,灰色区域可上下拖动</p><p>当内容欲出隐藏时,灰色区域可上下拖动</p><p>当内容欲出隐藏时,灰色区域可上下拖动</p><p>当内容欲出隐藏时,灰色区域可上下拖动</p><p>当内容欲出隐藏时,灰色区域可上下拖动</p><p>当内容欲出隐藏时,灰色区域可上下拖动</p><p>当内容欲出隐藏时,灰色区域可上下拖动</p><p>当内容欲出隐藏时,灰色区域可上下拖动</p><p>当内容欲出隐藏时,灰色区域可上下拖动</p><p>当内容欲出隐藏时,灰色区域可上下拖动</p><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br><input type="text" value="" class="inputtext"> <br>content <br>content <br>content <br>content <br>content <br>content <br>content <br>content <br>content <br></div></article><footer class="foot">底部固定区域</footer></body></html>

当小键盘出现时头部、底部自动跳到页面最顶端、最底端。键盘隐藏时又会固定在头部,底部。顿时感觉开朗了

转载来源:http://blog.csdn.net/liu__hua/article/details/40106595



这篇关于小技巧css解决移动端ios不兼容position:fixed属性,无需插件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/955072

相关文章

spring中的@MapperScan注解属性解析

《spring中的@MapperScan注解属性解析》@MapperScan是Spring集成MyBatis时自动扫描Mapper接口的注解,简化配置并支持多数据源,通过属性控制扫描路径和过滤条件,利... 目录一、核心功能与作用二、注解属性解析三、底层实现原理四、使用场景与最佳实践五、注意事项与常见问题六

Spring的RedisTemplate的json反序列泛型丢失问题解决

《Spring的RedisTemplate的json反序列泛型丢失问题解决》本文主要介绍了SpringRedisTemplate中使用JSON序列化时泛型信息丢失的问题及其提出三种解决方案,可以根据性... 目录背景解决方案方案一方案二方案三总结背景在使用RedisTemplate操作redis时我们针对

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核

SpringBoot整合Dubbo+ZK注册失败的坑及解决

《SpringBoot整合Dubbo+ZK注册失败的坑及解决》使用Dubbo框架时,需在公共pom添加依赖,启动类加@EnableDubbo,实现类用@DubboService替代@Service,配... 目录1.先看下公共的pom(maven创建的pom工程)2.启动类上加@EnableDubbo3.实

nginx中端口无权限的问题解决

《nginx中端口无权限的问题解决》当Nginx日志报错bind()to80failed(13:Permissiondenied)时,这通常是由于权限不足导致Nginx无法绑定到80端口,下面就来... 目录一、问题原因分析二、解决方案1. 以 root 权限运行 Nginx(不推荐)2. 为 Nginx

解决1093 - You can‘t specify target table报错问题及原因分析

《解决1093-Youcan‘tspecifytargettable报错问题及原因分析》MySQL1093错误因UPDATE/DELETE语句的FROM子句直接引用目标表或嵌套子查询导致,... 目录报js错原因分析具体原因解决办法方法一:使用临时表方法二:使用JOIN方法三:使用EXISTS示例总结报错原

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析