vue 移动端/PC常见问题及解决方法
一、判断手机/PC浏览器语言
navigator.language // 返回语言代码

语言代码文档: http://www.lingoes.cn/zh/translator/langcode.htm
二、获取滚动条位置
// html结构
<template lang="pug">
div.home-box(@scroll="scorllChangeColor")
<template>
// methods中声明方法
methods: {
scorllChangeColor(event) {
if( this.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>
五、国际化
// 安装
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
参考地址:https://www.cnblogs.com/h5c3/p/6542799.html
https://www.jianshu.com/p/821c8a10d14f
https://blog.csdn.net/qq_36070288/article/details/84765139
vue 移动端/PC常见问题及解决方法的更多相关文章
- vue.js开发SPA常见问题及解决方法
列表进入详情页的传参问题. 例如商品列表页面前往商品详情页面,需要传一个商品id; <router-link :to="{path: 'detail', query: {id: 1}} ...
- Nacos 常见问题及解决方法
Nacos 开源至今已有一年,在这一年里,得到了很多用户的支持和反馈.在与社区的交流中,我们发现有一些问题出现的频率比较高,为了能够让用户更快的解决问题,我们总结了这篇常见问题及解决方法,这篇文章后续 ...
- NHibernate常见问题及解决方法
NHibernate常见问题及解决方法 曾经学过NHibernate的,但是自从工作到现在快一年了却从未用到过,近来要巩固一下却发现忘记了许多,一个"in expected: <end ...
- MySQL程序端启动密码错误解决方法
MySQL程序端启动密码错误解决方法 一般启动MySQL程序端,都是用mysql -uroot -p命令,当然前提是你的环境变量已经配好了. 为了连接服务器,当调用mysql时,通常需要提供一个MyS ...
- C#用ado.net访问EXCEL的常见问题及解决方法
C#用ado.net访问EXCEL的常见问题及解决方法,除了像sql server,access常见的数据库,其实Excel文件也可以做为数据库访问. ado.net访问excel的实例: OleDb ...
- ajax跨域POST时执行OPTIONS请求服务端返回403forbidden的解决方法
ajax访问服务端restful api时,由于contentType类型的原因,浏览器会先发送OPTIONS请求. 本人服务端用的是spring mvc框架,web服务器用的是tomcat的,以下给 ...
- 整理前端css/js/jq常见问题及解决方法(2)
移动端 手机 1.点击图片或按钮,选中状态影响到其他范围解决:html{-webkit-user-select:none}<meta name="msapplication-tap-h ...
- Asp.net MVC Razor常见问题及解决方法
没有经验的童鞋就是这样磕磕碰碰出来的经验. 1,Datatype的错误提示消息无法自定义 这也许是Asp.net MVC的一个Bug.ViewModel中定义了DataType为Date字段: [Re ...
- 安装scrapy框架的常见问题及其解决方法
下面小编讲一下自己在windows10安装及配置Scrapy中遇到的一些坑及其解决的方法,现在总结如下,希望对大家有所帮助. 常见问题一:pip版本需要升级 如果你的pip版本比较老,可能在安装的过程 ...
随机推荐
- 编解码器之战:AV1、HEVC、VP9和VVC
视频Codec专家Jan Ozer在Streaming Media West上主持了一场开放论坛,邀请百余名观众参与热门Codec的各项优势与短板.本文整理了讨论的主要成果,基本代表了AV1.HEVC ...
- 移动IM开发指南2:心跳指令详解
<移动IM开发指南>系列文章将会介绍一个IM APP的方方面面,包括技术选型.登陆优化等.此外,本文作者会结合他在网易云信多年iOS IM SDK开发的经验,深度分析实际开发中的各种常见问 ...
- Python初学者的经历
刚开始安装了个python3.6的版本,自己写了个hello world ,发现可以运行,后面又网上找到了下载酷狗音乐的代码,结果报各种包没有,使用pip安装也各种安装不起来 又从网上找了python ...
- spring cloud 系列第4篇 —— feign 声明式服务调用 (F版本)
源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.feign 简介 在上一个用例中,我们使用ribbon+restTem ...
- Mysql索引优化之索引的分类
Mysql的历史 简单回顾一下Mysql的历史,Mysql 是一个关系型数据库管理系统,由瑞典 Mysql AB 公司开发,目前属于 Oracle 公司.关系型数据库将数据保存在不同的表中,而不是将 ...
- 小白开学Asp.Net Core 《五》
小白开学Asp.Net Core<五> —— 使用.Net Core MVC Filter 一.简介 今天在项目(https:/ ...
- kubernetes实战之consul简单测试环境搭建及填坑
这一节内容有点长,我们将介绍如何基于docker搭建一client一server的consul测试环境,以及如何搭建多server consul测试集群.在基于docker搭建多server的cons ...
- 2018.12.1 万圣节的小L
我回来啦 试题描述 今天是万圣节,小L同学开始了一年一度的讨要糖果游戏,但是在刚刚过去的比赛中小有成就的他打算给自己增加一点难度:如果没有讨到每一家的糖果就算输. 已知小L共有n(n不大于10000) ...
- HDU 4444:Walk(思维建图+BFS)***
http://acm.hdu.edu.cn/showproblem.php?pid=4444 题意:给出一个起点一个终点,给出n个矩形的两个对立顶点,问最少需要拐多少次弯可以从起点到达终点,如果不能输 ...
- Android 装逼技术之暗码启动应用
什么是暗码? 在拨号盘中输入*#*#<code>#*#*后,APP 可以监控到这些输入,然后做相应的动作,比如启动应用,是不是有点骚. 下面看下这个骚操作是如何实现的. 效果预览 源码 D ...