1、新建 rem.js 文件,代码以下:css
export default function () { document.documentElement.style.fontSize = document.documentElement.clientWidth / 10 + 'px' // 禁止双击放大 document.documentElement.addEventListener('touchstart', function (event) { if (event.touches.length > 1) { event.preventDefault() } }, false) var lastTouchEnd = 0 document.documentElement.addEventListener('touchend', function (event) { var now = Date.now() if (now - lastTouchEnd <= 300) { event.preventDefault() } lastTouchEnd = now }, false) }
2、在 main.js 中引用上述 rem.js 文件,使得 html 的 fontsize 始终为设备宽度的 1/10:html
import remConfig from './common/rem' remConfig() // 配置rem window.addEventListener('resize', function () { remConfig() })
3、安装 px2rem-loader:webpack
npm i px2rem-loader
4、配置 utils.js 文件,在 exports.cssLoaders = function (options) {} 里面添加下列代码:web
const px2remLoader = { loader: 'px2rem-loader', options: { remUnit: 75 // 设计稿宽度750px } }
找到 generateLoaders 函数,奖函数中下列代码:npm
const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]
改成:函数
const loaders = options.usePostCSS ? [cssLoader, postcssLoader, px2remLoader] : [cssLoader, px2remLoader] /* 或者改成 */ // const loaders = [cssLoader, px2remLoader]
5、配置完后从新 npm run dev,webpack就会自动将 css 中的 px 转换为 rem,若是 css 中的某些 px 不想被转换为 rem 能够在后面加上 /* no*/,以下(分号不能省略):post
border: 1px solid #ccc; /* no*/ fontsize: 16px; /* no*/
但调用的外部 css 文件中的 px 不会被转换,内联样式中的 px 也不会被转换。spa