如何使用rem,为什么rem不生效?

本文介绍了一种使手机端字体大小能随屏幕变化而自动调整的方法。通过一段简单的JavaScript代码,可以实现在不同分辨率下字体大小的自适应,确保良好的阅读体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

rem是现在手机端用的比较普遍的单位,我最近也在用这个做一个手机站,在使用过程发现单纯的css并不能实现字体随屏幕放大缩小的效果,后来各种索搜,找到了解决方法
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
</head>
<script>
(function(){
    function w() {
    var r = document.documentElement;
    var a = r.getBoundingClientRect().width;//获取当前设备的宽度
        if (a > 720 ){//720不固定,根据设计稿的宽度定
            a = 720;
        } 
        rem = a / 7.2;
        r.style.fontSize = rem + "px"
    }
    w();
    window.addEventListener("resize", function() {//监听横竖屏切换
        w()
    }, false);
})();
</script>
<style>
    p{font-size: 0.3rem}
</style>
<body>
<p>测试。。。。。测试。。。。。测试。。。。。测试。。。。。测试。。。。。</p>
</body>
</html>

我们只需加上上面代码中的那段js就可以了,然后我们写css只需要把对应的值除以100,单位改成rem即可

注意:1、这段js最好放到页面的body上面,让他第一时间加载,防止网速慢而导致屏幕闪烁问题

2、当写一像素边框时,最好还是使用1px来写,因为在部分手机上0.01rem不显示

### 解决 PostCSS-pxtorem 在 Nuxt 项目中不生效的问题 在 Nuxt 项目中,PostCSS 插件 `postcss-pxtorem` 可能会因为配置不当或加载顺序问题而不生效。以下是一些可能的解决方案和需要注意的关键点[^1]。 #### 配置检查 确保在项目的 `nuxt.config.js` 文件中正确配置了 PostCSS 插件。例如: ```javascript export default { build: { postcss: { plugins: { 'postcss-pxtorem': { rootValue: 16, // 根字体大小 propList: ['*'], // 需要转换的属性列表 unitPrecision: 5, // 转换后的精度 selectorBlackList: [], // 忽略的选择器 replace: true, mediaQuery: false, minPixelValue: 0 } } } } } ``` 上述配置将确保所有以 `px` 为单位的样式都会被转换为 `rem` 单位[^2]。 #### 安装依赖 确认已经安装了 `postcss-pxtorem` 和相关依赖项。如果尚未安装,可以使用以下命令进行安装: ```bash npm install postcss-pxtorem --save-dev ``` #### 检查 lib-flexible 的引入 如果项目中使用了 `lib-flexible` 来动态调整根字体大小,确保其在项目初始化时正确加载。通常需要在 `main.js` 或 `nuxt.config.js` 中引入: ```javascript import 'lib-flexible/flexible' ``` 这一步非常重要,因为 `postcss-pxtorem` 转换后的 `rem` 值依赖于根字体大小的动态调整[^4]。 #### 调试与验证 如果仍然无效,可以通过以下方法进行调试: 1. 确认是否在生成的 CSS 文件中看到了 `rem` 单位。 2. 使用浏览器开发者工具检查最终渲染的样式是否正确应用了 `rem`。 3. 确保没有其他 PostCSS 插件覆盖了 `postcss-pxtorem` 的行为。 #### 其他注意事项 如果项目中使用了 Vue 单文件组件(`.vue` 文件),确保它们能够正确加载并处理样式。例如,可以参考 `vuegister` 或 `vue-node` 工具来优化单文件组件的加载过程[^3]。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值