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 相关文章推荐
几个javascript操作word的参考代码
Oct 26 Javascript
基于MooTools的很有创意的滚动条时钟动画
Nov 14 Javascript
jQuery在iframe中无法弹出对话框的解决方法
Jan 12 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
Jan 27 Javascript
JavaScript中的cacheStorage使用详解
Jul 29 Javascript
javascript弹性运动效果简单实现方法
Jan 08 Javascript
AngularJS 仿微信图片手势缩放的实例
Sep 28 Javascript
微信小程序支付之c#后台实现方法
Oct 19 Javascript
vue弹窗插件实战代码
Sep 08 Javascript
了解javascript中变量及函数的提升
May 27 Javascript
layui实现数据分页功能
Jul 27 Javascript
js判断密码强度的方法
Mar 18 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使用函数pathinfo()、parse_url()和basename()解析URL
2016/11/25 PHP
张孝祥JavaScript学习阶段性总结(2)--(X)HTML学习
2007/02/03 Javascript
Jquery.LazyLoad.js修正版下载,实现图片延迟加载插件
2011/03/12 Javascript
js 字符串转化成数字的代码
2011/06/29 Javascript
JavaScript词法作用域与调用对象深入理解
2012/11/29 Javascript
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
2014/08/14 Javascript
jQuery实现contains方法不区分大小写的方法
2015/02/13 Javascript
javascript中返回顶部按钮的实现
2015/05/05 Javascript
解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
2015/12/10 Javascript
JavaScript原生对象常用方法总结(推荐)
2016/05/13 Javascript
JavaScript知识点总结(六)之JavaScript判断变量数据类型
2016/05/31 Javascript
jQuery动态生成Bootstrap表格
2016/11/01 Javascript
JavaScript面向对象分层思维全面解析
2016/11/22 Javascript
浅析JavaScript中break、continue和return的区别
2016/11/30 Javascript
前端js弹出框组件使用方法
2020/08/24 Javascript
React组件refs的使用详解
2018/02/09 Javascript
vue cli 全面解析
2018/02/28 Javascript
微信小程序使用swiper组件实现类3D轮播图
2018/08/29 Javascript
bootstrap与pagehelper实现分页效果
2018/12/29 Javascript
vue-cli中使用高德地图的方法示例
2019/03/28 Javascript
Vue 递归多级菜单的实例代码
2019/05/05 Javascript
[04:37]DOTA2英雄梦之声Vol20发条
2014/06/20 DOTA
利用Python爬取可用的代理IP
2016/08/18 Python
Python实现计算圆周率π的值到任意位的方法示例
2018/05/08 Python
用python爬取租房网站信息的代码
2018/12/14 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
2019/09/26 Python
使用pyqt 实现重复打开多个相同界面
2019/12/13 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
详解Python中的编码问题(encoding与decode、str与bytes)
2020/09/30 Python
让你相见恨晚的十个Python骚操作
2020/11/18 Python
媒矿安全生产承诺书
2014/05/23 职场文书
关于读书的演讲稿600字
2014/08/27 职场文书
出生证明范本
2015/06/15 职场文书
新闻简讯格式及范文
2015/07/22 职场文书
2015年新农村建设指导员工作总结
2015/07/24 职场文书
2016年“6.26”禁毒宣传月系列活动总结
2016/04/05 职场文书