詳解vue更改頭像功能實(shí)現(xiàn)


如上圖所示:需要完成的功能是點(diǎn)擊更改頭像,獲取本地文件庫,選擇圖片后將原始圖片替換。這里我就直接用html文件引入vue來簡單實(shí)現(xiàn)在這功能,代碼如下:
HTML:
<div id="app">
<div class="item_bock head_p">
<div class="head_img">
<img :src="userInfo.avatar"/>
<--圖片地址動(dòng)態(tài)綁定-->
</div>
<div class="setting_right" @click.stop="uploadHeadImg">
<div class="caption">更改頭像</div>
</div>
<input type="file" accept="image/*" @change="handleFile" class="hiddenInput"/>
</div>
</div>
注意:
1.accept 屬性用于限制圖像的格式 如:(accept=”image/gif, image/jpeg”),accept=”image/*”表示不限制格式。
2.真正打開本地文件的是input,但這里是將其隱藏的。
JS:
var app = new Vue({
el: '#app',
data: {
userInfo: {
avatar: 'https://gss0.bdstatic.com/-4o3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike92%2C5%2C5%2C92%2C30/sign=62d46c39067b020818c437b303b099b6/d4628535e5dde7119c3d076aabefce1b9c1661ba.jpg'
}
// 初始圖片
},
methods: {
// 打開圖片上傳
uploadHeadImg: function () {
this.$el.querySelector('.hiddenInput').click()
},
// 將頭像顯示
handleFile: function (e) {
let $target = e.target || e.srcElement
let file = $target.files[0]
var reader = new FileReader()
reader.onload = (data) => {
let res = data.target || data.srcElement
this.userInfo.avatar = res.result
}
reader.readAsDataURL(file)
},
}
})
注意:
- 1.this.$el.querySelector('.hiddenInput') 是獲取文檔中 class=”hiddenInput” 的元素。
- 2.在打開文件夾選中圖片確認(rèn)后,執(zhí)行handleFile函數(shù)
- 3.let $target = e.target || e.srcElement 表示調(diào)用他的各種屬性,兩個(gè)的區(qū)別是:ie下支持e.srcElement,ff支持e.target。
- 4.由于手機(jī)上可以選擇多張圖片,所以let file = $target.files[0],表示取第一張圖。
- 5.var reader = new FileReader() FileReader 對(duì)象允許Web應(yīng)用程序異步讀取存儲(chǔ)在用戶計(jì)算機(jī)上的文件(或原始數(shù)據(jù)緩沖區(qū))的內(nèi)容,使用 File 或 Blob 對(duì)象指定要讀取的文件或數(shù)據(jù)。
- 6.onload 事件會(huì)在頁面或圖像加載完成后立即發(fā)生。
- 7.FileReader對(duì)象的readAsDataURL方法可以將讀取到的文件編碼成Data URL。
css:
.item_bock {
display: flex;
align-items: center;
justify-content: space-between;
height:94px;
width: 300px;
padding:0px 24px 0px 38px;
border-bottom: 1px solid #f7f7f7;
background: #fff;
}
.head_p {
height:132px;
}
.head_img{
height: 90px;
}
.head_img img{
width:90px;
height:90px;
border-radius:50px
}
.setting_right{
display: flex;
height: 37px;
justify-content: flex-end;
align-items: center;
}
.hiddenInput{
display: none;
}
.caption {
color: #8F8F8F;
font-size: 26px;
height: 37px;
}
這里只是將圖片顯示出來,并沒有保存起來,如果需要上傳或者保存,需要后臺(tái)接口配合。
以上所述是小編給大家介紹的vue更改頭像功能實(shí)現(xiàn)詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
vue中this.$message的實(shí)現(xiàn)過程詳解
Message在開發(fā)中的使用頻率很高,也算是Element-UI組件庫中比較簡單的,對(duì)于感興趣的朋友可以一起探討一下Message組件的實(shí)現(xiàn),本文詳細(xì)介紹了vue中this.$message的實(shí)現(xiàn)過程,感興趣的同學(xué)可以參考一下2023-04-04
基于vue實(shí)現(xiàn)分頁/翻頁組件paginator示例
本篇文章主要介紹了基于vue實(shí)現(xiàn)分頁/翻頁組件paginator示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03
vuex中數(shù)據(jù)持久化插件vuex-persistedstate使用詳解
這篇文章主要介紹了vuex中數(shù)據(jù)持久化插件vuex-persistedstate使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
uniapp小程序上傳文件webapi后端項(xiàng)目asp.net完整代碼
在uniapp中,實(shí)現(xiàn)文件上傳功能也變得非常簡單,下面這篇文章主要給大家介紹了關(guān)于uniapp小程序上傳文件webapi后端項(xiàng)目asp.net的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07
Laravel 如何在blade文件中使用Vue組件的示例代碼
這篇文章主要介紹了Laravel 如何在blade文件中使用Vue組件,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
vue中echarts自動(dòng)輪播tooltip問題
這篇文章主要介紹了vue中echarts自動(dòng)輪播tooltip問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10

