Vue一個(gè)動(dòng)態(tài)添加background-image的實(shí)現(xiàn)
Vue一個(gè)動(dòng)態(tài)添加background-image
一開始不知道該怎么弄,后面查了下,應(yīng)該這樣使用
?<div @click="dialogVisible = true" :style="?
? ? ?{backgroundImage:'url('+personalData.avatar+')'}"> ? ?
? ? ??
? ? ? ? ? ? ? ? ? ? <div>
? ? ? ? ? ? ? ? ? ? ? ? <!-- <div></div> -->
? ? ? ? ? ? ? ? ? ? ? ? <p>修改頭像</p>
? ? ? ? ? ? ? ? ? ? </div>
?</div>Vue踩坑background-image路徑
在前端開發(fā)中,background-image屬性非常常見,有很多時(shí)候需要使用內(nèi)聯(lián)樣式來(lái)綁定此屬性,但是在vue項(xiàng)目中,如果如下面代碼填寫路徑會(huì)找不到圖片
- 項(xiàng)目中圖片都放在src/img文件夾,img和background-image引用都用相對(duì)路徑,即../../../這種形式。
- 在項(xiàng)目打包build設(shè)置路徑assetsPublicPath:'./',然后哪些沒有轉(zhuǎn)成base64的背景圖都失效了。
<script type="text/javascript">
import TemplateNav from './TemplateNav'
export default {
name: 'FooterNav',
components: {
'TemplateNav': TemplateNav
},
data() {
return {
//使用相對(duì)路徑會(huì)找不到圖片
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>報(bào)錯(cuò)如下:404(Not Found)

正確的路徑應(yīng)該如下面這樣
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é)合實(shí)際情況,處理方法如下
img標(biāo)簽:
<img :src="require('../../../assets/images/icons/icon-add-pc.svg')">背景圖:
<div :style="{backgroundImage:'url('+require('../../../assets/images/icon/icon-add-pc.svg')+')'}"></div>
//i標(biāo)簽
<i :style="{backgroundImage:'url('+require('../../assets/home/ic-0-01.svg')+')'}"></i>擴(kuò)展:圖片格式(base64)
圖片的base64編碼就是可以將一張圖片數(shù)據(jù)編碼成一串字符串,使用該字符串代替圖像地址url。
使用base64圖片的優(yōu)點(diǎn):
- 減少http請(qǐng)求次數(shù)
- 采用base64的圖片隨著頁(yè)面一起下載,因此不會(huì)存在跨域請(qǐng)求的問題
- 沒有圖片更新要上傳圖片,因此不會(huì)造成清理圖片緩存的問題。
使用base64圖片的缺點(diǎn):
- 增加css文件的大小,比http請(qǐng)求大30%左右
- 瀏覽器兼容性,支持ie10及以上
- 解析css的時(shí)間增長(zhǎng)
base64圖片與csssprites技術(shù)
精靈圖技術(shù)就是將圖片合成一個(gè)大的圖片,將多次圖片請(qǐng)求合成一張大的請(qǐng)求,以此來(lái)達(dá)到減少http請(qǐng)求的次數(shù)。
對(duì)于base64圖片常見誤區(qū)
base64雖然有優(yōu)點(diǎn),但是其缺點(diǎn)也很明顯,在使用上存在一些明顯的缺陷
- 使用base64不代表性能優(yōu)化,使用base64減少了http請(qǐng)求,但是增加了css文件的體積,css文件體積增大意味著CPR的阻塞
- CPR(Critical Rendering Path,關(guān)鍵渲染路徑):當(dāng)瀏覽器從服務(wù)器接收到一個(gè)HTML頁(yè)面的請(qǐng)求時(shí),到屏幕上渲染出來(lái)要經(jīng)過(guò)很多個(gè)步驟。瀏覽器完成這一系列的運(yùn)行,或者說(shuō)渲染出來(lái)我們常常稱之為“關(guān)鍵渲染路徑”。
- 圖片不會(huì)導(dǎo)致關(guān)鍵路徑的阻塞,而轉(zhuǎn)換為base64后大大增加了css文件的體積,css文件的體積直接影響渲染,導(dǎo)致空白屏幕時(shí)間增長(zhǎng),html和css會(huì)阻塞渲染,而圖片不會(huì)阻塞渲染。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
VUE子組件向父組件傳值詳解(含傳多值及添加額外參數(shù)場(chǎng)景)
這篇文章主要給大家介紹了關(guān)于VUE子組件向父組件傳值(含傳多值及添加額外參數(shù)場(chǎng)景)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Vue獲取HTMLCollection列表的children時(shí)結(jié)果為undefined問題
這篇文章主要介紹了Vue獲取HTMLCollection列表的children時(shí)結(jié)果為undefined問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
ElementPlus組件與圖標(biāo)按需自動(dòng)引入的實(shí)現(xiàn)方法
這篇文章主要介紹了ElementPlus組件與圖標(biāo)按需自動(dòng)引入的實(shí)現(xiàn)方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-06-06
vue+elementUI的select下拉框回顯為數(shù)字問題
這篇文章主要介紹了vue+elementUI的select下拉框回顯為數(shù)字問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
Vue2+marked.js實(shí)現(xiàn)AI流式輸出的項(xiàng)目實(shí)踐
本文主要介紹了Vue2+marked.js實(shí)現(xiàn)AI流式輸出的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-04-04
Vue項(xiàng)目從webpack3.x升級(jí)webpack4不完全指南
前段時(shí)間,泡面將自己的一個(gè)Vue-cli構(gòu)建的前端框架從webpack3.x升級(jí)到了4.x版本,現(xiàn)在才拉出來(lái)記錄一下,已備忘之用,也和大家分享一下,需要的朋友可以參考下2019-04-04
vue3實(shí)現(xiàn)在新標(biāo)簽中打開指定網(wǎng)址的方法
我希望點(diǎn)擊查看按鈕的時(shí)候,能夠在新的標(biāo)簽頁(yè)面打開這個(gè)文件的地址進(jìn)行預(yù)覽,該如何實(shí)現(xiàn)呢,下面小編給大家?guī)?lái)了基于vue3實(shí)現(xiàn)在新標(biāo)簽中打開指定的網(wǎng)址,感興趣的朋友跟隨小編一起看看吧2024-07-07

