• 在safari上,解决fixed失效问题


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

    头部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: 100%;
      }
      main {
          padding: 50px 0;
          height: 100%;
          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(100% + 1px)
    }

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

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

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

  • 相关阅读:
    07.28周四
    07.27 约束自己
    07.26
    07.25新的一周,踏实,努力
    07.21 智能充电开发
    07.20小笔记
    07.20 html5的适配flexible
    07.19 Linux命令 cd
    SpringBoot简介和Banner
    webpack生产环境配置
  • 原文地址:https://www.cnblogs.com/zjz666/p/11556452.html
Copyright © 2020-2023  润新知