一个页面中有头部、底部和中间内容区域,底部固定在屏幕底端。

头部header
内容main
底部footer

方法一、在main上使用fixed定位,加上overflow-y属性。

.main {
position: fixed;
top: 50px;
bottom: 50px;
overflow-y: scroll;
}

不推荐这个fixed方案,因为页面偶尔卡住不动。

方法二、中间的main不设定位高度100%,再padding头部和尾部

  其中头部和底部的定位设为absolute会比设为fixed体验更好(况且fix布局在移动端本来就有各种各样的问题,还是尽量避开:) )。

  html, body {
height: %;
}
main {
padding: 50px ;
height: %;
overflow-y: scroll;
-webkit-overflow-scrolling: touch;
}

  ps:webkit-overflow-scrolling:touch偶尔卡住或不能滑动的bug

  最常见的例子就是:

  • 在safari上,使用了-webkit-overflow-scrolling:touch之后,页面偶尔会卡住不动。
  • 在safari上,点击其他区域,再在滚动区域滑动,滚动条无法滚动的bug。
  • 通过动态添加内容撑开容器,结果根本不能滑动的bug。

1) 保证使用了该属性的元素上没有设置定位

  如果出现偶尔卡住不动的情况,那么在使用该属性的元素上不设置定位或者手动设置定位为 position: static

  这样会解决部分因为定位(relative、fixed、absolute)导致的页面偶尔不能滚动的bug。

2)如果添加动态内容页面不能滚动,让子元素height+1

  如果在-webkit-overflow-scrolling:touch属性的元素上,想通过动态添加内容来撑开容器,触发滚动,是有bug 的,页面是会卡住不动的。

  方法就是在webkit-overflow-scrolling:touch属性的下一层子元素上,将height加1%或1px。从而主动触发scrollbar

main-inner {
min-height: calc(% + 1px)
}

你也可以直接加伪元素上:

main:after {
min-height: calc(% + 1px)
}

文章摘抄自:https://www.cnblogs.com/xiahj/p/8036419.html

最新文章

  1. Unity基础知识学习笔记二
  2. 通过全局getApp获取全局实例获取数据
  3. JavaScript UI选型及Jquery EasyUI使用经验谈
  4. (一)jvm
  5. IOS的UI总结
  6. 算法对比:Prim算法与Dijskra算法
  7. M0、M1、M2、M3都是用来反映货币供应量的重要指标
  8. Unity GUI 用C#和Javascript写法的区别
  9. 安卓手机微信页面position: fixed位置错误
  10. 手把手教做单点登录(SSO)系列之一:概述与示例
  11. CSS学习笔记一:css 画平面图形
  12. 【安全开发】浅谈JSP安全开发之XSS
  13. php serialize(),unserialize()
  14. 部署php的正确姿势
  15. 使用VS2013 + EF6 连接Mysql数据库
  16. bash shell 合并多个文件内容到一个文件、查看多少行代码
  17. Elasticsearch四种常见的相关度分数优化方法
  18. Matlab面向对象编程基础
  19. VMwareWorkstations中安装ubuntu,apt install报E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
  20. Oracle 查询当前系统时间十分钟之前的记录,时间比较SQL

热门文章

  1. JDK9下载与安装
  2. 第二阶段冲刺(个人)——four
  3. Python进阶-I 初识函数(function)
  4. 【洛谷P3835】 【模板】可持久化平衡树
  5. 学习-jdk8 特性
  6. Mybatis集成ehcache
  7. 【LG4397】[JLOI2014]聪明的燕姿
  8. CSS居中方案
  9. 内置函数、反射、__str__、__del__、元类
  10. 在非gnome系桌面环境下运行deepin-wine tim的错误解决