iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >Vue2.0如何实现自适应分辨率
  • 508
分享到

Vue2.0如何实现自适应分辨率

2023-06-21 21:06:46 508人浏览 独家记忆
摘要

这篇文章主要讲解了“Vue2.0如何实现自适应分辨率”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue2.0如何实现自适应分辨率”吧!1. 前台框架:Vue2.0+elementUI 2.

这篇文章主要讲解了“Vue2.0如何实现自适应分辨率”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue2.0如何实现自适应分辨率”吧!

1. 前台框架:Vue2.0+elementUI 2.15.7

2. 开发工具:vs code

3. 安装所需架包:

"postCSS-import": "12.0.1",
"postcss-loader": "4.0.1",
"postcss-pxtorem": "^5.1.1",

检查是否安装“flexible”架包,安装了需卸载或者取消引用,该架包文件会和修改过的“flexible”文件冲突。

4. 创建flexibleEx.js文件(该文件是修改flexible架包的flexible.js文件,可以根据需求自行修改),放置在所需要的随意位置,如:“/src/utils”目录下面。

然后将“flexibleEx.js”引入到“main.js”中,如:

import '@/utils/flexibleEx.js'

文件代码:

(function(win, lib) {  var doc = win.document  var docEl = doc.documentElement  var metaEl = doc.querySelector('meta[name="viewport"]')  var flexibleEl = doc.querySelector('meta[name="flexible"]')  var dpr = 0  var scale = 0  var tid  var flexible = lib.flexible || (lib.flexible = {})   if (metaEl) {    console.warn('将根据已有的meta标签来设置缩放比例')    var match = metaEl      .getAttribute('content')      .match(/initial\-scale=([\d\.]+)/)    if (match) {      scale = parseFloat(match[1])      dpr = parseInt(1 / scale)    }  } else if (flexibleEl) {    var content = flexibleEl.getAttribute('content')    if (content) {      var initialDpr = content.match(/initial\-dpr=([\d\.]+)/)      var maximumDpr = content.match(/maximum\-dpr=([\d\.]+)/)      if (initialDpr) {        dpr = parseFloat(initialDpr[1])        scale = parseFloat((1 / dpr).toFixed(2))      }      if (maximumDpr) {        dpr = parseFloat(maximumDpr[1])        scale = parseFloat((1 / dpr).toFixed(2))      }    }  }   if (!dpr && !scale) {    var isAndroid = win.navigator.appVersion.match(/android/gi)    var isIPhone = win.navigator.appVersion.match(/iphone/gi)    var devicePixelRatio = win.devicePixelRatio    if (isIPhone) {      // iOS下,对于2和3的屏,用2倍的方案,其余的用1倍方案      if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) {        dpr = 3      } else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)) {        dpr = 2      } else {        dpr = 1      }    } else {      // 其他设备下,仍旧使用1倍的方案      dpr = 1    }    scale = 1 / dpr  }   docEl.setAttribute('data-dpr', dpr)  if (!metaEl) {    metaEl = doc.createElement('meta')    metaEl.setAttribute('name', 'viewport')    metaEl.setAttribute(      'content',      'initial-scale=' +            scale +            ', maximum-scale=' +            scale +            ', minimum-scale=' +            scale +            ', user-Scalable=no'    )    if (docEl.firstElementChild) {      docEl.firstElementChild.appendChild(metaEl)    } else {      var wrap = doc.createElement('div')      wrap.appendChild(metaEl)      doc.write(wrap.innerhtml)    }  }   function refreshRem() {    const whiteList = [      '/managementKanban',      '/productionKanban',      '/controlBoard',      '/main'    ] // 不重定向白名单路由    var width = docEl.getBoundinGClientRect().width    var rem = 0     var hrefList = window.location.href.split('/')    var url = hrefList[hrefList.length - 1]    var url0 = url.split('?')    var urlEnd    if (url0.length > 0) {      urlEnd = url0[0]    }    if (!whiteList.includes('/' + urlEnd)) {      if (width / dpr <= 1980 && width / dpr > 768) {        width = 1980 * dpr        rem = width / 48      } else if (width / dpr >= 5760) {        width = 5760 * dpr        rem = width / 48      } else {        width = 540 * dpr        rem = width / 20      }      docEl.style.fontSize = rem + 'px'      flexible.rem = win.rem = rem    }  }   win.addEventListener(    'resize',    function() {      clearTimeout(tid)      tid = setTimeout(refreshRem, 300)    },    false  )  win.addEventListener(    'DOMnodeInserted',    function() {      clearTimeout(tid)      tid = setTimeout(refreshRem, 50)    },    false  )  win.addEventListener(    'pageshow',    function(e) {      if (e.persisted) {        clearTimeout(tid)        tid = setTimeout(refreshRem, 300)      }    },    false  )   if (doc.readyState === 'complete') {    doc.body.style.fontSize = 12 * dpr + 'px'  } else {    doc.addEventListener(      'DOMContentLoaded',      function(e) {        doc.body.style.fontSize = 12 * dpr + 'px'      },      false    )  }   refreshRem()   flexible.dpr = win.dpr = dpr  flexible.refreshRem = refreshRem  flexible.rem2px = function(d) {    var val = parseFloat(d) * this.rem    if (typeof d === 'string' && d.match(/rem$/)) {      val += 'px'    }    return val  }  flexible.px2rem = function(d) {    var val = parseFloat(d) / this.rem    if (typeof d === 'string' && d.match(/px$/)) {      val += 'rem'    }    return val  }})(window, window['lib'] || (window['lib'] = {}))

5. 修改“build/utitls.js”文件,添加代码:

function generateLoaders(loader, loaderOptions) {    const loaders = options.usePostCSS ? [cssLoader] : [cssLoader];     if (loader) {      loaders.push({        loader: loader + "-loader",        options: Object.assign({}, loaderOptions, {          sourceMap: options.sourceMap        })      });    }     // Extract CSS when that option is specified    // (which is the case during production build)    if (options.extract) {      return ExtractTextPlugin.extract({        use: loaders,        fallback: "vue-style-loader",        publicPath: "../../"      });    } else {      return ["vue-style-loader"].concat(loaders);    }  }

6. 修改更目录下面“postcssrc.js”

module.exports = {    plugins: {        'autoprefixer': {            overrideBrowserslist: [                'Android 4.1',                'iOS 7.1',                'Chrome > 31',                'ff > 31',                'ie >= 8'            ]        },        'postcss-pxtorem': {            rootValue: 37.5,            propList: ['*']        }    }}

7. 注:界面自适应问题已经解决,但是界面呈现还会出现一些问题,现在需要自行修改异常界面,界面开发尽量使用rem,样式尽量不要使用内联样式,这些都需要手动修改

感谢各位的阅读,以上就是“Vue2.0如何实现自适应分辨率”的内容了,经过本文的学习后,相信大家对Vue2.0如何实现自适应分辨率这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Vue2.0如何实现自适应分辨率

本文链接: https://www.lsjlt.com/news/300643.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue2.0如何实现自适应分辨率
    这篇文章主要讲解了“Vue2.0如何实现自适应分辨率”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue2.0如何实现自适应分辨率”吧!1. 前台框架:Vue2.0+elementUI 2....
    99+
    2023-06-21
  • Vue2.0实现自适应分辨率
    本文实例为大家分享了Vue2.0实现自适应分辨率的具体代码,供大家参考,具体内容如下 1. 前台框架:Vue2.0+elementUI 2.15.7 2. 开发工具:vs code ...
    99+
    2024-04-02
  • Vue实现PC端分辨率自适应的示例代码
    目录方案安装依赖引入依赖px转换成rem修改flexible.js参考博客方案 lib-flexible+ px2remLoader lib-flexible:阿里...
    99+
    2024-04-02
  • 如何实现大图片根据分辨率自适应宽度仍居中显示
    这篇文章主要介绍“如何实现大图片根据分辨率自适应宽度仍居中显示”,在日常操作中,相信很多人在如何实现大图片根据分辨率自适应宽度仍居中显示问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
    99+
    2024-04-02
  • Android中的字体大小怎么实现自适应不同分辨率
    Android中的字体大小怎么实现自适应不同分辨率?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、原理如下:假设需要适应320x240,480...
    99+
    2023-05-31
    android roi %d
  • 如何实现背景图片自适应浏览器分辨率大小并自动拉伸全屏代码
    这篇文章主要介绍“如何实现背景图片自适应浏览器分辨率大小并自动拉伸全屏代码”,在日常操作中,相信很多人在如何实现背景图片自适应浏览器分辨率大小并自动拉伸全屏代码问题上存在疑惑,小编查阅了各式资料,整理出简单...
    99+
    2024-04-02
  • CSS如何实现自适应分隔线
    这篇文章将为大家详细讲解有关CSS如何实现自适应分隔线,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。分割线是网页中比较常见的一类设计了,比如说知乎的更多回答这里的自适应是...
    99+
    2024-04-02
  • win10自定义分辨率如何设置
    这篇文章主要讲解了“win10自定义分辨率如何设置”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“win10自定义分辨率如何设置”吧!win10自定义分辨率设置方法:在右下角的搜索中输入控制面...
    99+
    2023-07-01
  • 详解Flutter桌面应用如何进行多分辨率适配
    目录前言屏幕适配的一些基础概念Flutter 移动端开发的通用做法存在的问题桌面端解决方案一、需求分析二、实现原理写在最后前言 通过此篇文章,你将了解到: Flutter wind...
    99+
    2023-02-12
    Flutter桌面应用多分辨率适配 Flutter 分辨率
  • windows分辨率没有合适的如何解决
    这篇文章主要介绍“windows分辨率没有合适的如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“windows分辨率没有合适的如何解决”文章能帮助大家解决问题。分辨率没有合适的解决方法安装驱动...
    99+
    2023-07-01
  • ps分辨率如何调
    这篇文章主要介绍“ps分辨率如何调”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“ps分辨率如何调”文章能帮助大家解决问题。首先进入ps,然后点击上面的“图像”。 然后选择下面的“图像大小”。 然后你...
    99+
    2023-07-02
  • 如何使用CSS实现自适应分隔线
    小编给大家分享一下如何使用CSS实现自适应分隔线,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! CSS实现自适应分隔线的N种方...
    99+
    2024-04-02
  • Vue指令实现大屏元素分辨率适配详解
    目录前言1. 常见的适配方案2. CSS3 缩放方案3. 封装一个缩放指令4. 后记前言 随着前端技术的不断发展、数据中心(中台)之类的概念的不断升级、物联网设备的更新和普及,越来越...
    99+
    2024-04-02
  • 基于Python如何实现视频分辨率转换
    这篇文章主要为大家展示了“基于Python如何实现视频分辨率转换”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“基于Python如何实现视频分辨率转换”这篇文章吧。环境依赖ffmpeg环境安装,可...
    99+
    2023-06-22
  • win7分辨率如何更改
    今天小编给大家分享一下win7分辨率如何更改的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。win7分辨率更改教程首先右键点击...
    99+
    2023-07-01
  • 如何通过Java实现修改视频分辨率
    目录前言环境依赖代码验证一下前言 本文提供可以调整视频分辨率的java代码,实用主义的狂欢。 环境依赖 添加需要的maven依赖。 <dependency&...
    99+
    2024-04-02
  • win11分辨率如何调整
    这篇文章主要介绍“win11分辨率如何调整”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“win11分辨率如何调整”文章能帮助大家解决问题。首先点击任务栏最左边的图标并点击设置。 进入设置之后点击“系...
    99+
    2023-07-01
  • ps分辨率dpi如何调
    本篇内容主要讲解“ps分辨率dpi如何调”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ps分辨率dpi如何调”吧!方法一: 首先点击ps软件的“文件”再点击“新建”。 然后你可以在新建表中看到分...
    99+
    2023-07-02
  • win10分辨率如何调2k
    这篇“win10分辨率如何调2k”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“win10分辨率如何调2k”文章吧。win10...
    99+
    2023-07-01
  • 电脑分辨率如何调
    这篇文章主要讲解了“电脑分辨率如何调”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“电脑分辨率如何调”吧!点击鼠标右键桌面空白的地方,出来选择框,选择“个性化”。 打开以后,点击左上角“主页”...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作