欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

VUE3大屏自適應(yīng)布局的幾種實(shí)現(xiàn)方式

 更新時(shí)間:2025年10月20日 10:49:48   作者:FAIRY_STARS  
本文主要介紹了基于SCSS自定義vw和vh函數(shù)實(shí)現(xiàn)響應(yīng)式布局的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1. 視口單位布局 (Viewport Units)

使用 vwvh 單位來(lái)實(shí)現(xiàn)響應(yīng)式布局:

.full-screen {
  width: vw(1920);
  height: vh(1080);
  padding: vh(5) vw(5) vh(5) vw(5);
}

.header-title {
  font-size: vw(40);
  line-height: vh(80);
}

這里的 vw()vh() 函數(shù)是自定義的 SCSS 函數(shù),用于將設(shè)計(jì)稿尺寸(1920×1080)轉(zhuǎn)換為視口單位。

SCSS函數(shù):

@use "sass:math";

$designWidth: 1920;
$designHeight: 1080;

@function vw($px){
    @return math.div($px, $designWidth) * 100vw;
}

@function vh($px){
    @return math.div($px, $designHeight) * 100vh;
}

需要在 vite.config.js 中配置,非常重要,它實(shí)現(xiàn)了 SCSS 預(yù)處理器的全局變量和函數(shù)注入功能:

css: {
  preprocessorOptions: {
    scss: {
      additionalData: '@import "@/styles/utils.scss";'
    },
  },
}

作用解釋

1. 全局 SCSS 變量和函數(shù)注入

這段配置會(huì)在編譯每個(gè) SCSS 文件時(shí),自動(dòng)在文件開(kāi)頭插入 @import "@/styles/utils.scss";。這意味著:

  • 無(wú)需在每個(gè) Vue 組件的 <style> 標(biāo)簽中手動(dòng)導(dǎo)入 utils.scss
  • 所有 SCSS 變量、混合宏(mixin)和函數(shù)都可以在所有組件中直接使用

2. 實(shí)際效果

由于這個(gè)配置,可以在任何組件的樣式中直接使用 vw()vh() 函數(shù):

<template>
  <div class="container">...</div>
</template>

<style scoped lang="scss">
.container {
  width: vw(300); // 直接使用,無(wú)需導(dǎo)入
  height: vh(200); // 直接使用,無(wú)需導(dǎo)入
  padding: vh(10) vw(20);
}
</style>

注意事項(xiàng)

  1. 避免副作用:確保 utils.scss 中不包含實(shí)際 CSS 輸出,只包含變量、混合宏和函數(shù)
  2. 性能影響:雖然輕微,但每個(gè)樣式文件都會(huì)額外編譯注入的內(nèi)容
  3. 命名沖突:全局注入可能導(dǎo)致命名沖突,需注意命名規(guī)范

函數(shù)工作原理

  1. 設(shè)計(jì)基準(zhǔn):以 1920×1080 分辨率作為設(shè)計(jì)基準(zhǔn)
  2. 單位轉(zhuǎn)換
    • vw($px):將像素值轉(zhuǎn)換為相對(duì)于視口寬度的百分比
    • vh($px):將像素值轉(zhuǎn)換為相對(duì)于視口高度的百分比
  3. 計(jì)算方式
    • math.div($px, $designWidth) * 100vw:計(jì)算元素寬度占設(shè)計(jì)稿寬度的比例,然后轉(zhuǎn)換為視口寬度單位
    • math.div($px, $designHeight) * 100vh:計(jì)算元素高度占設(shè)計(jì)稿高度的比例,然后轉(zhuǎn)換為視口高度單位

使用示例

.header {
  width: vw(1900); // 轉(zhuǎn)換為約 98.96vw (1900/1920*100)
  height: vh(100); // 轉(zhuǎn)換為約 9.26vh (100/1080*100)
  font-size: vh(40); // 轉(zhuǎn)換為約 3.7vh
}

.content-box {
  margin: vh(5) 0;
  padding: vh(5) vw(5) vh(10) vw(5);
}

注意事項(xiàng)

  1. 極端比例屏幕(如超寬屏)可能需要額外媒體查詢調(diào)整
  2. 字體大小使用視口單位可能導(dǎo)致可讀性問(wèn)題,需要謹(jǐn)慎使用
  3. 最小字體大小可能需要設(shè)置限制,防止在小屏幕上過(guò)小

這種方法是實(shí)現(xiàn)大屏自適應(yīng)布局的高效方式,特別適合數(shù)據(jù)可視化類的大屏項(xiàng)目。

2. Flex 彈性布局

整體布局使用 Flexbox 實(shí)現(xiàn):

<div class="full-screen">
  <div class="header">...</div>
  <div class="center">...</div>
  <div class="footer">...</div>
</div>
.full-screen {
  display: flex;
  flex-direction: column;
}

.center {
  display: flex;
  // flex-direction: column;
}

3. 圖表自適應(yīng)

ECharts 圖表通過(guò)監(jiān)聽(tīng)窗口 resize 事件實(shí)現(xiàn)自適應(yīng):

window.addEventListener('resize', () => {
  myChart.resize();
});

4. 全屏切換功能

使用 screenfull 庫(kù)實(shí)現(xiàn)全屏切換:

let fullScreen = () => {
  if (screenfull.isEnabled) {
    screenfull.toggle();
  }
};

5. 縮放控制

通過(guò)監(jiān)聽(tīng)滾輪事件實(shí)現(xiàn)頁(yè)面縮放:

window.addEventListener('wheel', function(event) {
  if (event.ctrlKey || event.metaKey) {
    if (event.deltaY > 0) {
      document.body.style.zoom = (parseFloat(getComputedStyle(document.body).zoom) || 1) * 1.1;
    }
    if (event.deltaY < 0) {
      document.body.style.zoom = (parseFloat(getComputedStyle(document.body).zoom) || 1) / 1.1;
    }
  }
});

6. 柵格系統(tǒng)

使用 Element Plus 的柵格系統(tǒng)進(jìn)行列布局:

<el-row class="header" :gutter="20">
  <el-col :span="7" class="header-time">...</el-col>
  <el-col :span="10" class="header-title">...</el-col>
  <el-col :span="6">...</el-col>
</el-row>

到此這篇關(guān)于VUE3大屏自適應(yīng)布局的幾種實(shí)現(xiàn)方式的文章就介紹到這了,更多相關(guān)VUE3大屏自適應(yīng)布局內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue實(shí)現(xiàn)隨機(jī)驗(yàn)證碼功能的實(shí)例代碼

    vue實(shí)現(xiàn)隨機(jī)驗(yàn)證碼功能的實(shí)例代碼

    這篇文章主要介紹了vue實(shí)現(xiàn)隨機(jī)驗(yàn)證碼功能的實(shí)例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • 深入探討Vue計(jì)算屬性與監(jiān)聽(tīng)器的區(qū)別和用途

    深入探討Vue計(jì)算屬性與監(jiān)聽(tīng)器的區(qū)別和用途

    在Vue的開(kāi)發(fā)中,計(jì)算屬性(Computed Properties)和監(jiān)聽(tīng)器(Watchers)是兩種非常重要的概念,它們都用于響應(yīng)式地處理數(shù)據(jù)變化,本文將帶你深入了解計(jì)算屬性和監(jiān)聽(tīng)器的區(qū)別,以及在何時(shí)使用它們,感興趣的朋友可以參考下
    2023-09-09
  • 基于form-data請(qǐng)求格式詳解

    基于form-data請(qǐng)求格式詳解

    今天小編就為大家分享一篇基于form-data請(qǐng)求格式詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-10-10
  • Vue自定義指令封裝節(jié)流函數(shù)的方法示例

    Vue自定義指令封裝節(jié)流函數(shù)的方法示例

    本篇文章主要介紹了Vue自定義指令封裝節(jié)流函數(shù)的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • vite+vue3+ts項(xiàng)目中提示無(wú)法找到模塊的問(wèn)題及解決

    vite+vue3+ts項(xiàng)目中提示無(wú)法找到模塊的問(wèn)題及解決

    這篇文章主要介紹了vite+vue3+ts項(xiàng)目中提示無(wú)法找到模塊的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Vue3利用自定義ref實(shí)現(xiàn)防抖功能

    Vue3利用自定義ref實(shí)現(xiàn)防抖功能

    在Vue3中,ref提供了訪問(wèn)組件內(nèi)DOM元素和子組件實(shí)例的方法,防抖是一種限制函數(shù)調(diào)用頻率的方法,即在一定時(shí)間內(nèi)多次觸發(fā)同一個(gè)函數(shù),只執(zhí)行最后一次觸發(fā)的函數(shù),本文將給大家介紹了Vue3如何利用自定義ref實(shí)現(xiàn)防抖,需要的朋友可以參考下
    2024-05-05
  • vue頁(yè)面更新patch的實(shí)現(xiàn)示例

    vue頁(yè)面更新patch的實(shí)現(xiàn)示例

    這篇文章主要介紹了vue頁(yè)面更新patch的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Vue引入vuetify框架你需要知道的幾點(diǎn)知識(shí)

    Vue引入vuetify框架你需要知道的幾點(diǎn)知識(shí)

    這篇文章主要介紹了Vue引入vuetify框架你需要知道的幾點(diǎn)知識(shí),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Vue使用pdf-lib實(shí)現(xiàn)為文件流添加水印并預(yù)覽

    Vue使用pdf-lib實(shí)現(xiàn)為文件流添加水印并預(yù)覽

    這篇文章主要為大家詳細(xì)介紹了Vue如何使用pdf-lib實(shí)現(xiàn)為文件流添加水印并預(yù)覽的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-03-03
  • Vue中的同步和異步使用詳解

    Vue中的同步和異步使用詳解

    這篇文章主要介紹了Vue中的同步和異步使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-08-08

最新評(píng)論