vue@cli3 public目錄下的靜態圖片,如何使用在css類文件中(sass可行,純css不行)


之前寫了一篇vue文件怎么使用的文章,有人問我怎么在css文件中使用public下的文件,這是個好問題,因為我之前都沒有研究過

需要解決的2個問題

一開始按照vue文件的使用方式(https://www.cnblogs.com/wzcsqaws/p/11283228.html)試了一下,總結了下主要有2個問題,

  1. webpack解析不到你寫的文件路徑,控制台直接報錯
  2. 如何把你的publicPath,放到css中

解決第1個問題 僅僅針對public目錄圖片如何在css使用,這一步可以不要,直接看解決第二個問題就能實現,當然也可以了解一下

webpack處理css大概是這樣子

根據webpack圖片上的注釋,問題定位在css-loader上,是它把css解析CommonJS,讀取url解析不到然后報錯,那我們就看一下css-loader文檔看看
有沒有解決辦法,

文檔上有寫,可以在配置里面添加一個url方法,簡單判斷在某個文件夾下,就可以不解析這個url了,不解析自然控制台就不報錯了

解決第2個問題 url使用字符串拼接完整

為了兼容原生,原本打算使用css變量加calc實現,奈何無法實現,只能退一步使用sass,讓文件在sass-loader的時候把圖片完整url拼接完成
寫了個簡單的例子

這樣就可以使用了,但是這么寫很麻煩,每個文件都要加變量或者引入變量不利於管理,而且還要跟process.env.BASE_URL掛鈎對吧
sass-loader有一個參數是默認加全局sass文件或者全局參數的,這正是我需要的

這里是在vuecli中使用簡化的配置來導入全局變量的文件,這樣就可以只寫一遍,不過還不夠,我還想要與process.env.BASE_URL掛鈎

看了sass-loader配置,發現prependData可以以方法的方式使用,我們可以在這里判斷是何種環境然后定義變量為不同的值,問題完美解決啦
問一問,有沒有人能用原生解決問題的,求告知~


免責聲明!

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



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