Web移动端Fixed布局的解决方案

来源:脚本之家  责任编辑:小易  

fixed 不占据文档流。 你可以让body padding-top 一个底部foot的高度就行了

移动端业务开发,iOS 下经常会有 fixed 元素和输入框(input 元素)同时存在的情况。 但是 fixed 元素在有软键盘唤起的情况下,会出现许多莫名其妙的问题。 这篇文章里就提供一个简单的有输入框情况下的 fixed 布局方案。

估计导航用的fixed定位吧,var windheight =window.innerHeight

iOS下的 Fixed + Input BUG现象

/***以下为弹窗***/.box{width:100%;height:100%;backgroun

让我们先举个栗子,最直观的说明一下这个 BUG 的现象。 常规的 fixed 布局,可能使用如下布局(以下仅示意代码)

<!doctype html><html lang="en"&

<body> <!-- fixed定位的头部 --> <header> </header> <!-- 可以滚动的区域 --> <main> <!-- 内容在这里... --> </main> <!-- fixed定位的底部 --> <footer> <input type="text" placeholder="Footer..."/> <button>提交</button> </footer></body> 对应的样式如下:

css3用box-flex;在w3school里找找,主要是根据父元素按比例分配高度父元素{widt

然后看起来就是下面这个样子。拖动页面时 headerfooter 已经定位在了对应的位置,目测没问题了。

广州迎春花市是广东省的汉族传统民俗文化盛会,广州人民的一场嘉年华。一年一度的迎春花市繁花似锦、人海如潮,热闹非凡。作为明代\"广东四市\"之一的广州迎春花市,早就名扬五洲,饮誉四海。迎春花市是中国独一无二的民俗景观。其不但呈现了古老的岭南地区汉族群众的春节习俗,更与广州人的生活密切相关,迎春花市融合了广州人\"讲意头\"的传统,从而形成了自己独特的花卉语言。首先,迎春花市提醒人们春节将至,是时候为除旧迎新做准备了,例如置办年货、大扫除等,同时也通过搭建花市牌楼、摆卖年花等营造过年的欢乐气氛。年年有新花样,也开阔了市民的眼界。市民在花市上既能看到国内外的各色花卉,又能品尝到各种地方特色小食,观看

但接下来问题就来了!如果底部输入框软键盘被唤起以后,再次滑动页面,就会看到如下图所示:

圆脸的女生都很困扰自己脸大的问题,其实化妆就能很显脸小哦!简单的一个妆容就能将圆脸变成小脸啦~小编搜集了一些圆脸女生化妆的技巧,快跟小编一起来看看吧!怎样才算圆脸首先我们先要了解一下圆脸的基本特征,圆形脸从骨骼上看,鼻梁较低,颊骨高,整个面部骨骼转折缓慢,呈弧面型面部肌肉丰满脂肪层较厚,缺乏立体感,所以,圆脸的化妆,主要是要增强轮廓感、立体感就可以啦。用精华乳按摩面部在完成基础保养后,用精华乳加强按摩面部,从脖颈处开始,从下往上一直按摩,直至耳后与太阳穴部位。擦防晒/隔离每天在上妆前都要记得上一层防晒隔离,减小外界及彩妆对皮肤的伤害哟。擦肤色相近的粉底液在脸部均匀涂抹粉底液,一般来说选择比脸部

我们看到 fixed 定位好的元素跟随页面滚动了起来… fixed 属性失效了!

1如何评价一个人不合适?没有绝对的标准去判断一个人是否合适不合适一个公司,只能判断适不适合你所需要打造的文化氛围。这一点每个成功的创业团队都有精彩的案例。我们这边比较简单:人品好不好,不好就开除,好就留下培养,培养不好就换岗位,因为我个人是希望公司的老员工多。2只是自己判断还是会与团队的其他人商量?绝大多数情况下,我们这边都是做集体商量的。有3个好处,一个是判断更加准确,避免失误;第二个这能够加强团队的协同,增加团队的凝聚力;第三点是更有效传达企业的文化标准。当然最终决策一般还是自己定。3如何实施这一过程?一般都会分步骤,除非是刚入职不久的。第一步是要找他谈话,指出他的问题,同时也要坦诚的肯定

这是为什么呢?简单解释下: ** 软键盘唤起后,页面的fixed 元素将失效(即无法浮动,也可以理解为变成了absolute定位),所以当页面超过一屏且滚动时,失效的 fixed 元素就会跟随滚动了**。

孩子一岁正是离不开妈妈的时候,如果这时候辞职去陪伴孩子是应该的。妈妈对于一岁的孩子的孩子意味着什么,意味着全部,一周岁的孩子正处于生理和心理上的断奶期,这个时候离开孩子或减少陪伴孩子的时间都是不理智的,看到一个报道,讲述一个孩子妈妈远离家外出打工,孩子的奶奶每天要把妈妈的衣服放在孩子的枕边,孩子才能入睡,看了让人心酸,孩子在找妈妈的味道,孩子在心理上离不开妈妈,可怜、懂事的孩子,没有妈妈的陪伴,只要有妈妈的味道也满足了。也许,孩子除了哭闹没有更好的表达方式,但在孩子心理上留下的缺陷却不是一会半会能弥补的,朋友的老公常年在乡下工作,一个月也就回来一两天,回家后才是累的倒头就睡,于是,在孩子眼里,

这便是 iOS 上 fixed 元素和输入框的 bug 。其中不仅限于 type=text 的输入框,凡是软键盘(比如时间日期选择、select 选择等等)被唤起,都会遇到同样地问题。

虽然 isScroll.js 可以很好的解决 fixed 定位滚动的问题,但是不在万不得已的情况下,我们尽量尝试一下不依赖第三方库的布局方案,以简化实现方式。这里抛砖引玉作为参考。

解决思路:

既然在 iOS 下由于软键盘唤出后,页面 fixed 元素会失效,导致跟随页面一起滚动,那么假如——页面不会过长出现滚动,那么即便 fixed 元素失效,也无法跟随页面滚动,也就不会出现上面的问题了。

那么按照这个思路,如果使 fixed 元素的父级不出现滚动,而将原 body 滚动的区域域移到 main 内部,而 headerfooter 的样式不变,代码如下:

<body> <!-- fixed定位的头部 --> <header> </header> <!-- 可以滚动的区域 --> <main> <div> <!-- 内容在这里... --> </div> </main> <!-- fixed定位的底部 --> <footer> <input type="text" placeholder="Footer..."/> <button>提交</button> </footer></body>

CSS:

header, footer, main { display: block;} header { position: fixed; height: 50px; left: 0; right: 0; top: 0;} footer { position: fixed; height: 34px; left: 0; right: 0; bottom: 0;} main { /* main绝对定位,进行内部滚动 */ position: absolute; top: 50px; bottom: 34px; /* 使之可以滚动 */ overflow-y: scroll;}main .content { height: 2000px;}

这样再来看一下:

在原始输入法下, fixed 元素可以定位在页面的正确位置。滚动页面时,由于滚动的是 main 内部的 div,因此 footer 没有跟随页面滚动。

上面貌似解决了问题,但是如果在手机上实际测试一下,会发现 main 元素内的滚动非常不流畅,滑动的手指松开后,滚动立刻停止,失去了原本的流畅滚动特性。百度一下弹性滚动的问题,发现在 webkit 中,下面的属性可以恢复弹性滚动。

main 元素上加上该属性,嗯,丝般顺滑的感觉又回来了!

另外,这里的 headerfooter 使用的是 fixed 定位,如果考虑到更老一些的 iOS 系统不支持 fixed 元素,完全可以把 fixed 替换成 absolute 。测试后效果是一样的。

至此一个不依赖第三方库的 fixed 布局就完成了。

Android 下布局

谈到了 iOS ,也来简单说一下 Android 下的布局吧。

在 Android2.3+ 中,因为不支持 overflow-scrolling,因此部分浏览器内滚动会有不流畅的卡顿。但是目前发现在 body 上的滚动还是很流畅的,因此使用第一种在 iOS 出现问题的 fixed 定位的布局就可以了。

如果需要考虑 Android2.3 以下系统,因为不支持 fixed 元素,所以依然要需要考虑使用 isScroll.js 来实现内部滚动。

其实在 fixed 和输入框的问题上,基本思路就是: 由于 fixed 在软键盘唤起后会失效,导致在页面可以滚动时,会跟随页面一起滚动。因此如果页面无法滚动,那么 fixed 元素即使失效,也不会滚动,也就不会出现 bug 了。

所以可以在这个方面去考虑解决问题。

其他的一些细节处理

在细节处理上,其实还有很多要注意的,挑几个实际遇到比较大的问题来说一下:

有时候输入框 focus 以后,会出现软键盘遮挡输入框的情况,这时候可以尝试 input 元素的 scrollIntoView 进行修复。在 iOS 下使用第三方输入法时,输入法在唤起经常会盖住输入框,只有在输入了一条文字后,输入框才会浮出。目前也不知道有什么好的办法能让唤起输入框时正确显示。这暂时算是 iOS 下的一个坑吧。有些第三方浏览器底部的工具栏是浮在页面之上的,因此底部 fixed 定位会被工具栏遮挡。解决办法也比较简单粗暴——适配不同的浏览器,调整 fixed 元素距离底部的距离。最好将 headerfooter 元素的 touchmove 事件禁止,以防止滚动在上面触发了部分浏览器全屏模式切换,而导致顶部地址栏和底部工具栏遮挡住 headerfooter 元素。在页面滚动到上下边缘的时候,如果继续拖拽会将整个 View 一起拖拽走,导致页面的“露底”。

为了防止页面露底,可以在页面拖拽到边缘的时候,通过判断拖拽方向以及是否为边缘来阻止 touchmove 事件,防止页面继续拖拽。

以上面内滚动 layout-scroll-fixed 布局为例,给出一段代码作为参考:

防止内容区域滚到底后引起页面整体的滚动

var content = document.querySelector('main');var startY;content.addEventListener('touchstart', function (e) { startY = e.touches[0].clientY;});content.addEventListener('touchmove', function (e) { // 高位表示向上滚动 // 底位表示向下滚动 // 1容许 0禁止 var status = '11'; var ele = this; var currentY = e.touches[0].clientY; if (ele.scrollTop === 0) { // 如果内容小于容器则同时禁止上下滚动 status = ele.offsetHeight >= ele.scrollHeight ? '00' : '01'; } else if (ele.scrollTop + ele.offsetHeight >= ele.scrollHeight) { // 已经滚到底部了只能向上滚动 status = '10'; } if (status != '11') { // 判断当前的滚动方向 var direction = currentY - startY > 0 ? '10' : '01'; // 操作方向和当前允许状态求与运算,运算结果为0,就说明不允许该方向滚动,则禁止默认事件,阻止滚动 if (!(parseInt(status, 2) & parseInt(direction, 2))) { stopEvent(e); } }});

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

怎么用isscroll.js 解决 web移动端fixed布局的解决方案

日暮汉宫传蜡烛,轻烟散入五侯家.

移动端web开发.底部固定问题,不能用fixed么

fixed是相对浏览器窗口进行定位,可以将一个元素定位在底部,不会随着页面上下滚动而位置发生变化,在安卓4.3和iOS9.2及以上都支持吧,不知道你出现的问题是什么?

css position fixed 在移动端上为什么会 晃来晃去

在自己手机上打开页面,向下滑动时这个div会出现短暂的向下瞬间移动之后马上跳回到最顶部,网上资料表明是position:fixed不兼容某些浏览器的缘故,解决方法有多种:

1.给这个设置了position:fixed的元素再设置一个CSS属性:-webkit-transform: translateZ(0);

2.给html, body元素设置CSS属性 {height:100%;overflow:auto;margin: 0;}

3.引入jquery1.7.2的类库,<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>

4.在fiexd内设置position:absolute,如:

<div style="position:fiexd;bottom:0px;">

<div style="position:absolute;">

</div>

</div>

望采纳!本回答被提问者采纳

移动端 fixed不兼容怎么搞

移动端最好不要用fixed,用absolute然后模拟滚动条。

移动端 div 固定fixed底部之后,挡住内容,怎么处理 底部div高度不确定

底部最后一个div设置margin-bottom和固定fixed的div高度设置成一样的

  • 本文相关:
  • 简要了解jquery移动web开发的响应式布局设计
  • web标准网页布局中尽量不要使用的html标签
  • 用标准件的方式来组装网页div布局-web标准网站设计心得
  • web标准布局实例教程,用定位轻松解决css复杂布局
  • web前端开发中常见的多列布局解决方案整理(一定要看)
  • web2.0编程思想:16条法则
  • 什么是web2.0?
  • web移动端fixed布局的解决方案
  • web2.0的几个开源项目
  • web2.0色系
  • html5 websocket技术使用详解
  • web2.0中流行的设计元素:颜色
  • 怎么用isscroll.js 解决 web移动端fixed布局的解决方案
  • 移动端web开发.底部固定问题,不能用fixed么
  • css position fixed 在移动端上为什么会 晃来晃去
  • 移动端 fixed不兼容怎么搞
  • 移动端 div 固定fixed底部之后,挡住内容,怎么处理 底部div高度不确定
  • 移动端fixed定位固定在底部 ios手机里为什么会遮住一半 css
  • 做html5 页面 在安卓手机上键盘 把底部导航顶上去了 怎么解决
  • 移动端使用position: fixed;出现宽度无效是怎么回事,下面的图例,黄色的条只显示一半?求...
  • HTML5 移动端上 动态固定菜单栏的问题
  • 在移动端 web怎么做到自适应布局
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved