vue中html的fontsize变了过后只修改一个页面的rem
时间: 2024-02-01 09:16:39 浏览: 132
在 Vue 中,可以使用动态绑定来实现不同页面的 `rem` 值不同。具体实现步骤如下:
1. 在 `index.html` 中设置根元素的 `font-size` 值:
```html
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My App</title>
<style>
html {
font-size: 62.5%; /* 设置为 10px,方便计算 */
}
/* 其他样式 */
</style>
</head>
<body>
<div id="app"></div>
<script src="/dist/js/app.js"></script>
</body>
</html>
```
2. 在 `main.js` 中动态设置根元素的 `font-size` 值:
```javascript
import Vue from 'vue'
import App from './App.vue'
Vue.config.productionTip = false;
new Vue({
render: h => h(App)
}).$mount('#app');
// 设置根元素的 font-size 值
const setRootFontSize = () => {
const html = document.getElementsByTagName('html')[0];
const width = html.getBoundingClientRect().width;
const fontSize = width / 1920 * 100; // 1920 是设计稿的宽度,可以根据实际情况修改
html.style.fontSize = `${fontSize}px`;
};
setRootFontSize(); // 页面初始化时设置一次
window.addEventListener('resize', setRootFontSize); // 监听窗口大小变化,重新设置 font-size 值
```
3. 在需要修改 `rem` 值的页面中,可以使用 `scoped` 样式来覆盖根元素的 `font-size` 值,实现动态修改 `rem` 值。例如:
```vue
<template>
<div class="page">
<h1>这是一个示例页面</h1>
<p class="text">这是一段文字</p>
</div>
</template>
<style scoped>
.page {
/* 设置根元素的 font-size 值为 50px */
font-size: 50px;
}
.text {
/* 使用动态计算的 rem 值,实现字体大小的适配 */
font-size: 1.4rem;
}
</style>
```
通过上述方法,就可以实现在 Vue 中动态修改不同页面的 `rem` 值,从而实现字体大小的适配。
阅读全文