亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
使用scale-box 元件
首頁 web前端 前端問答 vue能實現(xiàn)自適應嗎

vue能實現(xiàn)自適應嗎

Dec 30, 2022 pm 03:25 PM
vue 自適應

vue能實現(xiàn)自適應,其實現(xiàn)自適應的方法有:1、透過「npm install」或「yarn add」指令安裝「scale-box」元件,並使用「scale-box」實現(xiàn)適配縮放;2、透過設定裝置像素比例實現(xiàn)自適應;3、透過JS設定zoom屬性調整縮放比例來實現(xiàn)自適應即可。

vue能實現(xiàn)自適應嗎

本教學操作環(huán)境:Windows10系統(tǒng)、vue2&&vue3版、Dell G3電腦。

vue能實現(xiàn)自適應嗎?

能。

Vue螢幕自適應三種實作方法詳解

使用scale-box 元件

屬性:

  • width 寬度預設1920
  • height高度預設1080
  • ##bgc背景顏色預設"transparent"
  • delay自適應縮放防手震延遲時間(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>
設定裝置像素比例(裝置像素比)

在項目的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(設備像素比例)變化后,計算頁面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;
    // 判斷設備,只在 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設定zoom屬性調整縮放比例

在專案的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";
/* 調整縮放比例 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);
}
/* 調整縮放比例 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://ipnx.cn/link/2dd6d682870e39d9927b80f8232bd276

#npm install postcss-p -to-viewport --save-dev

yarn add -D postcss-px-to-viewport

##設定適配插件的參數(shù)(在專案根目錄建立.postcssrc.js 檔案[與src 目錄平級])貼上以下程式碼即可

module.exports = {
  plugins: {
    autoprefixer: {}, // 用來給不同的瀏覽器自動添加相應前綴,如-webkit-,-moz-等等
    "postcss-px-to-viewport": {
      unitToConvert: "px", // 需要轉換的單位,默認為"px"
      viewportWidth: 390, // UI設計稿的寬度
      unitPrecision: 6, // 轉換后的精度,即小數(shù)點位數(shù)
      propList: ["*"], // 指定轉換的css屬性的單位,*代表全部css屬性的單位都進行轉換
      viewportUnit: "vw", // 指定需要轉換成的視窗單位,默認vw
      fontViewportUnit: "vw", // 指定字體需要轉換成的視窗單位,默認vw
      selectorBlackList: ["wrap"], // 需要忽略的CSS選擇器,不會轉為視口單位,使用原有的px等單位
      minPixelValue: 1, // 默認值1,小于或等于1px則不進行轉換
      mediaQuery: false, // 是否在媒體查詢的css代碼中也進行轉換,默認false
      replace: true, // 是否直接更換屬性值,而不添加備用屬性
      exclude: [/node_modules/], // 忽略某些文件夾下的文件或特定文件,用正則做目錄名匹配,例如 &#39;node_modules&#39; 下的文件
      landscape: false, // 是否處理橫屏情況
      landscapeUnit: "vw", // 橫屏時使用的視窗單位,默認vw
      landscapeWidth: 2048 // 橫屏時使用的視口寬度
    }
  }
};
#推薦學習:《
vue. js影片教學

以上是vue能實現(xiàn)自適應嗎的詳細內容。更多資訊請關注PHP中文網(wǎng)其他相關文章!

本網(wǎng)站聲明
本文內容由網(wǎng)友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權的內容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
怎樣開發(fā)一個完整的PythonWeb應用程序? 怎樣開發(fā)一個完整的PythonWeb應用程序? May 23, 2025 pm 10:39 PM

要開發(fā)一個完整的PythonWeb應用程序,應遵循以下步驟:1.選擇合適的框架,如Django或Flask。 2.集成數(shù)據(jù)庫,使用ORM如SQLAlchemy。 3.設計前端,使用Vue或React。 4.進行測試,使用pytest或unittest。 5.部署應用,使用Docker和平臺如Heroku或AWS。通過這些步驟,可以構建出功能強大且高效的Web應用。

Laravel   Vue.js 開發(fā)單頁面應用(SPA)教程 Laravel Vue.js 開發(fā)單頁面應用(SPA)教程 May 15, 2025 pm 09:54 PM

使用Laravel和Vue.js可以構建單頁面應用(SPA)。 1)在Laravel中定義API路由和控制器,處理數(shù)據(jù)邏輯。 2)在Vue.js中創(chuàng)建組件化前端,實現(xiàn)用戶界面和數(shù)據(jù)交互。 3)配置CORS和使用axios進行數(shù)據(jù)交互。 4)利用VueRouter實現(xiàn)路由管理,提升用戶體驗。

wordpress怎麼做前後端分離 wordpress怎麼做前後端分離 Apr 20, 2025 am 08:39 AM

將 WordPress 前後端分離不建議直接改造原生代碼,更適合“改良式分離”。利用 REST API 獲取數(shù)據(jù),使用前端框架構建用戶界面。甄別哪些功能通過 API 調用,哪些保留在後端,哪些可取消。 Headless WordPress 模式可實現(xiàn)更徹底的分離,但開發(fā)成本和難度較高。注意安全和性能,優(yōu)化 API 響應速度和緩存,並優(yōu)化 WordPress 本身。逐步遷移功能,使用版本控制工具管理代碼。

如何將??低晹z像頭SDK的視頻流推送到前端Vue項目中進行實時播放? 如何將??低晹z像頭SDK的視頻流推送到前端Vue項目中進行實時播放? Apr 19, 2025 pm 07:42 PM

如何將海康威視攝像頭SDK的視頻流推送到前端Vue項目?在開發(fā)過程中,經(jīng)常會遇到需要將攝像頭捕獲的視頻流傳...

前端路由(Vue Router、React Router)的工作原理及配置方法? 前端路由(Vue Router、React Router)的工作原理及配置方法? May 20, 2025 pm 07:18 PM

前端路由系統(tǒng)的核心是將URL映射到組件,VueRouter和ReactRouter通過監(jiān)聽URL變化並加載相應組件實現(xiàn)無刷新頁面切換。配置方法包括:1.嵌套路由,允許在父組件中嵌套子組件;2.動態(tài)路由,根據(jù)URL參數(shù)加載不同組件;3.路由守衛(wèi),在路由切換前後執(zhí)行邏輯如權限檢查。

Vue的反應性轉換(實驗,然後被刪除)的意義是什麼? Vue的反應性轉換(實驗,然後被刪除)的意義是什麼? Jun 20, 2025 am 01:01 AM

ReactivitytransforminVue3aimedtosimplifyhandlingreactivedatabyautomaticallytrackingandmanagingreactivitywithoutrequiringmanualref()or.valueusage.Itsoughttoreduceboilerplateandimprovecodereadabilitybytreatingvariableslikeletandconstasautomaticallyreac

Vue.js 與 React 在組件化開發(fā)中的核心差異是什麼? Vue.js 與 React 在組件化開發(fā)中的核心差異是什麼? May 21, 2025 pm 08:39 PM

Vue.js和React在組件化開發(fā)中的核心差異在於:1)Vue.js使用模板語法和選項式API,而React使用JSX和函數(shù)式組件;2)Vue.js採用響應式系統(tǒng),React則使用不可變數(shù)據(jù)和虛擬DOM;3)Vue.js提供多個生命週期鉤子,React則更多使用useEffect鉤子。

使用 Composer 解決 Laravel 和 Vue.js 表單構建的挑戰(zhàn) 使用 Composer 解決 Laravel 和 Vue.js 表單構建的挑戰(zhàn) Apr 18, 2025 am 08:12 AM

在開發(fā)一個基於Laravel和Vue.js的項目時,我遇到了一個令人頭疼的問題:如何高效地創(chuàng)建和管理表單。特別是當需要在後端定義表單結構並在前端生成動態(tài)表單時,傳統(tǒng)的方法顯得繁瑣且容易出錯。我嘗試了多種方法,但效果都不盡如人意。最終,我發(fā)現(xiàn)了k-eggermont/lara-vue-builder這個庫,它不僅簡化了我的工作流程,還大大提升了開發(fā)效率。

See all articles