目录
1. 需求:修改图片大小为 200 * 200
index.html
<body>
<h1>这是我的网页</h1>
<div id="app">
</div>
<script src="./bundle.js"></script>
</body>
index.css
.logo {
width: 200px;
height: 200px;
}
index.js
import jspp from './jspp.jpg';
import './index.css';
const img = new Image();
img.src = jspp;
img.className += 'logo'
const app = document.getElementById('app');
app.appendChild(img);
打包报错 -> 不支持 .css 文件,需要安装对应的 Loader 处理
2. style-loader、css-loader
css-loader:在js中加载css
style-loader:把加载的css作为style标签内容插入到html中
2.1 安装配置
-
安装
注意一定要指定安装版本,否则会报错
yarn add css-loader@2.1.1 style-loader@1 -D
-
配置
// 导入node的path模块 const path = require('path'); module.exports = { mode: "development", entry: './src/index.js', module: { rules: [{ test: /\.(jpg|jpe?g|gif)$/, use: { loader: 'url-loader', options: { name: '[name].[ext]', outputPath: 'imgs/', limit: 20480 } } }, { test: /\.css$/i, // loader 执行顺序:从后往前,从下往上 use: ["style-loader", "css-loader"], } ] }, output: { // 生成文件名 filename: 'bundle.js', // 所在目录名 根目录路径 目录名 path: path.resolve(__dirname, 'dist') } }
2.2 执行顺序
从后往前,从下往上
use: ["style-loader", "css-loader"]
use: [
"style-loader",
"css-loader"
]
2.3 示例
logo.css
.logo {
width: 200px;
height: 200px;
}
.index.css
@import './logo.css'; /* css 引入 css */
body {
background-color: #fff;
}
index.js
import './index.css'; // js 引入 css
3. sass-loader
编译sass文件
3.1 安装配置
-
安装
yarn add sass-loader@10.0.0 sass@1.26.5 -D
-
配置
module.exports = { ... module: { rules: [ ... { test: /\.scss$/i, use: ["style-loader", "css-loader", "postcss-loader", "sass-loader"], } ] }, ... }
3.2 示例
index.sass
body {
background-color: #fff;
img {
width: 100px;
height: 100px;
}
}
index.js
import './index.scss';
未编译前:
编译后:
4. postcss-loader、autoprefixer
postcss-loader:webpack 提供的兼容 css3 样式的插件
autoprefixer:厂商前缀插件 -> 配合 postcss-loader 使用
4.1 安装配置
-
安装
yarn add postcss-loader@3.0.0 autoprefixer@9.5.1 -D
-
webpack.config.js
注意:引入顺序
{ test: /\.scss$/i, use: ["style-loader", "css-loader", "postcss-loader", "sass-loader"], }
-
新建一个 postcss.config.js 文件
module.exports = { plugins: [ require('autoprefixer') ], };
4.2 需求:给 css3 样式加上厂商前缀
index.scss
body {
background-color: #fff;
img {
width: 100px;
height: 100px;
transform: rotate(45deg); /* css3 样式 -> 低版本浏览器不兼容 -> 厂商前缀 */
}
}
如果浏览器版本足够新是不会加厂商前缀的 -> 低版本才会给你加上
如果要看到厂商前缀的效果,可以通过 package.json 进行配置
{
...
"browserslist": [
">1%", // 市场份额
"last 2 versions" // 最新的两个版本
],
...
}