大屏适配方案

方案一:rem + font-size

设计稿的宽1920平均分为24等份,每一份80px
PC端平均分为24份,移动端分为10等份
HTML字体大小设置为80px,即1rem=80px,24rem=1920px
安装cssrem插件
设置:勾选rem hover ,将root font size修改为80

function setRemUnit(){
var rem=docEl.clientWidth/24
docEl.style.fontSize=rem ="px"
}
body{
width:24rem
}

方案二:vw

屏幕的宽默认为100vw=1920 1vw=19.2px
安装cssrem插件
设置:勾选vw ,将vw design修改为1920

body{
width:100vw
}

方案三:scale

动态计算网页宽高比

//1.设计稿的尺寸
let targetX=1920
let targetY=1080
let targetRatio=16/9
//2.拿到当前设备的宽度
let currentX=document.documentElement.clientWidth||document.body.clientWidth
let currentY=document.documentElement.clientHeight||document.body.clientHeight
//3.计算缩放比例
let scaleRatio =currentX/targetX//参照宽度缩放(默认)
let currentRatio=currentX/currentY
//超宽屏
let (currentRatio>targetRatio){
scaleRatio=currentY/targetY//根据高度缩放
document.body.style=`width:${targetX}px;height:${targetY}px;transform:scale(${scaleRatio}) translateX(-50%); left:50%`
}else{
document.body.style=`width:${targetX}px;height:${targetY}px;transform:scale(${scaleRatio})`
}

应用

//hooks/useScalePage.js

import { onMounted, onUnmounted } from 'vue';
import _ from 'lodash' 

/**
  大屏适配的 hooks
 */
export default function useScalePage(option) {

  const resizeFunc = _.throttle(function() {//节流
    triggerScale() // 动态缩放网页
  }, 100)

  onMounted(()=>{
    triggerScale()  // 动态缩放网页
    window.addEventListener('resize', resizeFunc)
  })

  onUnmounted(()=>{
    window.removeEventListener('resize', resizeFunc) // 释放
  })

  // 大屏的适配
  function triggerScale() {
    // 1.设计稿的尺寸
    let targetX = option.targetX ||  1920
    let targetY = option.targetY || 1080
    let targetRatio = option.targetRatio ||  16 / 9 // 宽高比率

    // 2.拿到当前设备(浏览器)的宽度
    let currentX = document.documentElement.clientWidth || document.body.clientWidth
    let currentY = document.documentElement.clientHeight || document.body.clientHeight

    // 3.计算缩放比例
    let scaleRatio = currentX / targetX; // 参照宽度进行缩放 ( 默认情况 )
    let currentRatio = currentX / currentY // 宽高比率

    // 超宽屏
    if(currentRatio > targetRatio) {
      // 4.开始缩放网页
      scaleRatio = currentY / targetY // 参照高度进行缩放
      document.body.style = `width:${targetX}px; height:${targetY}px;transform: scale(${scaleRatio}) translateX(-50%); left: 50%`
    } else {
      // 4.开始缩放网页
      document.body.style = `width:${targetX}px; height:${targetY}px; transform: scale(${scaleRatio})`
    }
  }
}
//AApp.vue
<template>
<RouterView/>'
</template>
<script setup>
import {RouterView} from 'vue-router'
import useScalePage from '@/hooks/useScalePage'
let option={
targetX:1920,
targetY:1080,
targetRatio:16/9
}
useScalePage(option)
</script>
大屏可视化适配flexible.js是一种通过使用CSS的transform属性来实现大屏适配的方法。其主要思路是通过计算固定的宽高比例,将大屏幕容器设置为一个参考元素,然后监听浏览器窗口的resize事件,在每次窗口大小改变后重新计算宽度和高度的比例。根据窗口的长宽比与固定的长宽比进行比较,如果窗口的长宽比更长,则根据窗口的高度值重新计算缩放比例,并使用transform的scale属性对大屏幕容器进行缩放操作,同时使用translate属性将容器移动到窗口的中央。同理,如果窗口的长宽比更短,则根据窗口的长度值计算缩放比例,并对大屏幕容器进行相应的缩放操作。通过这种方式,可以实现大屏幕的适配。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [Vue项目大屏可视化适配 transform+解决高德地图经纬度偏移](https://blog.csdn.net/qq_45642765/article/details/125988515)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Vue 可视化大屏适配方案](https://blog.csdn.net/Windyluna/article/details/122296831)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值