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的with 语句的使用方法
May 09 Javascript
js 代码优化点滴记录
Feb 19 Javascript
js从Cookies里面取值的简单实现
Jun 30 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
May 11 Javascript
如何动态加载外部Javascript文件
Dec 02 Javascript
基于javascript实现图片懒加载
Jan 05 Javascript
javascript中FOREACH数组方法使用示例
Mar 01 Javascript
微信小程序 图片绝对定位(背景图片)
Apr 05 Javascript
Vue 过滤器filters及基本用法
Dec 26 Javascript
jQuery选择器之基本过滤选择器用法实例分析
Feb 19 jQuery
浅谈javascript如何获取文件后缀名
Aug 07 Javascript
关于JavaScript轮播图的实现
Nov 20 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 常见郁闷问题答解
2006/11/25 PHP
php在线生成ico文件的代码
2007/10/09 PHP
Apache站点配置SSL强制跳转443
2021/03/09 Servers
无缝滚动改进版支持上下左右滚动(封装成函数)
2012/12/04 Javascript
js 利用image对象实现图片的预加载提高访问速度
2013/03/29 Javascript
查看大图功能代码jquery版
2013/11/05 Javascript
JS简单实现登陆验证附效果图
2013/11/19 Javascript
封装属于自己的JS组件
2016/01/27 Javascript
JavaScript中数组Array方法详解
2017/02/27 Javascript
Javascript ES6中对象类型Sets的介绍与使用详解
2017/07/17 Javascript
vue router-link传参以及参数的使用实例
2017/11/10 Javascript
谈谈vue中mixin的一点理解
2017/12/12 Javascript
解决jQuery使用append添加的元素事件无效的问题
2018/08/30 jQuery
Angular2中监听数据更新的方法
2018/08/31 Javascript
vue 解决异步数据更新问题
2019/10/29 Javascript
js面向对象方式实现拖拽效果
2021/03/03 Javascript
使用python实现rsa算法代码
2016/02/17 Python
Python:Scrapy框架中Item Pipeline组件使用详解
2017/12/27 Python
用Python将mysql数据导出成json的方法
2018/08/21 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
Python批量查询关键词微信指数实例方法
2019/06/27 Python
浅谈python3中input输入的使用
2019/08/02 Python
解决Tensorflow sess.run导致的内存溢出问题
2020/02/05 Python
python3检查字典传入函数键是否齐全的实例
2020/06/05 Python
基于Python3读写INI配置文件过程解析
2020/07/23 Python
纯CSS3编写的的精美动画进度条(无flash/无图像/无脚本/附源码)
2013/01/07 HTML / CSS
CSS3 RGBA色彩模式使用实例讲解
2016/04/26 HTML / CSS
《北京的春节》教学反思
2014/04/07 职场文书
环境卫生标语
2014/06/09 职场文书
离婚协议书范本(2014版)
2014/09/28 职场文书
村主任“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
2014年乡镇党建工作总结
2014/11/11 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书
2015年大学班主任工作总结
2015/04/30 职场文书
python接口测试返回数据为字典取值方式
2022/02/12 Python
MySQL事务的隔离级别详情
2022/07/15 MySQL