【css】移动端兼容 天坑!ios竟然不支持fixed

在一个长页面,弹了个窗,用position: fixed加了黑色半透明蒙版和弹窗内容,在ios手机上蒙版楞是不能全屏显示。好死不死,安卓机上都是全屏显示的
在这里插入图片描述
像是使用了position: absolute而不是position: fixed
在这里插入图片描述

.dialog {
  position: fixed;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  z-index: 100;
}
body {
    -webkit-overflow-scrolling: touch; // ios顺滑
    height: 100%;
    overflow-y: scroll;
}

原来是ios的顺滑体验-webkit-overflow-scrolling影响了position: fixed

弹窗弹起时,父级设置如下属性:
position: fixed 使弹窗底部不再滚动
height: auto 长页面不能固定高度,否则底部依然滚动(andoid)
-webkit-overflow-scrolling: unset 清除-webkit-overflow-scrolling属性,方式影响ios的position: fixed
同时兼容ios与android可尝试用以上三个属性与overflow: hidden 组合使用

js事项如下

// js方法
if(dialogShow) {
    $('body').css({
        'position': 'fixed',
        'height': 'auto',
        // 'overflow': 'hidden',
        '-webkit-overflow-scrolling': 'unset'
    });
} else {
    $('body').css({
        'position': 'relative',
        'height': '100%',
        // 'overflow': 'auto'
        '-webkit-overflow-scrolling': 'touch'
    });
}

css实现如下:

// css方法
body {
    -webkit-overflow-scrolling: touch; // ios顺滑
    height: 100%;
    overflow-y: scroll;
}

//  弹窗弹起
body.active {
	position: fixed;
	height: auto;
	// overflow: hidden;
	-webkit-overflow-scrolling: unset
}

参考链接:偏前端 - ios下position:fixed失效的问题解决

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值