首页 > 其他分享 > vue3项目rem自适应大小如何实现

vue3项目rem自适应大小如何实现

时间:2023-09-17 23:03:48浏览次数:42  
标签:const vue3 适应 width html fontSize rem onWindowResize

rem自适应方案只是页面自适应的解决方案之一,本文主要讲解一下实现过程!

本文演示的是Vue3语法!

rem自适应

随着现在互联网设备的日益更新,各大尺寸的屏幕参差不穷

导致我们的布局在某些小屏或者大屏上与UI的表现并不一致

所以,很多人寻求各种解决方案,我们现在的很多移动端框架都是支持了的,包括小程序,很多都采用了rpx的方式,这里不去深究它们的实现方案。

像手机淘宝网,就是在根标签设置font-size,然后使用rem去设置尺寸大小,它们可能有更精细化的优化处理,这里就只讲普通的实现方法。

 vue3项目rem自适应大小如何实现_自适应

淘宝示例图

实现过程

获取当前的设备宽度

const view_width = document.getElementsByTagName('html')[0].getBoundingClientRect().width;

计算rem的值

// 750 是设计稿的宽度 , 按设计稿调整
// 乘以100 是为了具体宽度值书写不会太大
const fontSize = fontSize = 100 * (view_width / 750) + 'px'

赋值到根标签

const _html = document.getElementsByTagName('html')[0];
_html.style.fontSize =  fontSize

监听宽度变化

// onWindowResize 即上述处理过程
window.addEventListener('resize', onWindowResize)

使用效果

/*
* 设计稿盒子宽100px
* 高100px
* 字体30px
*/
.box{
  width:1rem;
  height:1rem;
  font-size:0.3rem;
}

完整示例(Vue3)

<script setup>
import { onMounted, onUnmounted, ref } from "vue";

const flag = ref(false)

// 防止频繁触发
const onWindowResize = () => {
  if (!flag.value) {
    flag.value = true
    setTimeout(() => {
      initFontSize()
      flag.value = false
    }, 300)
  }
}

const initFontSize = () => {
  const view_width = document.getElementsByTagName('html')[0].getBoundingClientRect().width;
  const _html = document.getElementsByTagName('html')[0];

  _html.style.fontSize = 100 * (view_width / 1280) + 'px'
}

onMounted(() => {
  initFontSize()
  window.addEventListener('resize', onWindowResize)
})

onUnmounted(() => {
  window.removeEventListener('resize', onWindowResize)
})

</script>

如果感觉有帮助,麻烦3连(关注、赞、在看),谢谢! 后面会更新更多。

 vue3项目rem自适应大小如何实现_自适应_02

关注公众号了解更多

标签:const,vue3,适应,width,html,fontSize,rem,onWindowResize
From: https://blog.51cto.com/u_16123566/7504139

相关文章

  • vue3中验证手机号的正则表达式
    在Vue3中,你可以使用正则表达式来验证手机号。以下是一个基本的手机号验证正则表达式示例,可以用于检查中国大陆地区的手机号码:constphoneNumberRegex=/^1[3456789]\d{9}$/;//示例用法constphoneNumber="13812345678";if(phoneNumberRegex.test(phoneNumber)){cons......
  • 基于自适应运动补偿的双向运动估计算法matlab仿真
    1.算法运行效果图预览    2.算法运行软件版本matlab2022a  3.算法理论概述      基于自适应运动补偿的双向运动估计算法是一种用于视频或图像序列中运动估计的方法。它通过估计前向运动和反向运动场来提高运动估计的精度。该算法采用自适应运动补偿的策......
  • vue3探索——pinia高阶使用
    以下是一些Pinia的其他高阶功能:storeToRefs():响应式解构仓库,保证解构出来的数据是响应式的数据。状态持久化:Pinia并没有内置的状态持久化功能,但你可以使用第三方库或自定义插件来实现状态的持久化。例如,你可以使用 localStorage 或 sessionStorage 来将状态保存在客户端......
  • vue3-路由遇到的问题
    在Vue3中,使用VueRouter来管理应用程序的导航和路由。下面是VueRouter的一些常见使用方法:通过npm或yarn安装VueRouter:npminstallvue-router或yarnaddvue-router在主文件(通常是main.js)中导入VueRouter并创建一个实例:import{createApp}from'vue'importrouterfrom'......
  • 不再困惑:一文读懂Vue2与Vue3的主要差异
    Vue3相对于Vue2有很多改进和新特性。以下是一些主要的区别:性能更好:Vue3的性能比Vue2更好,因为它使用了更少的代码和更高效的算法。例如,Vue3使用Proxy代替了Object.defineProperty来监听数据变化,这使得Vue3的性能更高。组合式API:Vue3引入了组合式API,这是一种新的编写组件逻辑的方式。......
  • Vue3开发环境搭建全攻略:Vite的详细介绍
    Vite简介Vite这个单词是一个法语单词,意思就是轻快的意思。它和我们以前使用Vue-cli的作用基本相同,都是项目初始化构建工具,相当于Vue项目构建的第二代产品,当然它也包含了项目的编译功能。需要注意一下Vite的生产环境下打包是通过Rollup来完成的。Vite特性介绍Vite主打特点就是轻快冷......
  • 构建工具Premake
    构建工具Premake经常用VisualStudio写一些小程序来验证OpenCASCADE的功能,每次创建项目后都配置头文件,库路径,程序运行时还要配置Debug的环境变量,比较麻烦。也尝试过CMake和QMake,都不太理想。CMake学习曲线陡峭一点,还会生成一堆文件。QMake简单些,但是有的选项不支持。直到看到一个......
  • vue3.3.x setup 新实验性特性 defineModel 定义多个属性
    由于有些业务组件需要定义多个响应式props,类似这种(比较懒,没上ts),在vue3.3.x以前,如果不用三方库,代码会变得很繁琐<scriptsetup> constprops=defineProps({ modelValue:{ type:Object, default:()=>({}) }, fields:{ type:Object, default:()=>(......
  • vue3videplayer播放m3u8视频流注意事项
    前言使用vue3开发项目时,碰上需要做一个视频流列表的页面,最开始是想获取所有列表数据后创建对应的video标签,这样默认获取第一帧作为封面,同时暂停视频减轻不断请求的压力。但开发后发现视频就算暂停后也会继续请求视频流,多个视频反而会导致页面卡顿。方案手动获取视频的第一......
  • 解决vue3中抽离出来的js如何调用页面的方法
    有时我们会用render渲染表格的columns,里面的按钮如何去调用.vue文件的方法?思路;在.vue文件中我们通过参数的方式传给.js文件,然后用变量接收,点击时执行(注意:.vue文件中setup执行比较早,按钮是点击事件,不会主动执行函数。为防止函数未声名就当做参数传递,必须在最后执行getFn函数,和d......