最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

前端大屏自適應(yīng)兩種實(shí)現(xiàn)方法總結(jié)

 更新時(shí)間:2025年01月18日 09:56:40   作者:@玖伍貳柒  
這篇文章主要介紹了前端大屏自適應(yīng)兩種實(shí)現(xiàn)方法,縮放方法會(huì)影響地圖等庫的交互效果,而vh、vw、百分比等方法只適用于高度變化,寬度變化時(shí)可能需要結(jié)合計(jì)算屬性來處理,但總體上適配效果較好,需要的朋友可以參考下

方法一:縮放(scale)

1.app.vue組件代碼(用于app組件縮放會(huì)作用于整項(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)式對(duì)象,保存視口的寬度、高度和變換樣式
const styleTransform = reactive({
  width: 1920, // 視口的初始寬度
  height: 953, // 視口的初始高度
  transform: 'scaleY(1) scaleX(1) translate(-50%, -50%)', // 初始變換樣式
});

// 生命周期鉤子,在組件掛載時(shí)設(shè)置初始縮放,并設(shè)置窗口調(diào)整大小時(shí)的處理函數(shù)
onMounted(() => {
  setScale(); // 組件掛載時(shí)設(shè)置縮放
  window.addEventListener('resize', setScale); // 監(jiān)聽窗口調(diào)整大小事件
});
// 在組件銷毀時(shí)移除窗口調(diào)整大小事件監(jiān)聽器
onBeforeUnmount(() => {
  window.removeEventListener('resize', setScale); // 移除窗口調(diào)整大小事件監(jiān)聽器
});

// 根據(jù)窗口大小計(jì)算縮放比例
const getScale = () => {
  const w = window.innerWidth / styleTransform.width; // 計(jì)算寬度縮放比例
  const h = window.innerHeight / styleTransform.height; // 計(jì)算高度縮放比例
  return {x: w, y: h};
};

// 根據(jù)計(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; /* 固定定位,使元素相對(duì)于視口的位置不變 */
  left: 50%; /* 將元素水平居中 */
  top: 50%; /* 將元素垂直居中 */
  transition: 0.3s; /* 為縮放樣式的變化添加平滑過渡效果 */
}
</style>

2.缺點(diǎn):使用此方法后頁面不能有地圖(cesium)等js庫,形狀會(huì)受縮放影響,從而影響地圖的交互效果

方法二:vh,vw,百分比%,利用高度或者寬度比例算出px值

1.思路:在頁面中盡量使用vh,vw,%,等單位去設(shè)置容器寬高大小,遇到需要用px值去設(shè)置大小的就需要用(100vh/開發(fā)設(shè)備顯示屏的高度)或者(100vw/開發(fā)設(shè)備顯示屏的寬度)算出一個(gè)比例再用calc計(jì)算屬性去算出一個(gè)動(dòng)態(tài)的px值

2.具體實(shí)現(xiàn)(當(dāng)前例子用高度比例來算)

1)算出比例值(scss的話把@符號(hào)改成$符號(hào))

2.在需要用到px值的時(shí)候用計(jì)算出來的動(dòng)態(tài)px值

3.缺點(diǎn):此方法只用高度來計(jì)算比例,當(dāng)瀏覽器的窗口只變化寬度時(shí),就會(huì)出自適應(yīng)無效或者不充分的現(xiàn)象(只用寬度來計(jì)算時(shí)也有這樣的問題,但實(shí)際場(chǎng)景中一般不會(huì)出現(xiàn)只變化高度或者寬度,所以影響較小)

總結(jié)

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

相關(guān)文章

  • JavaScript設(shè)計(jì)模式手寫示例講解

    JavaScript設(shè)計(jì)模式手寫示例講解

    這篇文章主要介紹了JavaScript設(shè)計(jì)模式手寫示例,設(shè)計(jì)模式(Design pattern) 是解決軟件開發(fā)某些特定問題而提出的一些解決方案也可以理解成解決問題的一些思路。通過設(shè)計(jì)模式可以幫助我們?cè)鰪?qiáng)代碼的可重用性、可擴(kuò)充性、 可維護(hù)性、靈活性好
    2022-12-12
  • 微信小程序之判斷頁面滾動(dòng)方向的示例代碼

    微信小程序之判斷頁面滾動(dòng)方向的示例代碼

    這篇文章主要介紹了微信小程序之判斷頁面滾動(dòng)方向的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • JavaScript判斷頁面滾動(dòng)方向的三種方法

    JavaScript判斷頁面滾動(dòng)方向的三種方法

    這篇文章主要介紹了JavaScript判斷頁面滾動(dòng)方向的三種方法:使用變量記錄、使用更精確的 delta 值判斷和使用 requestAnimationFrame 優(yōu)化性能,并通過代碼講解的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • JavaScript Memoization 讓函數(shù)也有記憶功能

    JavaScript Memoization 讓函數(shù)也有記憶功能

    函數(shù)可以用對(duì)象去記住先前操作的結(jié)果,從而能避免無謂的運(yùn)算,這種優(yōu)化被稱為記憶(Memoization)。JavaScript 的對(duì)象和數(shù)組要實(shí)現(xiàn)這種優(yōu)化是非常方便的。
    2011-10-10
  • js函數(shù)與php函數(shù)的區(qū)別實(shí)例淺析

    js函數(shù)與php函數(shù)的區(qū)別實(shí)例淺析

    這篇文章主要介紹了js函數(shù)與php函數(shù)的區(qū)別,以實(shí)例形式較為簡單的分析了js函數(shù)與php函數(shù)語法及應(yīng)用上的不同點(diǎn),具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-01-01
  • JS清空上傳控件input(type="file")的值的代碼

    JS清空上傳控件input(type="file")的值的代碼

    最近做的一個(gè)小功能,需要清空<input type="file">的值,但上傳控件<input type="file">的值不能通過JavaScript來修改。
    2008-11-11
  • js實(shí)現(xiàn)的早期滑動(dòng)門菜單效果代碼

    js實(shí)現(xiàn)的早期滑動(dòng)門菜單效果代碼

    這篇文章主要介紹了js實(shí)現(xiàn)的早期滑動(dòng)門菜單效果代碼,涉及javascript數(shù)組遍歷及通過鼠標(biāo)事件動(dòng)態(tài)改變頁面元素屬性的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • javascript 作用于作用域鏈的詳解

    javascript 作用于作用域鏈的詳解

    這篇文章主要介紹了javascript 作用于作用域鏈的詳解的相關(guān)資料,希望通過本文能幫助到大家,理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-09-09
  • 動(dòng)態(tài)加載外部javascript文件的函數(shù)代碼分享

    動(dòng)態(tài)加載外部javascript文件的函數(shù)代碼分享

    動(dòng)態(tài)加載外部javascript文件的函數(shù)代碼分享,做個(gè)記錄備忘,方便查找。
    2011-07-07
  • js中new一個(gè)對(duì)象的過程

    js中new一個(gè)對(duì)象的過程

    本文主要介紹了js中new一個(gè)對(duì)象的過程。具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02

最新評(píng)論

惠来县| 宿松县| 祁门县| 古丈县| 石狮市| 江源县| 行唐县| 长汀县| 永靖县| 九龙城区| 龙陵县| 神农架林区| 平利县| 曲水县| 凤翔县| 南安市| 玛沁县| 昭觉县| 平泉县| 威海市| 滁州市| 澄迈县| 顺昌县| 白河县| 健康| 连云港市| 托克托县| 沅江市| 无极县| 延庆县| 沙湾县| 莱西市| 肇州县| 沭阳县| 二连浩特市| 澄城县| 奈曼旗| 即墨市| 襄汾县| 娱乐| 曲阜市|