vue 移动端/PC常见问题及解决方法

5 篇文章 0 订阅

一、判断手机/PC浏览器语言

navigator.language // 返回语言代码

二、获取滚动条位置

// html结构

<template lang="pug">

    div.box(@scroll="scorllChangeColor")

<template> 

// methods中声明方法

  methods: {

    scorllChangeColor(event) {

      ifthis.scrollTopFlag && event.target.scrollTop > 560) {

        this.scrollTopFlag = false

        this.scrollBtmFlag = true

        document.querySelector('.home-topbar').style.backgroundColor = '#1D0A60'

      }else if(this.scrollBtmFlag && event.target.scrollTop < 560) {

        this.scrollTopFlag = true

        this.scrollBtmFlag = false

        document.querySelector('.home-topbar').style.backgroundColor = 'rgba(0, 0, 0, 0.3)'

      }

    }

}

 

三、回到顶部

// html结构

<!-- backTop 回顶部的方法 -->

<button  class="go-top"  @click="backTop">回到顶部</button>

// 周期及方法

// vue的两个生命钩子。

// window对象,所有浏览器都支持window对象。它表示浏览器窗口,监听滚动事件

mounted () {

  window.addEventListener('scroll'this.scrollToTop)

},

destroyed () {

  window.removeEventListener('scroll'this.scrollToTop)

},

  

  

methods: {

  // 点击图片回到顶部方法,加计时器是为了过渡顺滑

  backTop () {

      const that = this

      let timer = setInterval(() => {

        let ispeed = Math.floor(-that.scrollTop / 5)

        document.documentElement.scrollTop = document.body.scrollTop = that.scrollTop + ispeed

        if (that.scrollTop === 0) {

          clearInterval(timer)

        }

      }, 16)

  },

  

  // 为了计算距离顶部的高度,当高度大于60显示回顶部图标,小于60则隐藏

  scrollToTop () {

    const that = this

    let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop

    that.scrollTop = scrollTop

    if (that.scrollTop > 60) {

      that.btnFlag = true

    else {

      that.btnFlag = false

    }

  }

}

四、弹出层遮罩滑动穿透

1、通过vue "@touchmove.prevent"指令

<div

     class="wechat-img"

     @click="hideWchat"

      v-if="showModal"

      @touchmove.prevent // vue中可以直接添加指令

    >

   <img @click="hideWchat" src="../assets/images/home/mp-wechat.jpg" alt/>

</div>

2、通过遮罩的显示或隐藏设置滚动元素的overflow: hidden

// html 结构

    <div :class="show?'home hidden':'home'">

<style>

    .hidden {

         overflow: hidden;

         position: absolute;

         width: 100vw;

         height: 100vh;

</style>

五、国际化

// 安装

1

npm install vue-i18n

# OR

yarn add vue-i18n

// main.js

import Vue from 'vue'

import App from './App.vue'

import VueI18n from 'vue-i18n'

import router from './router'

import store from './store'

import { zh } from './common/lang/zh'

import { en } from './common/lang/en'

Vue.use(VueI18n) // 通过插件的形式挂载

const i18n = new VueI18n({

    locale: 'zh-CN'// 语言标识

    //this.$i18n.locale // 通过切换locale的值来实现语言切换

    messages: {

        'zh-CN': zh, // 中文语言包

        'en-US': en // 英文语言包

    }

})

Vue.config.productionTip = false

new Vue({

    router,

    i18n, // 挂载

    store,

    render: h => h(App)

}).$mount('#app')

// html 中使用

<p class="header-img-intro">{{ $t('home.imgIntro1') }}</p>

<p class="header-img-intro1">{{ $t('home.imgIntro2') }}</p>

六、判断手机、ipad、电脑

/(iphone|ipod|ipad|ipad|Android|nokia|blackberry|bada|lg|ucweb|skyfire|sony|ericsson|mot|samsung|sgh|lg|philips|panasonic|alcatel|lenovo|cldc|midp|wap|mobile)/i.test(navigator.userAgent) // true->手机/ipad

 

参考地址:js获取手机系统语言 - h5c3 - 博客园

     vue获取滚动条位置 - 简书

     vue中实现回到顶部功能_宝贝QY的博客-CSDN博客_vue返回顶部

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值