小技巧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

相关文章

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

Java实现复杂查询优化的7个技巧小结

《Java实现复杂查询优化的7个技巧小结》在Java项目中,复杂查询是开发者面临的“硬骨头”,本文将通过7个实战技巧,结合代码示例和性能对比,手把手教你如何让复杂查询变得优雅,大家可以根据需求进行选择... 目录一、复杂查询的痛点:为何你的代码“又臭又长”1.1冗余变量与中间状态1.2重复查询与性能陷阱1.

Python内存优化的实战技巧分享

《Python内存优化的实战技巧分享》Python作为一门解释型语言,虽然在开发效率上有着显著优势,但在执行效率方面往往被诟病,然而,通过合理的内存优化策略,我们可以让Python程序的运行速度提升3... 目录前言python内存管理机制引用计数机制垃圾回收机制内存泄漏的常见原因1. 循环引用2. 全局变

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”