html中rem不起作用了呢,关于rem的宽度和高度不生效的问题分析

现在很多前端都用rem来单位元素和字体大小

一般的设置是

html{

font-size:62.5%;

}

换算来源 1rem = 16px

10/16 = 0.625

这样10px 就等于了1rem

1.4rem = 14px (这样很好换算)

1.6rem = 16px (这样很好换算)

在chrome浏览器中有一个问题是字体小于12px统一都按12px

but 我们在计算元素的宽高是会出现问题

例如一个div的宽原先是100px 高是100px

按照我们原先的思想 width:10rem & height: 10rem

可是现实中没有达到我们的预期,真是的是 width:120px (width:10rem) && height: 120px(height:rem)

彻底懵逼了,怎么可能。。。。。

字体大小没有问题,为啥width和height不好使了。。。。。

原因在于chrome最小字体为12px,刚才已经提到过了,。。

我们在html中设置了font-size:62.5% ,(= 10px)真正的是 =12px

这时候我们知道原因了,可以这样设置

把 62.5% * 12

然后把原先的值统一除以 2

例如

html{

font-size:125%;

}

div{

font-size: 0.8rem; /*真实值: 16px 怎么来的 16/10/2=0.8*/

width: 5rem; /*真实值: 100px 怎么来的 100/10/2=5*/

}

如果算术不太好的怎么办

我们可以设置用100来换算

html{

font-size:625%;

}

div{

font-size: 0.16rem; /*真实值: 16px 怎么来的 16/100=0.16*/

width: 1rem; /*真实值: 100px 怎么来的 100/100=1*/

}

这样和一起的62.5% 换算差不多,就是有从除10变成了除以100

### 解决postcss-pxtorem在移动端不生效问题 #### 安装必要的依赖包 为了确保`postcss-pxtorem`能够正常工作,需要先安装相应的依赖包。这包括`amfe-flexible``postcss-pxtorem`。 ```bash $ npm i -S amfe-flexible $ npm install postcss-pxtorem --save-dev ``` #### 配置`postcss.config.js` 配置文件对于`postcss-pxtorem`能否正确转换单位至关重要。创建或编辑项目根目录下的`postcss.config.js`文件,并加入如下配置: ```javascript module.exports = { plugins: [ require('postcss-pxtorem')({ rootValue: 16, // 设计稿宽度/10 或者其他合适的值 propList: ['*'], // 表示所有的属性都将被转成 rem 单位 selectorBlackList: [], // 忽略的选择器前缀数组 minPixelValue: 2, mediaQuery: false, replace: true }) ] }; ``` 上述设置中,`rootValue`参数决定了基础字体大小;`propList`定义哪些CSS属性会被处理;`minPixelValue`表示最小像素值,低于此数值不会被替换[^4]。 #### 引入`amfe-flexible` 为了让页面支持不同设备屏幕尺寸下文字缩放功能,在项目的入口HTML文件(通常是`index.html`)中的`<head>`标签内引入`amfe-flexible`库: ```html <script src="https://cdn.jsdelivr.net/npm/amfe-flexible"></script> ``` 也可以通过Webpack等构建工具将其打包到最终资源里去[^1]。 #### 检查样式加载顺序 有时由于样式的加载顺序不当也会造成`postcss-pxtorem`失效的情况发生。确保经过PostCSS编译后的CSS文件是在DOM结构之后才被浏览器解析执行的。如果使用的是Vue CLI,则可以在`vue.config.js`里面调整公共路径(publicPath)来控制静态资源的位置。 #### 测试与验证 完成以上步骤后重新启动开发服务器并访问应用页面查看效果。可以利用Chrome开发者工具模拟不同的移动设备环境来进行测试,确认各个元素是否按照预期进行了适配[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值