前端大屏自適應(yīng)兩種實(shí)現(xiàn)方法總結(jié)
方法一:縮放(scale)
1.app.vue組件代碼(用于app組件縮放會作用于整項(xiàng)目,也可以單獨(dú)用于大屏頁面)
<template> <ElConfigProvider :locale="locale"> <div class="inner" :style="{ 'width': `${styleTransform.width}px`, 'height': `${styleTransform.height}px`, 'transform': styleTransform.transform }"> <router-view></router-view> </div> </ElConfigProvider> </template> <script setup> import {reactive, onMounted, onBeforeUnmount} from 'vue'; import {ElConfigProvider} from 'element-plus'; import zhCn from 'element-plus/dist/locale/zh-cn.mjs'; import {useRouter} from 'vue-router'; // 定義 Element Plus 的語言環(huán)境 const locale = zhCn; const router = useRouter(); // 使用 reactive 創(chuàng)建響應(yīng)式對象,保存視口的寬度、高度和變換樣式 const styleTransform = reactive({ width: 1920, // 視口的初始寬度 height: 953, // 視口的初始高度 transform: 'scaleY(1) scaleX(1) translate(-50%, -50%)', // 初始變換樣式 }); // 生命周期鉤子,在組件掛載時設(shè)置初始縮放,并設(shè)置窗口調(diào)整大小時的處理函數(shù) onMounted(() => { setScale(); // 組件掛載時設(shè)置縮放 window.addEventListener('resize', setScale); // 監(jiān)聽窗口調(diào)整大小事件 }); // 在組件銷毀時移除窗口調(diào)整大小事件監(jiān)聽器 onBeforeUnmount(() => { window.removeEventListener('resize', setScale); // 移除窗口調(diào)整大小事件監(jiān)聽器 }); // 根據(jù)窗口大小計算縮放比例 const getScale = () => { const w = window.innerWidth / styleTransform.width; // 計算寬度縮放比例 const h = window.innerHeight / styleTransform.height; // 計算高度縮放比例 return {x: w, y: h}; }; // 根據(jù)計算的縮放比例更新變換樣式 const setScale = () => { const scale = getScale(); // 獲取當(dāng)前縮放比例 styleTransform.transform = `scaleY(${scale.y}) scaleX(${scale.x}) translate(-50%, -50%)`; }; </script> <style scoped> .inner { transform-origin: 0 0; /* 設(shè)置縮放的原點(diǎn)為元素的左上角 */ position: fixed; /* 固定定位,使元素相對于視口的位置不變 */ left: 50%; /* 將元素水平居中 */ top: 50%; /* 將元素垂直居中 */ transition: 0.3s; /* 為縮放樣式的變化添加平滑過渡效果 */ } </style>
2.缺點(diǎn):使用此方法后頁面不能有地圖(cesium)等js庫,形狀會受縮放影響,從而影響地圖的交互效果
方法二:vh,vw,百分比%,利用高度或者寬度比例算出px值
1.思路:在頁面中盡量使用vh,vw,%,等單位去設(shè)置容器寬高大小,遇到需要用px值去設(shè)置大小的就需要用(100vh/開發(fā)設(shè)備顯示屏的高度)或者(100vw/開發(fā)設(shè)備顯示屏的寬度)算出一個比例再用calc計算屬性去算出一個動態(tài)的px值
2.具體實(shí)現(xiàn)(當(dāng)前例子用高度比例來算)
1)算出比例值(scss的話把@符號改成$符號)
2.在需要用到px值的時候用計算出來的動態(tài)px值
3.缺點(diǎn):此方法只用高度來計算比例,當(dāng)瀏覽器的窗口只變化寬度時,就會出自適應(yīng)無效或者不充分的現(xiàn)象(只用寬度來計算時也有這樣的問題,但實(shí)際場景中一般不會出現(xiàn)只變化高度或者寬度,所以影響較?。?/p>
總結(jié)
到此這篇關(guān)于前端大屏自適應(yīng)兩種實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)前端大屏自適應(yīng)方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
javascript工廠模式和構(gòu)造函數(shù)模式創(chuàng)建對象方法解析
本文主要對javascript工廠模式和構(gòu)造函數(shù)模式創(chuàng)建對象方法進(jìn)行解析,具有一定的參考價值,下面跟著小編一起來看下吧2016-12-12使用 JavaScript如何獲取當(dāng)月的第一天和最后一天
這篇文章主要介紹了使用 JavaScript如何獲取當(dāng)月的第一天和最后一天,通過本文學(xué)習(xí)了如何使用 JavaScript 中的Date.getFullYear()和?Date.getMonth()方法獲得某個特定月份的第一天和最后一天,需要的朋友可以參考下2023-05-05JS實(shí)現(xiàn)獲取剪貼板內(nèi)容的方法
這篇文章主要介紹了JS實(shí)現(xiàn)獲取剪貼板內(nèi)容的方法,涉及javascript基于clipboardData操作剪貼板的相關(guān)技巧,需要的朋友可以參考下2016-06-06javascript 驗(yàn)證碼生成代碼 推薦學(xué)習(xí)
非常不錯的用javascript實(shí)現(xiàn)的驗(yàn)證碼實(shí)現(xiàn)代碼。2009-07-07