一、

使用场景:有适配pc端改为适配pc端和移动端,使用2套css

代码实现App.vue

created: function () {

if(document.documentElement.clientWidth > 640){

require('./style/index.:');

this.plaform = 'pc';

}else{

require('./style/mobile.scss');

this.plaform = 'mobile';

}

}

二、

做完的pc项目要求兼容移动端,常规操作的话是新做一个webapp后再来回跳转,

当前pc项目没有太多的交互和复杂的页面,所以决定在一个项目里进行兼容适配

1.新建两个组件,pc端页面组件,m端页面组件

image.png

2.页面写个方法判断是pc端还是移动端(可在全局写)

methods: {

//判断

_isMobile() {

let flag = navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i)

return flag;

}

},

created(){

if (this._isMobile()) {

//手机端

this.ismOrpc = 'Moperation'

//设置rem

window.onload = function(){

getRem(750,100)

};

window.onresize = function(){

getRem(750,100)

};

function getRem(pwidth,prem){

var html = document.getElementsByTagName("html")[0];

var oWidth = document.body.clientWidth || document.documentElement.clientWidth;

html.style.fontSize = oWidth/pwidth*prem + "px";

}

} else {

//pc端

this.ismOrpc = 'PCoperation'

}

}

3.引入组件

import PCoperation from '@/components/pc/PCoperation'

import Moperation from '@/components/m/Moperation'

components: {

footerInfo,

PCoperation,

Moperation

},

4.data设置初始值,根据值显示不同组件

js:

data(){

return{

ismOrpc:'PCoperation'//默认展示pc

}

},

html:

三、

四、

常见电脑屏幕分辨率

1024600 (常见8.9寸电脑使用)

1024768(常用10.4、12.1、14.1、15寸电脑使用)4:3

12801024(常用14.1、15寸电脑使用)5:4

1600 * 900 16:9 (非主流)

14401050(常用15、16.1寸电脑使用)4:3

16001200(常用15、16.1寸电脑使用)4:3

1280800(常见10.8、12.1、15.4寸电脑使用)16:10

1366768(常见15.2寸电脑使用)15:10 (主流)

1280854(不常见)16:9

1440900(仅苹果17寸电脑使用)16:10

16001024(不常见)14:9

16801050(常见15.4、20寸电脑使用)16:10

19201080 16:9 (主流)

1920*1200(常见20寸电脑使用)16:10

PC端响应式媒体断点:

@media (min-width: 1024px){

body{font-size: 18px}

} /*>=1024的设备*/

@media (min-width: 1100px) {

body{font-size: 20px}

} /*>=1100的设备*/

@media (min-width: 1280px) {

body{font-size: 22px;}

} /*>=1280的设备*/

@media (min-width: 1366px) {

body{font-size: 24px;}

}

@media (min-width: 1440px) {

body{font-size: 25px !important;}

}

@media (min-width: 1680px) {

body{font-size: 28px;}

}

@media (min-width: 1920px) {

body{font-size: 33px;}

}

vue rem适配

项目目录下 新建 vue.config.js内容如下

module.exports = {

productionSourceMap: false,

lintOnSave: false,

publicPath: './',

css: {

loaderOptions: {

postcss: {

plugins: [

require('postcss-pxtorem')({

rootValue: 75, // 换算的基数,设计稿宽度的1/10

selectorBlackList: ['weui', 'mu'], // 忽略转换正则匹配项

propList: ['*']//需要做转化处理的属性,如`hight`、`width`、`margin`等,`*`表示全部

})

]

}

}

}

}

npm i postcss-pxtorem lib-flexible

main.js 引入 import 'lib-flexible/flexible.js'

然后重启项目 如果起不来 删了node_modules 重新 npm install

css 样式写的时候,在750的设置图下,量多少写多少,单位用px就行,不用写rem。这种方式 只适用于 vue-cli 3.0版本以上,3.0以下的需要在webpack里配置

WechatIMG6d380bdd611af70a28976726ada74edb.png

WechatIMG21131c4831157f030ab0129b94578d6b.png

WechatIMG6dc0de402e30e2e19be236a832daa147.png

WechatIMG0f74ff33b865ff56438f241658f8bcfc.png

WechatIMG9082d55f33809eec26642319c83fb676.png

五、把pc端的网页刚好缩放到手机端

今天做了个pc的页面,看了别人的网站在手机端能把pc端的网页刚好缩放到手机端,看着很舒服。

于是想把自己的页面也这样搞一下,刚开始,想到的是利用css3的缩放来做,想的是当屏幕尺寸改变时缩放整个页面,这样顺便写了个代码,但是在手机端却没有效果,然后仔细一想,手机端屏幕是不会变化的,根本无法触发window.onresize方法,再说,这样做了之后,在pc端改变屏幕尺寸后,页面是跟着缩放的,但是别人的网站在pc端改变屏幕尺寸时,是不会变化的,所以这样做肯定是错误的。

然后开始百度,看到一条评论,只需要把下边这段代码去掉就行了

试了一下,在页面中写的一个width=1200px的元素,能够恰到其份的适配下来!!!缩放的刚刚好

下面来了解一下meta标签中这些值的含义:

width=device-width:表示布局viewport的值是设备的宽度(也可以是特定的viewport值)

initial-scale=1.0: 设置页面的初始缩放比例

minimum-scale=1.0: 设置页面的最小缩放比例

maximum-scale=1.0:设置页面的最大缩放比例

user-scalable=no: 设置用户是否可以缩放操作

移动端默认会缩放大尺寸的页面的,当我们把上述代码去掉之后,就会随着移动端缩放的比例走,而且还可以自由放大。

下面是另一篇文章会对meta标签加深理解:号称---------JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码

var phoneWidth = parseInt(window.screen.width);

var phoneHeight = parseInt(window.screen.height);

var phoneScale = phoneWidth/750;//除以的值按手机的物理分辨率

var ua = navigator.userAgent;

if (/Android (\d+\.\d+)/.test(ua)) {

var version = parseFloat(RegExp.$1);

// andriod 2.3

if (version > 2.3) {

document.write('');

// andriod 2.3以上

} else {

document.write('');

}

// 其他系统

} else {

document.write('');

}

上面代码是专门针对移动端设置的meta标签缩放比例,根据设计图宽度的不同而设置的(这样的设置并不适合我的情况,因为这样设置了之后,在手机端是不能缩放的,因为上面代码写死了缩放比例)。

然后自己又试了试,把元素尺寸写的更大一些,当我写1800px时,手机端到450px时就不能再缩小了,当我写1200px时,手机端到300px就不能再缩小了,所以手机缩放也有一定的极限值,

我暂且认定手机端能够将大尺寸元素缩小4倍。那么,一般的手机不会低于300px;那么一般手机就能够把1200px的元素完好缩放到手机上,终于明白了为什么大多数设计图,固定尺寸为1200px,原来是这样的道理。

那么,我们要向将pc端的页面能够在手机端完好缩放,我们就需要将pc端的能容宽度固定在一个值之内,我选择将内容装在1200px的元素内,这样就可以让pc端网页在移动端完好缩放了。

vue pc移动两个html,vue一套代码适应移动端,pc端相关推荐

  1. PC版微信加密图片解密思路与代码实现_Python

    PC版微信加密图片解密思路与代码实现_Python 前言 PC版的微信会加密存储用户接受到的所有图片信息. 存储路径为 C:\Users\用户名\Documents\WeChat Files\微信号\ ...

  2. 前端如何优雅的实现跨终端开发(PC端+移动端)

    文章目录 解决方案一:使用CSS媒体查询. 解决方案二:写两套代码,分别应用于PC端和移动端. 推荐方案:使用CabloyJS 相关链接 解决方案一:使用CSS媒体查询. 这是传统的解决方案.使用一套 ...

  3. vue 项目适配PC和移动端配置 (两套代码)

    vue 项目适配PC和移动端配置 (两套代码) 1.首页的配置: 首页用重定向的方式来进行适配的方案:` const redirectPath = /Android |webos | iphone i ...

  4. vue——props的两种常用方法

    vue--props的两种常用方法 1.实现父-->子的通信 举例如下: 父组件 parent.vue <children :channel="object1"> ...

  5. vue 同时执行两个函数 点击_【第2112期】 import { reactive } from #39;vue#39;

    前言 今日早读文章由@Anthony Fu授权分享. @Anthony Fu,是 Vue 的 Core Team 的一员,在 Vue主要负责 @vue/composition-api 这个项目的维护. ...

  6. 深度对比学习Vue和React两大框架

    作为国内应用最广的两个框架,Vue 和 React 是前端必须掌握的内容,也是面试的重点.但大多数读者都只擅长其中一个框架,当面试涉及到另一个框架的内容时,就答不好了. 比如虚拟dom,两个框架中都有 ...

  7. 关于Android工程师转成vue的三两事儿(4)--webpack

     最近为了能够写一份值得参考的webpack文档,特意的去查了好多相应的书籍,博客.距离上次写的那篇文章好想也过去将近一周的时间了.我想是时候要准备下一篇文章了.不然就食言而肥了.  算了,技术类文章 ...

  8. vue的axios两种写法(不知道对不对,仅供参考)

    vue的axios两种写法(不知道对不对,仅供参考) `methods () {     getHomeInfo () {         axios.get ('/api/index.json') ...

  9. 创建Vue项目的两种方法(镜像和官网)

    两种搭建方法: 安装node:brew install node 查看node版本:node -v 安装npm:brew install npm 查看npm版本:npm -v 使用淘宝镜像 使用官网办 ...

  10. vue路由的两种模式:hash与history的区别

    前言:众所周知,vue-router有两种模式,hash模式和history模式,下面来看看两者的区别. 一.基本情况 直观区别:hash模式url带#号,history模式不带#号. 1.hash模 ...

最新文章

  1. session already invalidate
  2. C语言写一个简单的数学程序,用C语言计算简单的数学式子
  3. C语言Kruskal 算法 (MST)(附完整源码)
  4. php 判断update返回为0_PHP empty函数判断0返回真还是假
  5. leetcode226. 翻转二叉树(dfs)
  6. 解决centos下缺少sasl.h的问题(#include <sasl/sasl.h>)
  7. Laravel核心解读--ENV的加载和读取
  8. (十)java版b2b2c社交电商spring cloud分布式微服务- SSO单点登录之OAuth2.0登录认证(1)...
  9. [POI2009]Wie
  10. hql与sql的区别(转)
  11. window-linux移植
  12. 使用soap遇到的缓存问题
  13. FlashFXP 5.4.0注册码
  14. iOS 打开扬声器以及插入耳机的操作
  15. python计算均线斜率_一根20日均线闯天下——量化回测“压箱底指标”,值得读十遍!...
  16. Google 为什么选择 Jetty,放弃 Tomcat
  17. Matlab abs防抱死系统,防抱死制动系统建模
  18. nagios配置示例
  19. PHP:【商城后台管理系统】部署角色管理,角色添加,菜单权限,删除角色功能
  20. ubuntu16.04Cuda8.0安装opencv3.1

热门文章

  1. Iocomp 工业仪表盘控件包详细介绍说明
  2. Java中的String的长度限制问题
  3. DB2 表的常用命令
  4. libsvm 实现多分类原理
  5. matlab 的 legend 用法
  6. Java IO-03 字节流和字符流
  7. ORACLE11g R2数据库安装(一)
  8. Fashion Your Firefox
  9. [Struts]使用tiles管理界面遇到困难
  10. 流模型 操作 xml