亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

使用 vwvh 單位來實現(xiàn)響應式布局:

.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() 函數是自定義的 SCSS 函數,用于將設計稿尺寸(1920×1080)轉換為視口單位。

SCSS函數:

@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 中配置,非常重要,它實現(xiàn)了 SCSS 預處理器的全局變量和函數注入功能:

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

作用解釋

1. 全局 SCSS 變量和函數注入

這段配置會在編譯每個 SCSS 文件時,自動在文件開頭插入 @import "@/styles/utils.scss";。這意味著:

  • 無需在每個 Vue 組件的 <style> 標簽中手動導入 utils.scss
  • 所有 SCSS 變量、混合宏(mixin)和函數都可以在所有組件中直接使用

2. 實際效果

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

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

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

注意事項

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

函數工作原理

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

使用示例

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

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

注意事項

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

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

2. Flex 彈性布局

整體布局使用 Flexbox 實現(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. 圖表自適應

ECharts 圖表通過監(jiān)聽窗口 resize 事件實現(xiàn)自適應:

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

4. 全屏切換功能

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

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

5. 縮放控制

通過監(jiān)聽滾輪事件實現(xiàn)頁面縮放:

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)進行列布局:

<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>

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

相關文章

  • vue實現(xiàn)隨機驗證碼功能的實例代碼

    vue實現(xiàn)隨機驗證碼功能的實例代碼

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

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

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

    基于form-data請求格式詳解

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

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

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

    vite+vue3+ts項目中提示無法找到模塊的問題及解決

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

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

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

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

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

    Vue引入vuetify框架你需要知道的幾點知識

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

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

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

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

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

最新評論