国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

前端大屏可視化適配方案(通用模板,快速上手)

這篇具有很好參考價(jià)值的文章主要介紹了前端大屏可視化適配方案(通用模板,快速上手)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

在日常前端開(kāi)發(fā)中,大屏項(xiàng)目是每個(gè)前端開(kāi)發(fā)者必備技能,但是目前設(shè)備尺寸大小和分辨率都不相同,所以大屏適配成了一個(gè)頭疼的問(wèn)題??吹骄W(wǎng)上的實(shí)現(xiàn)方案有rem,flexible,zoom,百分比,總感覺(jué)沒(méi)那么完美,于是自己研究了一下也借鑒了網(wǎng)上大神的方法,實(shí)現(xiàn)了一下這三種大屏適配方案,在實(shí)際開(kāi)發(fā)中可以借鑒使用

第一種:使用css屬性scale縮放來(lái)適配(簡(jiǎn)單,易上手)

gitee地址:大屏可視化模板: 大屏可視化模板。利用scale來(lái)分辨率適配

?我把關(guān)鍵代碼封裝成了組件,使用的時(shí)候直接套在大屏頁(yè)面就可以實(shí)現(xiàn)

<template>
   <div class="scale-box">
    <slot></slot>
  </div>
</template>

<script setup>
import { ref, onMounted, defineProps } from 'vue'
const width = ref(null), //設(shè)計(jì)寬度
  height = ref(null), //設(shè)計(jì)高度
  scale = ref(null)

const props = defineProps({
  width: {
    type: String,
    default: '1920px',
  },
  height: {
    type: String,
    default: '1080px',
  },
})

const init = () => {
  setScale()
  window.addEventListener('resize', setScale)
}

const setScale = () => {
  let ww = window.innerWidth / props.width
  let wh = window.innerHeight / props.height
  scale.value = ww < wh ? ww : wh
}

init()
</script>

<style scoped>
.scale-box {
  width: v-bind('props.width');
  height: v-bind('props.height');
  transform: scale(v-bind(scale)) translate(-50%, -50%);
  transform-origin: 0 0;
  position: absolute;
  left: 50%;
  top: 50%;
  transition: 0.3s;
  
}
</style>

第二種:固定縮放比

gitee地址:大屏可視化模板固定尺寸: 大屏可視化模板固定尺寸

關(guān)鍵代碼:

export const fitScreen = () => {
  const body = document.documentElement
  const bodyWidth = body.clientWidth
  const bodyHeight = body.clientHeight
  const realRatio = bodyWidth / bodyHeight
  const designRatio = 16 / 9
  const scaleRate = realRatio > designRatio ? bodyHeight / 1080 : bodyWidth / 1920

  const app:any= document.querySelector('.bigScreen')

  app &&
    (app.style.transformOrigin = 'left top') &&
    (app.style.transform = `scale(${scaleRate}) translateX(-50%)`) &&
    (app.style.width = `${bodyWidth / scaleRate}px`)
}

第三種:縮放+鋪滿全屏+百分比

?gitee地址:大屏可視化自動(dòng)拉伸模板: 大屏可視化自動(dòng)拉升模板

?關(guān)鍵代碼:

<script setup>
import { ref, reactive, onMounted, onUnmounted } from "vue";
// * 默認(rèn)縮放值
const scale = reactive({
  width: "1",
  height: "1",
});

// * 設(shè)計(jì)稿尺寸(px)
const baseWidth = 1920;
const baseHeight = 1080;

// * 需保持的比例
const baseProportion = parseFloat((baseWidth / baseHeight).toFixed(5));

let drawTiming = ref(null);
const appRef = ref();
const calcRate = () => {
  if (!appRef.value) return;
  // 當(dāng)前寬高比
  const browserRoom = getZoom();
  // 當(dāng)前寬高比
  /**
   * 1. 先將寬高乘上瀏覽器縮放倍數(shù)x
   * 2. 再將整個(gè)頁(yè)面用scale縮放 1/x 倍
   * 在視覺(jué)上,就感覺(jué)頁(yè)面沒(méi)有縮放
   */
  // 寬高
  const w = window.innerWidth * browserRoom;
  const h = window.innerHeight * browserRoom;
  // scale縮放比例
  const scl = parseFloat((1 / browserRoom).toFixed(5));

  // 頁(yè)面重繪處理
  appRef.value.style.width = `${w}px`;
  appRef.value.style.height = `${h}px`;
  appRef.value.style.transform = `scale(${scl}, ${scl}) translate(-50%, -50%)`;
};
const getZoom = () => {
  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 parseFloat(ratio / 100).toFixed(2);
};
// 窗口大小變化
const resize = () => {
  clearTimeout(drawTiming.value);
  drawTiming.value = setTimeout(() => {
    calcRate();
  }, 200);
};

onMounted(() => {
  calcRate();
  window.addEventListener("resize", resize);
});
onUnmounted(() => {
  window.removeEventListener("resize", resize);
});
</script>

以上就是我總結(jié)的大屏可視化屏幕適配方案,有好的想法可以和我交流,一起進(jìn)步?。。?span toymoban-style="hidden">文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-521149.html

到了這里,關(guān)于前端大屏可視化適配方案(通用模板,快速上手)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 關(guān)于可視化大屏適配

    vw、vh方案: 原理:按照設(shè)計(jì)稿的尺寸,將px按比例計(jì)算轉(zhuǎn)為vw和vh; 優(yōu)點(diǎn):不會(huì)存在失真情況、可以動(dòng)態(tài)計(jì)算圖表的寬高,字體等,靈活性較高,當(dāng)屏幕比例跟 ui 稿不一致時(shí),不會(huì)出現(xiàn)兩邊留白情況; 缺點(diǎn):類(lèi)似第三方echart圖表都需要單獨(dú)做字體、間距、位移的適配,比較

    2024年04月16日
    瀏覽(23)
  • Vue3 +Echarts5 可視化大屏——屏幕適配

    Vue3 +Echarts5 可視化大屏——屏幕適配

    項(xiàng)目基于Vue3 + Echarts5 開(kāi)發(fā),屏幕適配是使用 scale 方案 Echarts組件按需引入,減少打包體積 地圖組件封裝(全國(guó)省份地圖按需加載) 效果圖: 大屏適配常用的方案有 rem + vw/vh 和 scale 。 rem + vw/vh 方案 結(jié)合使用rem(相對(duì)于根元素字體大小的單位)和vw/vh(視窗寬度/高度的單位

    2024年02月15日
    瀏覽(25)
  • 數(shù)據(jù)可視化大屏模板 | 保姆級(jí)使用教程

    數(shù)據(jù)可視化大屏模板 | 保姆級(jí)使用教程

    近來(lái)很多朋友私信咨詢(xún)?cè)趺聪螺d使用數(shù)據(jù)可視化大屏模板,在這里就給大家做一個(gè)相對(duì)簡(jiǎn)單的教程總結(jié)。有需要的朋友記得先收藏保存,以便不時(shí)之需。 數(shù)據(jù)可視化大屏制作軟件:奧威BI系統(tǒng) 數(shù)據(jù)可視化報(bào)表模板板塊:模板秀 主要操作:點(diǎn)擊、拖拉拽 適用人群以及場(chǎng)景:所

    2024年02月07日
    瀏覽(19)
  • 辦公自動(dòng)應(yīng)用,HR大屏可視化模板

    辦公自動(dòng)應(yīng)用,HR大屏可視化模板

    大家可以進(jìn)行資料下載。 完整的案例。 AIGC ChatGPT 職場(chǎng)案例 AI 繪畫(huà) 與 短視頻制作 PowerBI 商業(yè)智能 68集 數(shù)據(jù)庫(kù)Mysql 8.0 ?54集 數(shù)據(jù)庫(kù)Oracle 21C 142集 Office 2021實(shí)戰(zhàn)應(yīng)用 Python 數(shù)據(jù)分析實(shí)戰(zhàn), ETL Informatica 數(shù)據(jù)倉(cāng)庫(kù)案例實(shí)戰(zhàn) Excel 2021實(shí)操 100集, Excel 2021函數(shù)大全 80集 Excel 2021高級(jí)圖表

    2024年01月25日
    瀏覽(27)
  • 可視化大屏模板|不玩虛的,套用立得報(bào)表

    可視化大屏模板|不玩虛的,套用立得報(bào)表

    寫(xiě)在前面:這是報(bào)表,是可視化大屏報(bào)表,是可以直接套用來(lái)分析我們自己數(shù)據(jù)源的可視化大屏報(bào)表模板。不是單純的圖片! 在一些社交平臺(tái)上經(jīng)常看到有人誤將可視化大屏圖片當(dāng)做報(bào)表求分享??梢岳斫獯蠹叶枷胍獙?bào)表做得好看,但下載的圖片只是圖片,并不能用來(lái)分析

    2023年04月25日
    瀏覽(16)
  • 分享10個(gè)精美可視化模板,解決95%的大屏需求!

    分享10個(gè)精美可視化模板,解決95%的大屏需求!

    前段時(shí)間和朋友一起喝茶,我吐槽著excel表格做報(bào)表的繁瑣,他驚訝的問(wèn)我竟然不知道大屏模板這種東西,說(shuō)是直接套用數(shù)據(jù)就可以,我震驚的同時(shí)吃下了這個(gè)安利。 回來(lái)之后,我好好研究了一番這個(gè)叫可視化大屏的“新鮮玩意兒”,只能說(shuō)真香!excel、ppt什么的,這輩子不

    2024年02月02日
    瀏覽(33)
  • 20個(gè)大數(shù)據(jù)可視化大屏模板(評(píng)論區(qū)附源碼)

    20個(gè)大數(shù)據(jù)可視化大屏模板(評(píng)論區(qū)附源碼)

    為什么大屏數(shù)據(jù)展示模板越來(lái)越受歡迎? 大屏在企業(yè)中越來(lái)越受歡迎,主要有兩個(gè)方面的原因 第一:全方位的數(shù)據(jù)展示。 目前企業(yè)都有面臨“信息孤島”問(wèn)題,各個(gè)系統(tǒng)平臺(tái)之間的數(shù)據(jù)無(wú)法實(shí)現(xiàn)融合共享,難以實(shí)現(xiàn)一體化的數(shù)據(jù)分析。 相比于傳統(tǒng)圖表與數(shù)據(jù)儀表盤(pán),可視化

    2024年02月12日
    瀏覽(21)
  • 前端可視化數(shù)據(jù)大屏(1)

    前端可視化數(shù)據(jù)大屏(1)

    效果圖 技術(shù)架構(gòu):datav,vue2,echarts 我們一步一步的來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的可視化數(shù)據(jù)大屏,開(kāi)始吧?。?? ? ? ? 太簡(jiǎn)單了,百度上可以搜索,我這里就不多說(shuō)了,把router裝好就行 ? ? ? ? 2.1在控制臺(tái)上輸入命令下載datav ? ? ? ? 2.2 將datav的組件注冊(cè)為全局組件 ? ? ? ? ? ? ?

    2024年02月06日
    瀏覽(29)
  • 大數(shù)據(jù)前端可視化大屏--前端開(kāi)發(fā)之路

    大數(shù)據(jù)前端可視化大屏--前端開(kāi)發(fā)之路

    從2016年開(kāi)始接觸可視化方向,一直想寫(xiě)一篇文章回顧一下這幾年踩過(guò)的坑,接下來(lái)的這段時(shí)間里我會(huì)不定時(shí)的給大家分享一些可視化方面的經(jīng)驗(yàn)和感悟,發(fā)出來(lái)跟大家一塊分享一下、一起討論討論、共同學(xué)習(xí)進(jìn)步。 這篇文章作為開(kāi)端,之后會(huì)不定時(shí)的發(fā)出一系列的采坑記錄

    2023年04月09日
    瀏覽(31)
  • vue大屏可視化自適應(yīng)完美方案

    在做大屏可視化項(xiàng)目的時(shí)候,一般設(shè)計(jì)稿會(huì)設(shè)計(jì)成1920*1080,但是頁(yè)面寫(xiě)死1920*1080在2k、4k等分辨率的屏幕下是不適配的。如果頁(yè)面能夠根據(jù)屏幕比例進(jìn)行等比縮放那就好了。 什么?不知道屏幕比例?其實(shí)我們常見(jiàn)的1920*1080(1080P)、2k、4k...都是16:9的比例,在做項(xiàng)目之前我們

    2024年02月12日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包