1 相容性寫法
flex
布局存在相容性問題,比如
ios8
對
flex
不相容問題,為了解決相容性問題,我們将普通代碼改為相容性代碼。
普通代碼:
.ec-list{
display: flex;
}
.ec-item{
flex:1;
}
相容性代碼:
.ec-list {
display: -webkit-box;
display: -webkit-flex;
display: flex;
}
.ec-item {
-webkit-box-flex: 1;
-webkit-flex: 1;
flex: 1;
}
2 借助插件
我們自己手動将普通代碼改為相容性代碼,比較麻煩,也容易出現錯誤,是以建議使用
postcss
插件的
autoprefixer
自動加字首,避免不必要的錯誤。
2.1 使用 autoprefixer 插件
安裝依賴:
npm i postcss-loader autoprefixer -D
2.2 根據 Can I Use 規則
位址:https://caniuse.com/。
2.3 編寫測試檔案
給
search.less
添加
display: flex;
@font-face{
font-family: 'SourceHanSerifSC-Heavy';
src: url('./fonts/SourceHanSerifSC-Heavy.otf') format('truetype');
}
.search-text {
font-size: 48px;
color: green;
font-family: 'SourceHanSerifSC-Heavy';
display: flex;
}
2.4 配置postcss-loader和autoprefixer
【注意】:
postcss-loader
執行順序必須保證在
css-loader
之前,建議還是放在
less
或者
sass
等預處理器之後更好。即
loader
順序:
less-loader -> postcss-loader -> css-loader -> style-loader
或者
MiniCssExtractPlugin.loader
,其實
postcss-loader
放在
less-loader
之前問題也不大,平時使用的
less
裡面的文法基本不會和
autoprefixer
處理産生沖突的。
module.exports = {
entry: {
index: './src/index.js',
search: './src/search.js'
},
output: {
path: path.join(__dirname, 'dist'),
filename: '[name]_[chunkhash].js'
},
mode: 'production',
module: {
rules: [
{
test: /.less$/,
use: [
MiniCssExtractPlugin.loader,
'css-loader',
'less-loader',
{
loader: 'postcss-loader',
options: {
plugins: () => [
require('autoprefixer')({
browsers: ['last 2 version', '>1%', 'ios 7']
})
]
}
}
]
},
]
},
};
2.5 執行npm run build指令
如果出現下面的提示:
Replace Autoprefixer browsers option to Browserslist config.
Use browserslist key in package.json or .browserslistrc file.
Using browsers option can cause errors. Browserslist config
can be used for Babel, Autoprefixer, postcss-normalize and other tools.
If you really need to use option, rename it to overrideBrowserslist.
Learn more at:
https://github.com/browserslist/browserslist#readme
https://twitter.com/browserslist