Penyelesaian Penyesuaian Serasi REM
REM Penyelesaian Penyesuaian Serasi
Apakah itu REM
REM (Saiz fon unsur akar) merujuk kepada unit saiz fon berbanding unsur akar.
Contoh:
- Jika nod akar
font-size
ditetapkan kepada10px
, maka apabila menggunakan3rem
, pengiraan akan menjadi < kod>3 *10 = 30px - 如果根节点设置为
20px
,侧计算后得3*20 = 60px
font-size
设置为 10px
,则使用 3rem
时,计算后得 3*10 = 30px
为什么使用 REM
- 相对于
流布局
、响应式布局
等适配方式,REM 适配
更为灵活,在不同屏幕尺寸上根据根节点来等比适配 - 兼容性好(Android 2.1+ / iOS 4.1+)
- 使用便捷,从
px -> rem
可以使用工作流自动完成
tmt-workflow 基准值约定
<html>
根节点默认font-size
=20px
- 视觉稿默认宽度为
375px
(即 iPhone 6 尺寸) - 其它屏幕宽度以 iPhone 6 的视觉为为基准,进行等比缩放
- rem 单位生效范围为所有内联、外联样式的 CSS 属性值,
1px
除外
tmt-workflow REM 方案使用思路
- 编码过程中统一使用
px
作为单位 - 工作流编译后,
px
->rem
自动完成 - 调用 lib-rem.less 进行个屏幕比例适配设置
开启 REM
首先,编辑配置文件 .tmtworkflowrc
Jika nod akar ditetapkan kepada 20px
, selepas pengiraan, 3*20 = 60px
px -> li> code> Boleh dilengkapkan secara automatik menggunakan aliran kerja
🎜🎜🎜tmt-workflow nilai tanda aras konvensyen🎜🎜<html>
Lalai nod akar font-size
= 20px
🎜Lebar lalai manuskrip visual ialah 375px
(iaitu saiz iPhone 6) 🎜Lebar skrin lain ialah Visi iPhone 6 digunakan sebagai penanda aras dan penskalaan berkadar dilakukan🎜rem Julat efektif unit ialah nilai atribut CSS bagi semua gaya sebaris dan luaran, kecuali 1px
🎜🎜🎜tmt-workflow idea penggunaan skema REM🎜- 🎜Gunakan
px
sebagai unit dalam proses pengekodan🎜Selepas aliran kerja disusun, px
- > rem
Penyiapan automatik🎜Panggil lib-rem.less untuk melaksanakan tetapan penyesuaian nisbah skrin.tmtworkflowrc
adalah seperti berikut: 🎜🎜{ "supportREM": true}🎜
Sekali lagi, perkenalkan lib-rem.less dalam fail eksport LESS
Butiran proses
Selepas dihidupkan, CSS dibahagikan kepada gaya garisan
dan gaya sebaris
Dua bahagian pelaksanaan logik: 外联样式
和 内联样式
两部分逻辑执行:
Less -> CSS
过程,由插件 postcssPxtorem 对 LESS 中的px
进行单位转换HTML/EJS -> HTML
过程,会使用插件 posthtmlPx2rem 对 HTML 中的内联样式
进行单位转换
其它注意点
1. 兼容 1px 问题
考虑到 1px 转换为 rem
会有小数bug,工作流中会忽略 1px
的转换,最小转换数值为 2px
。
参见:postcss-pxtorem option:minPixelValue
参见:posthtmlPx2rem option:minPixelValue
2. 雪碧图兼容问题
为避免雪碧图遇到小数计算 bug,设置雪碧图内各个元素之间的间隙为 4px
,参见_tasks/TaskBuildDist.js
3. 强制不使用 REM 的预留 hack
如果希望某条 CSS
样式不进行单位转换,可使用如下大小写敏感的 px
写法:
如:12PX
代理 12px
,这样工作流中就会忽略这条 CSS
Kurang -> CSS
proses, pemalam postcssPxtorem melakukan penukaran unit padapx
dalam LESS Proses HTML/EJS -> HTML
, pemalam posthtmlPx2rem akan digunakan untuk menukar unitgaya sebaris
dalam HTML ol>
1 Serasi dengan isu 1px
rem
, 1px
penukaran, nilai penukaran minimum ialah 2px
. 🎜Lihat: pilihan postcss-pxtorem:minPixelValue🎜Lihat: posthtmlPx2rem option:minPixelValue🎜🎜🎜2 Isu keserasian imej Sprite
🎜Untuk mengelakkan pepijat pengiraan perpuluhan dalam imej sprite, tetapkan nilai imej sprite. setiap elemen dalam imej sprite Jurang antara mereka ialah4px
, lihat _tasks/TaskBuildDist.js🎜🎜🎜3 Paksa untuk tidak menggunakan hack reserved REM
🎜Jika anda mahukan gayaCSS< The /code> tertentu tidak melakukan penukaran unit Anda boleh menggunakan kaedah penulisan px
yang sensitif huruf besar dan kecil: 🎜🎜Contohnya: 12PX proksi 12px
, ini berfungsi Atribut CSS
ini akan diabaikan dalam aliran dan penukaran unit tidak akan dilakukan🎜🎜🎜🎜🎜🎜🎜🎜