Vue头像处理方案小结


Posted in Javascript onJuly 26, 2018

个人思路

获取后台返回头像url,判断图片宽度,高度。

如果宽度>高度, 使其高度填充盒子 两边留白。

如果宽度<高度,使得宽度填充盒子 上下留白。

效果图:

Vue头像处理方案小结

缺陷:懒加载图片 会出现闪烁

Vue头像处理方案小结

代码实现

<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头像处理方案小结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
学习js所必须要知道的一些
Mar 07 Javascript
基于JavaScript 类的使用详解
May 07 Javascript
jquery操作复选框(checkbox)的12个小技巧总结
Feb 04 Javascript
使用AngularJS制作一个简单的RSS阅读器的教程
Jun 18 Javascript
JavaScript判断是否是微信浏览器
Jun 13 Javascript
JS操作JSON方法总结(推荐)
Jun 14 Javascript
基于BootStrap栅格栏系统完成网站底部版权信息区
Dec 23 Javascript
Vue-Cli中自定义过滤器的实现代码
Aug 12 Javascript
Angularjs添加排序查询功能的实例代码
Oct 24 Javascript
vue加载完成后的回调函数方法
Sep 07 Javascript
vue-router路由模式详解(小结)
Aug 26 Javascript
vue Treeselect下拉树只能选择第N级元素实现代码
Aug 31 Javascript
解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等)
Jul 26 #Javascript
vue router 配置路由的方法
Jul 26 #Javascript
vue+webpack模拟后台数据的示例代码
Jul 26 #Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
Jul 26 #Javascript
vue父组件异步获取数据传给子组件的方法
Jul 26 #Javascript
JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
Jul 26 #Javascript
JavaScript设计模式之单例模式原理与用法实例分析
Jul 26 #Javascript
You might like
php警告Creating default object from empty value 问题的解决方法
2014/04/02 PHP
php中静态类与静态变量用法的区别分析
2015/01/15 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
2015/08/16 PHP
Laravel框架中自定义模板指令总结
2017/12/17 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
2020/01/07 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
通过javascript把图片转化为字符画
2013/10/24 Javascript
js检测离开或刷新页面时表单数据是否更改的方法
2016/08/02 Javascript
Bootstrap中glyphicons-halflings-regular.woff字体报404错notfound的解决方法
2017/01/19 Javascript
jQuery中$原理实例分析
2018/08/13 jQuery
mpvue全局引入sass文件的方法步骤
2019/03/06 Javascript
微信小程序常用赋值方法小结
2019/04/30 Javascript
中级前端工程师必须要掌握的27个JavaScript 技巧(干货总结)
2019/09/23 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
Python闭包实现计数器的方法
2015/05/05 Python
Python返回数组/List长度的实例
2018/06/23 Python
python中字典按键或键值排序的实现代码
2019/08/27 Python
英国知名的皮手套品牌:Dents
2016/11/13 全球购物
马来西亚网上购物:Youbeli
2018/03/30 全球购物
viagogo波兰票务平台:演唱会、体育比赛、戏剧门票
2018/04/23 全球购物
德国高端单身人士交友网站:ElitePartner
2018/12/02 全球购物
Charles & Colvard官网:美国莫桑石品牌
2019/06/05 全球购物
乌克兰数字设备、配件和智能技术的连锁商店:KTC
2020/08/18 全球购物
财务副总经理工作职责
2013/11/25 职场文书
给分销商的致歉信
2014/01/14 职场文书
工程技术员岗位职责
2014/03/02 职场文书
2014植树节活动总结
2014/03/11 职场文书
英文自荐信常用句子
2014/03/26 职场文书
中药学自荐信
2014/06/15 职场文书
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
外贸采购员岗位职责
2015/04/03 职场文书
教师思想工作总结2015
2015/05/13 职场文书
小学英语教学随笔
2015/08/14 职场文书
建筑工程挂靠协议书
2016/03/23 职场文书
教你怎么用Python处理excel实现自动化办公
2021/04/30 Python
Python调用腾讯API实现人脸身份证比对功能
2022/04/04 Python