❝
rem自适应方案只是页面自适应的解决方案之一,本文主要讲解一下实现过程!
本文演示的是Vue3语法!
❞
rem自适应
随着现在互联网设备的日益更新,各大尺寸的屏幕参差不穷
导致我们的布局在某些小屏或者大屏上与UI的表现并不一致
所以,很多人寻求各种解决方案,我们现在的很多移动端框架都是支持了的,包括小程序,很多都采用了rpx的方式,这里不去深究它们的实现方案。
像手机淘宝网,就是在根标签设置font-size,然后使用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