开发h5页面,兼容移动端的一些问题

有一个业务是要做一个h5页面,直接用vue写页面。要适配移动端原来真不容易,在开发中也遇到了一些问题,这里记录一下,也希望能对遇到同样问题的朋友有所帮助。

一、当你点击输入框时,聚焦输入框,莫名其妙就放大页面。

在pc页面调试的时候一直没什么问题,在我自己的安卓机上调也没问题,但是测试的苹果手机就出问题了。

这个时候就要设置public文件夹上的index文件缩放关闭

//minimum-scale=1.0, maximum-scale=1.0, user-scalable=no
<meta
  name="viewport"
  content="width=device-width,initial-scale=1.0,minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"
/>

二、elementUI使用input输入框type为number类型时,会有不喜欢的小图标

为了能让手机浏览器在点击输入框时,自动弹出数字输入框,设置了type为number,但是用pc端打开时就会有一个上下小图片,想要隐藏掉,这样设置就行。

<style lang="scss" scoped>
:deep(.el-input input::-webkit-outer-spin-button),
:deep(.el-input input::-webkit-inner-spin-button) {
  -webkit-appearance: none !important;
}
</style>

三、用了elementUI的ElMessageBox组件,用手机查看,设置样式问题

ElMessageBox组件在在移动端点开,宽度会拉的很长,想要设置他的样式,发现一直设置不了。

这时可以customClass属性为一个复杂的名字(就是不会跟其他页面的类名相同),设置css样式不为scoped(不然怎么修改样式都修改不了),这样会有样式污染问题。

await ElMessageBox.confirm(
  `是否要继续提交?`,
  '提示',
  {
    confirmButtonText: '继续提交',
    cancelButtonText: '取消',
    type: 'warning',
    customClass: 'registered-msg-box',
   },
)
<style>
.registered-msg-box {
  width: 80% !important;
}
</style>

四、elementUI输入框设置maxlenght无效,实现输入时就限制输入字数,优雅实现

<el-input
  v-model="formData.factoryName"
  placeholder="请输入工厂名称"
  @input="handleInputFactoryName"
></el-input>
const handleInputFactoryName = (val: string) => {
   //这里设置了限定50字
  formData.value.factoryName = val.slice(0, 50);
};

五、优雅实现发送验证码,倒计时

        <el-form-item label="验证码" required prop="verificationCode">
          <el-input
            v-model="formData.verificationCode"
            placeholder="请输入验证码"
            style="flex: 1"
          ></el-input>
          <el-button type="primary" @click="handleGetCode()" :loading="count !== 0">
            {{ count || '发送验证码' }}
          </el-button>
        </el-form-item>
const codeTimer = ref();
const count = ref(0);
const clearCodeTimer = () => {
  if (codeTimer.value) {
    clearInterval(codeTimer.value);
    codeTimer.value = null;
  }
};
const createCodeTimer = () => {
  codeTimer.value = setInterval(() => {
    count.value -= 1;
    if (count.value === 0) {
      clearCodeTimer();
    }
  }, 1000);
};
const handleGetCode = async () => {
  form.value?.validateField('phoneNumber', async error => {
    if (error) {
      ElMessage.error(error);
    } else {
      //这行调用api发送给后端
      //有效时间,五分钟即300秒
      count.value = 300;
      createCodeTimer();
      ElMessage.success('验证码已发送');
    }
  });
};

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于移动端H5登录页面Vue2实现,可以参考Vue-Mobile这个项目。Vue-Mobile是基于Vue-cli实现的移动端H5开发模板,已经搭建好了基本的开发框架,可以帮助您快速开发移动端H5应用。项目使用的技术栈包括Vue、Vux、Axios和Less,并且提供了功能丰富的模板代码。您可以在该项目的GitHub地址找到源码。 另外,如果您想使用Vue.js3版本来实现移动端H5登录页面,可以考虑使用基于Vue.js3和TypeScript脚本的手机H5框架。该框架使用了Vant UI界面(兼容公众号和小程序),并且封装了网络交互单元和Axios拦截等功能,以便简化开发流程。该框架的目标是设计一个简单、易用的移动端手机App[2]。 参考资料: Vue-Mobile项目源码地址:https://github.com/Michael-lzg/vue-mobile 手机H5框架基于Vue.js3版本的简单登录页面实现<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [详解搭建一个vue-cli的移动端H5开发模板](https://download.csdn.net/download/weixin_38730201/13135443)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [简单好用的移动端H5框架,Vue3、TypeScript,VantUI界面,OneMobileWeb](https://download.csdn.net/download/sky56it/19838982)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值