Vue一個動態(tài)添加background-image的實現(xiàn)
Vue一個動態(tài)添加background-image
一開始不知道該怎么弄,后面查了下,應該這樣使用
?<div @click="dialogVisible = true" :style="? ? ? ?{backgroundImage:'url('+personalData.avatar+')'}"> ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? <div> ? ? ? ? ? ? ? ? ? ? ? ? <!-- <div></div> --> ? ? ? ? ? ? ? ? ? ? ? ? <p>修改頭像</p> ? ? ? ? ? ? ? ? ? ? </div> ?</div>
Vue踩坑background-image路徑
在前端開發(fā)中,background-image屬性非常常見,有很多時候需要使用內(nèi)聯(lián)樣式來綁定此屬性,但是在vue項目中,如果如下面代碼填寫路徑會找不到圖片
- 項目中圖片都放在src/img文件夾,img和background-image引用都用相對路徑,即../../../這種形式。
- 在項目打包build設置路徑assetsPublicPath:'./',然后哪些沒有轉(zhuǎn)成base64的背景圖都失效了。
<script type="text/javascript"> import TemplateNav from './TemplateNav' export default { name: 'FooterNav', components: { 'TemplateNav': TemplateNav }, data() { return { //使用相對路徑會找不到圖片 shouye:'url(../../assets/images/shouye/index2x.png)', fenlei:'url(../../assets/images/shouye/fenlei2x.png)', search:'url(../../assets/images/shouye/search2x.png)', shopcart:'url(../../assets/images/shouye/gouwuche2x.png)', mine:'url(../../assets/images/shouye/I2x.png)' } }, props: { num: { default: '0' } }, } </script>
報錯如下:404(Not Found)
正確的路徑應該如下面這樣
data() { return { shouye:'url(' + require('../../assets/images/shouye/index2x.png') + ')', fenlei:'url(' + require('../../assets/images/shouye/fenlei2x.png') + ')', search:'url(' + require('../../assets/images/shouye/search2x.png') + ')', shopcart:'url(' + require('../../assets/images/shouye/gouwuche2x.png') + ')', mine:'url(' + require('../../assets/images/shouye/I2x.png') + ')' } },
使用require()方法,require()是node.js方法。
結(jié)合實際情況,處理方法如下
img標簽:
<img :src="require('../../../assets/images/icons/icon-add-pc.svg')">
背景圖:
<div :style="{backgroundImage:'url('+require('../../../assets/images/icon/icon-add-pc.svg')+')'}"></div> //i標簽 <i :style="{backgroundImage:'url('+require('../../assets/home/ic-0-01.svg')+')'}"></i>
擴展:圖片格式(base64)
圖片的base64編碼就是可以將一張圖片數(shù)據(jù)編碼成一串字符串,使用該字符串代替圖像地址url。
使用base64圖片的優(yōu)點:
- 減少http請求次數(shù)
- 采用base64的圖片隨著頁面一起下載,因此不會存在跨域請求的問題
- 沒有圖片更新要上傳圖片,因此不會造成清理圖片緩存的問題。
使用base64圖片的缺點:
- 增加css文件的大小,比http請求大30%左右
- 瀏覽器兼容性,支持ie10及以上
- 解析css的時間增長
base64圖片與csssprites技術
精靈圖技術就是將圖片合成一個大的圖片,將多次圖片請求合成一張大的請求,以此來達到減少http請求的次數(shù)。
對于base64圖片常見誤區(qū)
base64雖然有優(yōu)點,但是其缺點也很明顯,在使用上存在一些明顯的缺陷
- 使用base64不代表性能優(yōu)化,使用base64減少了http請求,但是增加了css文件的體積,css文件體積增大意味著CPR的阻塞
- CPR(Critical Rendering Path,關鍵渲染路徑):當瀏覽器從服務器接收到一個HTML頁面的請求時,到屏幕上渲染出來要經(jīng)過很多個步驟。瀏覽器完成這一系列的運行,或者說渲染出來我們常常稱之為“關鍵渲染路徑”。
- 圖片不會導致關鍵路徑的阻塞,而轉(zhuǎn)換為base64后大大增加了css文件的體積,css文件的體積直接影響渲染,導致空白屏幕時間增長,html和css會阻塞渲染,而圖片不會阻塞渲染。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
vuex中store存儲store.commit和store.dispatch的區(qū)別及說明
這篇文章主要介紹了vuex中store存儲store.commit和store.dispatch的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09vue實現(xiàn)動態(tài)監(jiān)測元素高度
這篇文章主要介紹了vue實現(xiàn)動態(tài)監(jiān)測元素高度方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10vue實現(xiàn)html轉(zhuǎn)化pdf并復制文字
這篇文章主要為大家詳細介紹了vue實現(xiàn)html轉(zhuǎn)化pdf的兩種方式,分別為能復制文字和不能復制文字的方法,有需要的小伙伴可以跟隨小編一起學習一下2024-10-10