實現原理
自適應布局是前端一直都存在的問題,通常常用的技術有**查詢首先瀏覽器是無法解析@media screen and (max-width:1366px)
,還有rem布局,通過改變頁面根元素font-size
大小來實現自適應布局。可是都逃不過要計算的命運。有沒有什麼方法繞過這些花花繞,就寫px
也能實現自適應布局呢?答案是肯定的,有方案理論上就能實現,這樣一來無論是寫自適應專案,還是修改原有專案,都變得十分方便。下面看看webpack打包scss的過程:
scss
**的,在專案工程裡,通過webpack
的loader
將檔案打包成瀏覽器可執行的**。比如scss
,首先載入到scss
、sass
檔案時,就會通過sass-loader
打包成css
,然後在通過css-loader
打包,具體配置**如下:
通過這個可以想到,如果有乙個**分析(這段無需配置)loader
,能夠在這些css檔案打包前,將檔案裡面的px
計算成rem
,然後在進行解析,這樣就可以直接在頁面中使用px
了。主角出場了postcss-px2rem
,可實現這個功能,下面看看在vue
中的具體配置
使用webpack
新建vue
專案時,已經安裝好了這個loader
,在build
資料夾下utils
(配置loader
的地方)面有這樣一段**
return
}),sass: generateloaders('sass', ),
scss: generateloaders('sass'),
stylus: generateloaders('stylus'),
styl: generateloaders('stylus')
}
在generateloaders
函式中有這樣一句usepostcss
const postcssloader =
}const loaders = options.usepostcss ? [cssloader, postcssloader] : [cssloader]
然後在通過styleloaders
構造rules
格式的loader
,所以我們只要把webpack.dev.conf.js
跟webpack.prod.conf.js
檔案中使用styleloaders
函式的引數加乙個usepostcss:true
就可以(預設就有)
exports.styleloaders = function (options) )
} return output
}
配置檔案(報錯的話記得安裝postcss-px2rem
),在vue-loader.conf.js
配置一下,vue-loader
轉換
module.exports = )],
}
最後一步,監聽視窗大小變化,動態設定font-size
,定義乙個js檔案引入main.js
中
// basesize 要跟vueloade配置的一樣
let basesize = 100
function setfontsize ()
// 初始化
setfontsize()
// 監聽視窗變化
window.onresize = function ()
注意:①不能將大小直接寫在vue
檔案的style
中
②無需轉換rem
可以寫px
或者px
自適應布局
請你說一說你知道的所有web布局方式?1.浮動 float left right 2.inline block display inline block 行內塊級 3.flexible box 彈性盒子 display flex 4.grid display grid 5.絕對 相對布局 posit...
CSS布局 自適應布局
網易雲課堂學習筆記二 自適應布局 1.float absolute margin left right2.float overflow left right 產生bfc3.table left,right 預設均分 left margin失效 4.flex left right 由 定寬 自適應 類...
右邊自適應 左右布局 css左右自適應布局
如果有這麼乙個表單需求,前面是乙個名稱,中間是乙個表單,右側是乙個按鈕或者乙個字串。需要自適應布局,名稱為固定長度,右側也是固定,中間部分自適應整個width。先來看看html標籤1 6 年齡歲 首先,我想到的有這麼幾種display,乙個是inline block。於是css就變成這樣1.name...