Vue頭像處理方案小結
更新時間:2018年07月26日 17:00:46 作者:baozisss
這篇文章主要介紹了Vue頭像處理方案,實現(xiàn)思路主要是通過獲取后臺返回頭像url,判斷圖片寬度,高度。具體實例代碼大家參考下本文
個人思路
獲取后臺返回頭像url,判斷圖片寬度,高度。
如果寬度>高度, 使其高度填充盒子 兩邊留白。
如果寬度<高度,使得寬度填充盒子 上下留白。
效果圖:

缺陷:懶加載圖片 會出現(xiàn)閃爍

代碼實現(xiàn)
<template>
// 外面要給一個div并且限制寬度和高度,text-align center,overflow hidden
<div class="head">
// userInfoList.avatar 是后臺返回給我的頭像URL
<img v-lazy="userInfoList.avatar" id="userhead" alt=""/>
</div>
<div class="fl" v-for="(item, index) in matchList" :key="index">
<div class="heads">
<img v-lazy="item.adatar" class="headitem" alt=""/>
</div>
</div >
</template>
<script>
import { head, heads } from '@/assets/js/base' // 存放head,heads目錄引入
export default {
data(){
return {
listQuery:{
pg: 1,
ps: 10
}
},
methods:{
//獲取用戶詳情
getUserInfoList(){
getlist('mobile/user/pers/detail', funciton(res) {
if(data.code == ERR_OK){
_this.userInfoList = res.data
// 單個頭像處理,$nextTick處理去報 數據加載完成后 在進行圖
_this.$nextTick(function () {
head(res.data.avatar, 'userhead')
})
// 下拉加載多個頭像處理
res.data.item.forEach((item, index) => {
if(_this.listQuery.pg>1){ // 下拉加載時,頭像依然要進行處理
let count = (10*(_this.listQuery.pg -1) + index)
_this.$nextTick(function () {
heads(item.adatar, count, 'headitem')
})
}else{
_this.$nextTick(function () {
heads(item.adatar, index, 'headitem')
})
}
}
_this.listQuery.pg++
}
})
}
assets文件js下的base.js
// 單個頭像處理
export function head (objUrl, id) {
let _userhead = document.getElementById(id)
if(_userhead){
if(objUrl){
let img = new Image()
img.src = objUrl
img.onload = function () {
let _width = img.width
let _height = img.height
if(_width >= _height){
_userhead.style.width = '100%'
}else{
_userhead.style.height = '100%'
}
}
}else{
_userhead.style.width = '100%'
}
}
}
// 多個頭像處理
export function heads (objUrl, index, className) {
let _heads = document.getElementsByClassName(className)[index]
if(_heads){
if(objUrl){
let img = new Image()
img.src = objUrl
img.onload = function () {
let _width = img.width
let _height = img.height
if(_width >= _height){
_heads.style.width = '100%'
}else{
_heads.style.height = '100%'
}
}
}else{
_heads.style.width = '100%'
}
}
}
總結
以上所述是小編給大家介紹的Vue頭像處理方案小結,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
相關文章
vuex 如何動態(tài)引入 store modules
這篇文章主要介紹了vuex 如何動態(tài)引入 store modules,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
axios發(fā)送post請求springMVC接收不到參數的解決方法
下面小編就為大家分享一篇axios發(fā)送post請求springMVC接收不到參數的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03
Vue 中 toRefs() 和 toRef() 的使用方法
在 Vue 3 中,toRefs()可以將響應式對象的屬性轉換為可響應的 refs,主要用于在解構響應式對象時,保持屬性的響應性,這篇文章主要介紹了Vue 中 toRefs() 和 toRef() 的使用,需要的朋友可以參考下2025-01-01

