电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

vue實現PC端分辨率適配操作

瀏覽:120日期:2022-12-19 09:20:06

依賴

項目基礎配置使用 vue-cli 生成

自適應方案核心: 阿里可伸縮布局方案 lib-flexible

px轉rem:px2rem,它有webpack的loader px2rem

開始

先使用vue腳手架初始化一個webpack項目

vue init webpack 項目名

項目初始化好了之后,進入項目目錄中 (cd 項目名) 安裝 lib-flexible 和 px2rem-loader

npm i lib-flexible -S

npm i px2rem-loader -D

安裝好了之后還需要在項目的入口文件 main.js 里引入 lib-flexible

// main.js

import ’lib-flexible’

vue實現PC端分辨率適配操作

接下來為了驗證 lib-flexible 是否生效,可以將app.vue中的內容改成:

<template> <div class='wrapper'> <div class='box1'></div> <div class='box2'></div> <div class='box3'></div> <div class='box4'></div> <div class='box5'></div> </div></template><style> * { margin: 0; padding: 0; }</style><style scoped> .wrapper div { height: 1rem; } .box1 { width: 2rem; background-color: coral; } .box2 { width: 4rem; background-color: skyblue; } .box3 { width: 6rem; background-color: palegreen; } .box4 { width: 8rem; background-color: wheat; } .box5 { width: 10rem; background-color: darkred; }</style>

vue實現PC端分辨率適配操作

但是在實際開發中,我們通過設計稿得到的單位是px,所以要將px轉換成rem再進行樣式中。但如果都需要手動轉的話,就很麻煩,所以需要一個工具替我們完成這項工作,這個時候就需要配置px2rem了,當然,編輯器可能也要對應的插件。

在 vue-cli 生成的 webpack 配置中,vue-loader 的 options 和其他樣式文件 loader 最終是都是由 build/utils.js 里的一個方法生成的。我們只需在 cssLoader 后再加上一個 px2remLoader 即可,px2rem-loader 的 remUnit 選項意思是 1rem=多少像素,結合 lib-flexible 的方案,我們將 px2remLoader 的 options.remUnit 設置成設計稿寬度的 1/10,這里我們假設設計稿寬為 1920px。

//utils.jsconst cssLoader = { loader: ’css-loader’, options: { sourceMap: options.sourceMap } } const px2remLoader = { loader: ’px2rem-loader’, options: { remUnit: 192 } } //...

放進loaders數組中

//utils.jsfunction generateLoaders (loader, loaderOptions) { const loaders = options.usePostCSS ? [cssLoader, postcssLoader, px2remLoader] : [cssLoader, px2remLoader] if (loader) { loaders.push({ loader: loader + ’-loader’, options: Object.assign({}, loaderOptions, { sourceMap: options.sourceMap }) }) }//...

修改配置以后重啟服務器,將原來app.vue文件中的樣式改成:

<style scoped>.wrapper div { height: 1rem;}.box1 { /* 750 * 20% */ width: 150px; background-color: coral;}.box2 { /* 750 * 40% */ width: 300px; background-color: skyblue;}.box3 { /* 750 * 60% */ width: 450px; background-color: palegreen;}.box4 { /* 750 * 80% */ width: 600px; background-color: wheat;}.box5 { /* 750 * 100% */ width: 750px; background-color: darkred;}</style>

可以看到,適配依然生效。

以上是vue-cli2配置px2rem的方式,

如果腳手架用的是vue-cli3的話,由于vue-cli3 生成的目錄結構沒有build文件,所以在配置上也有一些不同。

vue-cli3配置方式:

找到文件 node_modules/@vue/cli-service/lib/config/css.js,添加規則:

config.module .rule(’css’) .test(/.css$/) .oneOf(’vue’) .resourceQuery(/?vue/) .use(’px2rem’) .loader(’px2rem-loader’) .options({ remUnit: 75 })

vue實現PC端分辨率適配操作

remUnit的值請自行修改。

但是有一個問題,我明明設置的寬度是按1920來的,為什么計算出來1rem=54px?

vue實現PC端分辨率適配操作

是不是插件哪里出了問題,或者在哪里定義過跟54或者540相關的東西?

(我這里全局搜索了54找到flexible.js文件)

找到flexible.js文件看下:

vue實現PC端分辨率適配操作

找到問題了就解決問題,既然文件把屏幕寬度寫死了,那就不寫死:

function refreshRem(){ var width = docEl.getBoundingClientRect().width; if (width / dpr > 540) { width = width * dpr; } var rem = width / 10; docEl.style.fontSize = rem + ’px’; flexible.rem = win.rem = rem; }

現在再重啟項目,看一下運行結果:

vue實現PC端分辨率適配操作

end

有問題歡迎指正!

以上這篇vue實現PC端分辨率適配操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Vue
相關文章:
主站蜘蛛池模板: 越南专线物流_东莞国际物流_东南亚专线物流_行通物流 | 金属软管_不锈钢金属软管_巩义市润达管道设备制造有限公司 | 消电检公司,消电检价格,北京消电检报告-北京设施检测公司-亿杰(北京)消防工程有限公司 | 南京蜂窝纸箱_南京木托盘_南京纸托盘-南京博恒包装有限公司 | 滑石粉,滑石粉厂家,超细滑石粉-莱州圣凯滑石有限公司 | 煤矿人员精确定位系统_矿用无线通信系统_煤矿广播系统 | 上海租车公司_上海包车_奔驰租赁_上海商务租车_上海谐焕租车 | 臭氧老化试验箱,高低温试验箱,恒温恒湿试验箱,防水试验设备-苏州亚诺天下仪器有限公司 | 杭州网络公司_百度SEO优化-外贸网络推广_抖音小程序开发-杭州乐软科技有限公司 | 在线浊度仪_悬浮物污泥浓度计_超声波泥位计_污泥界面仪_泥水界面仪-无锡蓝拓仪表科技有限公司 | 气体检测仪-氢气检测仪-可燃气体传感器-恶臭电子鼻-深国安电子 | 螺杆式冷水机-低温冷水机厂家-冷冻机-风冷式-水冷式冷水机-上海祝松机械有限公司 | 工业风机_环保空调_冷风机_工厂车间厂房通风降温设备旺成服务平台 | 工业淬火油烟净化器,北京油烟净化器厂家,热处理油烟净化器-北京众鑫百科 | 免费分销系统 — 分销商城系统_分销小程序开发 -【微商来】 | 四合院设计_四合院装修_四合院会所设计-四合院古建设计与建造中心1 | 黑田精工电磁阀-CAMMOZI气缸-ROSS电磁-上海茂硕机械设备有限公司 | 钢格板_钢格栅_格栅板_钢格栅板 - 安平县鑫拓钢格栅板厂家 | 碳钢法兰厂家,非标法兰,定制异型,法兰生产厂家-河北九瑞管道 | 飞飞影视_热门电影在线观看_影视大全| 磁力抛光机_磁力研磨机_磁力去毛刺机_精密五金零件抛光设备厂家-冠古科技 | 北京翻译公司_同传翻译_字幕翻译_合同翻译_英语陪同翻译_影视翻译_翻译盖章-译铭信息 | 合肥地磅_合肥数控切割机_安徽地磅厂家_合肥世佳电工设备有限公司 | 体视显微镜_荧光生物显微镜_显微镜报价-微仪光电生命科学显微镜有限公司 | 伺服电机_直流伺服_交流伺服_DD马达_拓达官方网站 | 大型多片锯,圆木多片锯,方木多片锯,板材多片锯-祥富机械有限公司 | 糖衣机,除尘式糖衣机,全自动糖衣机,泰州市长江制药机械有限公司 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 骨灰存放架|骨灰盒寄存架|骨灰架厂家|智慧殡葬|公墓陵园管理系统|网上祭奠|告别厅智能化-厦门慈愿科技 | 全自动定氮仪-半自动凯氏定氮仪厂家-祎鸿仪器 | 电线电缆厂家|沈阳电缆厂|电线厂|沈阳英联塑力线缆有限公司 | 二维运动混料机,加热型混料机,干粉混料机-南京腾阳干燥设备厂 | 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | 青岛球场围网,青岛车间隔离网,青岛机器人围栏,青岛水源地围网,青岛围网,青岛隔离栅-青岛晟腾金属制品有限公司 | 自动配料系统_称重配料控制系统厂家 | 冷柜风机-冰柜电机-罩极电机-外转子风机-EC直流电机厂家-杭州金久电器有限公司 | 天津力值检测-天津管道检测-天津天诚工程检测技术有限公司 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 带压开孔_带压堵漏_带压封堵-菏泽金升管道工程有限公司 | CE认证_产品欧盟ROHS-REACH检测机构-商通检测 | 招商帮-一站式网络营销服务|搜索营销推广|信息流推广|短视视频营销推广|互联网整合营销|网络推广代运营|招商帮企业招商好帮手 | 吉林污水处理公司,长春工业污水处理设备,净水设备-长春易洁环保科技有限公司 |