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

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自适应大小如何实现

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/158731.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!