1. 程式人生 > >使用 rem 作為單位使頁面自適應設備寬度

使用 rem 作為單位使頁面自適應設備寬度

rem color common fault () util pos ssl 放大

一、新建 rem.js 文件,代碼如下:

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) }


二、在 main.js 中引用上述 rem.js 文件,使得 html 的 fontsize 始終為設備寬度的 1/10:

import remConfig from ‘./common/rem‘

remConfig() 
// 配置rem window.addEventListener(‘resize‘, function () { remConfig() })

三、安裝 px2rem-loader:

npm i px2rem-loader

四、配置 utils.js 文件,在 exports.cssLoaders = function (options) {} 裏面添加下列代碼:

const px2remLoader = {
  loader: ‘px2rem-loader‘,
  options: {
    remUnit: 75 // 設計稿寬度750px
  }
}

找到 generateLoaders 函數,獎函數中下列代碼:

const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]

改為:

const loaders = options.usePostCSS ? [cssLoader, postcssLoader, px2remLoader] : [cssLoader, px2remLoader]

/* 或者改為 */

// const loaders = [cssLoader, px2remLoader]

五、配置完後重新 npm run dev,webpack就會自動將 css 中的 px 轉換為 rem,如果 css 中的某些 px 不想被轉換為 rem 可以在後面加上 /* no*/,如下(分號不能省略):

border: 1px solid #ccc; /* no*/
fontsize: 16px; /* no*/

但調用的外部 css 文件中的 px 不會被轉換,內聯樣式中的 px 也不會被轉換。

使用 rem 作為單位使頁面自適應設備寬度