Vue將px轉化為rem適配移動端


Vue將px轉化為rem適配移動端

1.下載lib-flexible
我使用的是vue-cli+webpack,所以是通過npm來安裝的
npm i lib-flexible --save

2.引入lib-flexible
在main.js中引入lib-flexible
import 'lib-flexible/flexible'

3.設置meta標簽
通過meta標簽,設置設備寬度以及縮放比例
<meta name="viewport" content="width=device-width, initial-scale=1.0">

4.安裝px2rem-loader
npm install px2rem-loader

5.配置px2rem-loader
在build文件中找到util.js,將px2rem-loader添加到cssLoaders中,如:

const cssLoader = {
    loader: 'css-loader',
    options: {
      minimize: process.env.NODE_ENV === 'production',
      sourceMap: options.sourceMap
    }
  }
  const px2remLoader = {
    loader: 'px2rem-loader',
    options: {
      remUnit: 75
    }
  }

同時,在generateLoaders方法中添加px2remLoader

function generateLoaders (loader, loaderOptions) {
    const loaders = [cssLoader,px2remLoader]
    if (loader) {
      loaders.push({
        loader: loader + '-loader',
        options: Object.assign({}, loaderOptions, {
          sourceMap: options.sourceMap
        })
      })
    }

  

6.重啟
當配置完之后,只需要重啟下服務,就自動轉化為rem了
npm run dev

===============

css中單位px和em,rem的區別
px是固定像素,em是相對父元素字體大小的百分比,比如div設成15px,div的子節點1em就是15px,2em就是30px。
rem和em差不多,但是是相對於html元素(文檔根元素document.documentElement)而不是父元素。

px像素(Pixel)。相對長度單位。像素px是相對於顯示器屏幕分辨率而言的。
em是相對長度單位。相對於當前對象內文本的字體尺寸。如當前對行內文本的字體尺寸未被人為設置,則相對於瀏覽器的默認字體尺寸。
任意瀏覽器的默認字體高都是16px。所有未經調整的瀏覽器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。為了簡化font-size的換算,需要在css中的body選擇器中聲明Font-size=62.5%,這就使em值變為 16px*62.5%=10px, 這樣12px=1.2em, 10px=1em, 也就是說只需要將你的原來的px數值除以10,然后換上em作為單位就行了。

EM特點
1. em的值並不是固定的;
2. em會繼承父級元素的字體大小。
所以我們在寫em的時候,需要注意兩點:
1. body選擇器中聲明Font-size=62.5%;
2. 將你的原來的px數值除以10,然后換上em作為單位;
3. 重新計算那些被放大的字體的em數值。避免字體大小的重復聲明。

rem是CSS3新增的一個相對單位(root em,根em),這個單位引起了廣泛關注。
這個單位與em有什么區別呢?區別在於使用rem為元素設定字體大小時,仍然是相對大小,但相對的只是HTML根元素。
這個單位可謂集相對大小和絕對大小的優點於一身,通過它既可以做到只修改根元素就成比例地調整所有字體大小,又可以避免字體大小逐層復合的連鎖反應。目前,除了IE8及更早版本外,所有瀏覽器均已支持rem。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM