vue能實現(xiàn)自適應(yīng),其實現(xiàn)自適應(yīng)的方法有:1、通過“npm install”或“yarn add”命令安裝“scale-box”組件,并使用“scale-box”實現(xiàn)適配縮放;2、通過設(shè)置設(shè)備像素比例實現(xiàn)自適應(yīng);3、通過JS設(shè)置zoom屬性調(diào)整縮放比例來實現(xiàn)自適應(yīng)即可。
本教程操作環(huán)境:Windows10系統(tǒng)、vue2&&vue3版、Dell G3電腦。
vue能實現(xiàn)自適應(yīng)嗎?
能。
Vue屏幕自適應(yīng)三種實現(xiàn)方法詳解
使用 scale-box 組件
屬性:
-
width
寬度 默認1920
-
height
高度 默認1080
-
bgc
背景顏色 默認"transparent"
-
delay
自適應(yīng)縮放防抖延遲時間(ms) 默認100
vue2版本:vue2大屏適配縮放組件(vue2-scale-box - npm)
npm install vue2-scale-box
或者
yarn add vue2-scale-box
使用方法:
<template> <div> <scale-box :width="1920" :height="1080" bgc="transparent" :delay="100"> <router-view /> </scale-box> </div> </template> <script> import ScaleBox from "vue2-scale-box"; export default { components: { ScaleBox }, }; </script> <style lang="scss"> body { margin: 0; padding: 0; background: url("@/assets/bg.jpg"); } </style>
vue3版本:vue3大屏適配縮放組件(vue3-scale-box - npm)
npm install vue3-scale-box
或者
yarn add vue3-scale-box
使用方法:
<template> <ScaleBox :width="1920" :height="1080" bgc="transparent" :delay="100"> <router-view /> </ScaleBox> </template> <script> import ScaleBox from "vue3-scale-box"; </script> <style lang="scss"> body { margin: 0; padding: 0; background: url("@/assets/bg.jpg"); } </style>
設(shè)置設(shè)備像素比例(設(shè)備像素比)
在項目的 utils 下新建 devicePixelRatio.js 文件
class devicePixelRatio { /* 獲取系統(tǒng)類型 */ getSystem() { const agent = navigator.userAgent.toLowerCase(); const isMac = /macintosh|mac os x/i.test(navigator.userAgent); if (isMac) return false; // 目前只針對 win 處理,其它系統(tǒng)暫無該情況,需要則繼續(xù)在此添加即可 if (agent.indexOf("windows") >= 0) return true; } /* 監(jiān)聽方法兼容寫法 */ addHandler(element, type, handler) { if (element.addEventListener) { element.addEventListener(type, handler, false); } else if (element.attachEvent) { element.attachEvent("on" + type, handler); } else { element["on" + type] = handler; } } /* 校正瀏覽器縮放比例 */ correct() { // 頁面devicePixelRatio(設(shè)備像素比例)變化后,計算頁面body標簽zoom修改其大小,來抵消devicePixelRatio帶來的變化 document.getElementsByTagName("body")[0].style.zoom = 1 / window.devicePixelRatio; } /* 監(jiān)聽頁面縮放 */ watch() { const that = this; // 注意: 這個方法是解決全局有兩個window.resize that.addHandler(window, "resize", function () { that.correct(); // 重新校正瀏覽器縮放比例 }); } /* 初始化頁面比例 */ init() { const that = this; // 判斷設(shè)備,只在 win 系統(tǒng)下校正瀏覽器縮放比例 if (that.getSystem()) { that.correct(); // 校正瀏覽器縮放比例 that.watch(); // 監(jiān)聽頁面縮放 } } } export default devicePixelRatio;
在App.vue 中引入并使用即可
<template> <div> <router-view /> </div> </template> <script> import devPixelRatio from "@/utils/devicePixelRatio.js"; export default { created() { new devPixelRatio().init(); // 初始化頁面比例 }, }; </script> <style lang="scss"> body { margin: 0; padding: 0; } </style>
通過JS設(shè)置zoom屬性調(diào)整縮放比例
在項目的 utils 下新建 monitorZoom.js 文件
export const monitorZoom = () => { let ratio = 0, screen = window.screen, ua = navigator.userAgent.toLowerCase(); if (window.devicePixelRatio !== undefined) { ratio = window.devicePixelRatio; } else if (~ua.indexOf("msie")) { if (screen.deviceXDPI && screen.logicalXDPI) { ratio = screen.deviceXDPI / screen.logicalXDPI; } } else if ( window.outerWidth !== undefined && window.innerWidth !== undefined ) { ratio = window.outerWidth / window.innerWidth; } if (ratio) { ratio = Math.round(ratio * 100); } return ratio; };
在main.js 中引入并使用即可
import { monitorZoom } from "@/utils/monitorZoom.js"; const m = monitorZoom(); if (window.screen.width * window.devicePixelRatio >= 3840) { document.body.style.zoom = 100 / (Number(m) / 2); // 屏幕為 4k 時 } else { document.body.style.zoom = 100 / Number(m); }
完整代碼
import Vue from "vue"; import App from "./App.vue"; import router from "./router"; /* 調(diào)整縮放比例 start */ import { monitorZoom } from "@/utils/monitorZoom.js"; const m = monitorZoom(); if (window.screen.width * window.devicePixelRatio >= 3840) { document.body.style.zoom = 100 / (Number(m) / 2); // 屏幕為 4k 時 } else { document.body.style.zoom = 100 / Number(m); } /* 調(diào)整縮放比例 end */ Vue.config.productionTip = false; new Vue({ router, render: (h) => h(App), }).$mount("#app");
獲取屏幕的分辨率
獲取屏幕的寬:
window.screen.width * window.devicePixelRatio
獲取屏幕的高:
window.screen.height * window.devicePixelRatio
移動端適配(使用 postcss-px-to-viewport 插件)
官網(wǎng):http://m.miracleart.cn/link/2dd6d682870e39d9927b80f8232bd276
npm install postcss-px-to-viewport --save-dev
或者
yarn add -D postcss-px-to-viewport
配置適配插件的參數(shù)(在項目根目錄創(chuàng)建 .postcssrc.js 文件[與 src 目錄平級])粘貼以下代碼即可
module.exports = { plugins: { autoprefixer: {}, // 用來給不同的瀏覽器自動添加相應(yīng)前綴,如-webkit-,-moz-等等 "postcss-px-to-viewport": { unitToConvert: "px", // 需要轉(zhuǎn)換的單位,默認為"px" viewportWidth: 390, // UI設(shè)計稿的寬度 unitPrecision: 6, // 轉(zhuǎn)換后的精度,即小數(shù)點位數(shù) propList: ["*"], // 指定轉(zhuǎn)換的css屬性的單位,*代表全部css屬性的單位都進行轉(zhuǎn)換 viewportUnit: "vw", // 指定需要轉(zhuǎn)換成的視窗單位,默認vw fontViewportUnit: "vw", // 指定字體需要轉(zhuǎn)換成的視窗單位,默認vw selectorBlackList: ["wrap"], // 需要忽略的CSS選擇器,不會轉(zhuǎn)為視口單位,使用原有的px等單位 minPixelValue: 1, // 默認值1,小于或等于1px則不進行轉(zhuǎn)換 mediaQuery: false, // 是否在媒體查詢的css代碼中也進行轉(zhuǎn)換,默認false replace: true, // 是否直接更換屬性值,而不添加備用屬性 exclude: [/node_modules/], // 忽略某些文件夾下的文件或特定文件,用正則做目錄名匹配,例如 'node_modules' 下的文件 landscape: false, // 是否處理橫屏情況 landscapeUnit: "vw", // 橫屏?xí)r使用的視窗單位,默認vw landscapeWidth: 2048 // 橫屏?xí)r使用的視口寬度 } } };
推薦學(xué)習(xí):《vue.js視頻教程》
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Pour développer une application Web Python complète, suivez ces étapes: 1. Choisissez le cadre approprié, tel que Django ou Flask. 2. Intégrez les bases de données et utilisez des orms tels que Sqlalchemy. 3. Concevez le frontal et utilisez Vue ou React. 4. Effectuez le test, utilisez Pytest ou Unittest. 5. Déployer les applications, utiliser Docker et des plates-formes telles que Heroku ou AWS. Grace à ces étapes, des applications Web puissantes et efficaces peuvent être construites.

Le c?ur du système de routage frontal est de mapper les URL aux composants. VUerouter et Reactrouter réalisent la commutation de page sans rafra?chissement en écoutant les modifications de l'URL et en chargeant des composants correspondants. Les méthodes de configuration incluent: 1. Routing imbriqué, permettant aux composants enfants imbriqués dans le composant parent; 2. Routing dynamique, chargeant différents composants en fonction des paramètres URL; 3. Route Guard, effectuer une logique telle que les vérifications d'autorisation avant et après la commutation de l'itinéraire.

ReactivitytransforminVue3aimedtosimplifyhandlingreactivedatabyautomaticallytrackingandmanagingreactivitywithoutrequiringmanualref()or.valueusage.Itsoughttoreduceboilerplateandimprovecodereadabilitybytreatingvariableslikeletandconstasautomaticallyreac

Les différences de base entre Vue.js et React dans le développement des composants sont: 1) Vue.js utilise la syntaxe du modèle et l'option API, tandis que React utilise JSX et les composants fonctionnels; 2) Vue.js utilise des systèmes réactifs, React utilise des données immuables et un DOM virtuel; 3) Vue.js fournit plusieurs crochets de cycle de vie, tandis que React utilise plus de crochets d'effet d'utilisation.

Internationalisation et olocalisation dans la variation des acquis

Lorsque Vue.js gère les mises à jour du tableau, la vue n'est pas mise à jour car object.defineproperty ne peut pas écouter directement les modifications du tableau. Les solutions incluent: 1. Utilisez la méthode Vue.Set pour modifier l'index du tableau; 2. Réaffectez l'intégralité du tableau; 3. Utilisez la méthode de mutation réécrite de Vue pour faire fonctionner le tableau.

En utilisant: keyattributewithv-forrinvuesessentialforperformanceAndCorrectBehavior.Ort, itHelpsvueTrackEachElementation efficace par ce que

Les méthodes pour optimiser les performances des grandes listes et des composants complexes dans Vue incluent: 1. Utilisez la directive V-ONCE pour traiter le contenu statique pour réduire les mises à jour inutiles; 2. Implémentez le défilement virtuel et ne rendez que le contenu de la zone visuelle, comme l'utilisation de la bibliothèque Vue-Virtual-Croller; 3. Composants de cache via Keep-Alive ou V-ONCE pour éviter les supports en double; 4. Utilisez des propriétés et des auditeurs calculés pour optimiser la logique réactive pour réduire la plage de réinstallation; 5. Suivez les meilleures pratiques, comme l'utilisation de clés uniques en V-FOR, en évitant les fonctions en ligne dans les modèles et en utilisant des outils d'analyse des performances pour localiser les goulots d'étranglement. Ces stratégies peuvent améliorer efficacement la ma?trise de l'application.
