美文网首页
(8/24) 图片跳坑大战--css中的图片处理

(8/24) 图片跳坑大战--css中的图片处理

作者: wfaceboss | 来源:发表于2018-12-13 13:29 被阅读11次

    前言:此节的开展是在上一节的基础上进行的,(每一节都是从无到有编写关于此节的知识)。

    CSS中的图片处理

    image.png

    1.新建images文件夹

    在src目录下新建一个images文件夹,把需要的图片放入images文件夹。图片下载

    2.新增标签

    在index.html文件中增加一个放置div的标签(需要注意的是这里修改的是src下的index.html文件,不是dist下的),代码如下:

    <div id="img"></div>
    

    3.编写样式

    在src目录下的css目录下的index.css文件中编写样式,如下,
    src/css/index.css:

    body{
        background-color: #018eea;
        color: red;
        font-size: 32px;
        text-align: center;
    }
    #img{
        background-image: url(../images/webapck.jpg);
        width:271px;
        height:285px;
    }
    

    4.loader安装

    使用npm在终端安装file-loaderurl-loader

    npm install --save-dev file-loader url-loader
    

    关于file-loaderurl-loader,下面了解一下:
    (1)file-loader:解决引用路径的问题,拿background样式用url引入背景图来说,我们都知道,webpack最终会将各个模块打包成一个文件,因此我们样式中的url路径是相对入口html页面的,而不是相对于原始css文件所在的路径的。这就会导致图片引入失败。这个问题是用file-loader解决的,file-loader可以解析项目中的url引入(不仅限于css),根据我们的配置,将图片拷贝到相应的路径,再根据我们的配置,修改打包后文件引用路径,使之指向正确的文件。

    (2)url-loader:如果图片较多,会发很多http请求,会降低页面性能。这个问题可以通过url-loader解决。url-loader会将引入的图片编码,生成dataURl。相当于把图片数据翻译成一串字符。再把这串字符打包到文件中,最终只需要引入这个文件就能访问图片了。当然,如果图片较大,编码会消耗性能。因此url-loader提供了一个limit参数,小于limit字节的文件会被转为DataURl,大于limit的还会使用file-loader进行copy。

    5.配置url-loader

    安装之后,开始使用loader,此时在loader使用时不需要用require引入,在plugins才需要使用require引入。
    webpack.config.js文件:

    //模块:例如解读CSS,图片如何转换,压缩
        module:{
            rules: [
                {
                  test: /\.css$/,
                  use: [ 'style-loader', 'css-loader' ]
                },{
                   test:/\.(png|jpg|gif)/ ,
                   use:[{
                       loader:'url-loader',
                       options:{
                           limit:500000
                       }
                   }]
                }
              ]
        },
    

    注释:
    1.test:/.(png|jpg|gif)/是匹配图片文件后缀名称。
    2.use:指定使用的loader和loader的配置参数。
    3.limit:是把小于500000B的文件打成Base64的格式,写入打包后的js中。

    此处只是其中一种配置方式,其余可参考
    为什么只使用了url-loader?

    在配置loader时,我们并没有在webpack.config.js中使用file-loader,但是依然打包成功了。这个和file-loaderurl-loader之间的关系有关。url-loaderfile-loader是什么关系呢?简单的说,url-loader封装了file-loaderurl-loader不依赖于file-loader,即使用url-loader时,只需要安装url-loader即可,不需要安装file-loader,因为url-loader内置了file-loaderurl-loader工作分两种情况:
    1.文件大小小于limit参数,url-loader将会把文件转为DataURL(Base64格式);
    2.文件大小大于limiturl-loader会调用file-loader进行处理,参数也会直接传给file-loader
    也就是说,其实我们只安装一个 url-loader就可以了。但是为了以后的操作方便,这里就顺便安装上file-loader

    6.打包

    在终端使用webpack命令进行打包

    webpack
    
    webpack.png

    7.启动服务

    在终端中执行npm run server命令,启动我们的服务,然后通过http://localhost:1818/进行访问。

    image.png
    访问效果如下:
    效果.png

    相关文章

      网友评论

          本文标题:(8/24) 图片跳坑大战--css中的图片处理

          本文链接:https://www.haomeiwen.com/subject/thgvhqtx.html