ios html5 input 聚焦,关于ios上嵌入h5导致input聚焦时页面自动放大问题

目录

问题描述

问题分析

解决方案

问题描述

最近有一个项目需要给ios和安卓app开发h5页面,在安卓上测试没有问题,但是ios(iphone8)上点击输入框会导致页面缩放失败,但在iphone 8plus/x上不会产生这种问题。并且设置 和均无法阻止这种问题

问题分析

导致页面自动缩放的问题来源于,ios在小屏设备(如iphone 5s/6/6s/7/8...)上点击输入框的时候,如果input字体小于16px的时候会自动放大页面,提升阅读性。但实际不同场景下,我们的ui设计字体可能低于16px。

解决方案

现在的解决方案基本上搜出来的都是设置meta,这种方案并不能解决小于16px字体产生放大页面的问题,那么我们不得不思考问题的根源字体不够16px。

那么我们要做的就是在点击input的时候,把input的字体设置为16px,然后focus的时候再改回我们自己的,在那一瞬间,ios判断到input输入框字体为16px,从而不放大我们的页面,伪代码如下:

import React, { memo, useState, useCallback } from 'react'

const Test = memo(() => {

const [value, setValue] = useState('')

const handleInputChange = useCallback(e => {

setValue(e.target.value)

})

/** 解决ios 字体小于16px自动缩放问题 */

const handleInputMouseDown = useCallback((e) => {

e.target.style.fontSize = '16px' // mouse down时,把字体改为16px,使得ios不会自动放大页面

}, [])

/** 解决ios 字体小于16px自动缩放问题 */

const handleInputFocus = useCallback((e) => {

e.target.style.fontSize = '' // focus时,把字体恢复为原先的字体

}, [])

return (

<>

value={value}

placeholder="字体为14px场景"

onChange={handleInputChange.bind(this) }

onMouseDown={handleInputMouseDown.bind(this)}

onFocus={handleInputFocus.bind(this)}

/>

>

)

})

export default Test

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值