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正则验证邮箱的格式详细介绍
Nov 19 Javascript
DOM节点删除函数removeChild()用法实例
Jan 12 Javascript
Javascript基础教程之定义和调用函数
Jan 18 Javascript
JavaScript实现按照指定长度为数字前面补零输出的方法
Mar 19 Javascript
JavaScript的jQuery库插件的简要开发指南
Aug 12 Javascript
JavaScript实现页面跳转的几种常用方式
Nov 28 Javascript
详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
Sep 14 Javascript
jQuery grep()方法详解及实例代码
Oct 30 Javascript
JavaScript ES6常用基础知识总结
Feb 09 Javascript
AngularJS动态生成select下拉框的方法实例
Nov 17 Javascript
Vue+Bootstrap实现简易学生管理系统
Feb 09 Vue.js
Vue ECharts实现机舱座位选择展示功能
May 15 Vue.js
解决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统计文件大小,以GB、MB、KB、B输出
2011/05/29 PHP
yii操作session实例简介
2014/07/31 PHP
php采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
PHP时间和日期函数详解
2015/05/08 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
javascript firefox兼容ie的dom方法脚本
2008/05/18 Javascript
深入解析contentWindow, contentDocument
2013/07/04 Javascript
jQuery中innerHeight()方法用法实例
2015/01/19 Javascript
js实现二级菜单渐隐显示
2015/11/03 Javascript
jQuery绑定事件监听bind和移除事件监听unbind用法实例详解
2016/01/19 Javascript
jquery实现右侧栏菜单选择操作
2016/03/04 Javascript
基于Vue.js实现数字拼图游戏
2016/08/02 Javascript
js获取一组日期中最近连续的天数
2017/05/25 Javascript
Bootstrap 树控件使用经验分享(图文解说)
2017/11/06 Javascript
用React-Native+Mobx做一个迷你水果商城APP(附源码)
2017/12/25 Javascript
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
2017/12/28 Javascript
解决低版本的浏览器不支持es6的import问题
2018/03/09 Javascript
详解Vue中使用插槽(slot)、聚类插槽
2019/04/12 Javascript
layui table 表格上添加日期控件的两种方法
2019/09/28 Javascript
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
[00:32]2016完美“圣”典风云人物:Maybe宣传片
2016/12/05 DOTA
Windows8下安装Python的BeautifulSoup
2015/01/22 Python
python压缩文件夹内所有文件为zip文件的方法
2015/06/20 Python
python数据清洗系列之字符串处理详解
2017/02/12 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
2018/04/22 Python
美国女鞋品牌:naturalizer(娜然)
2016/08/01 全球购物
美国宠物商店:Wag.com
2016/10/25 全球购物
幼师自我鉴定范文
2013/10/01 职场文书
母婴店促销方案
2014/03/05 职场文书
2015年机关后勤工作总结
2015/05/26 职场文书
毕业实习证明范本
2015/06/16 职场文书
《角的度量》教学反思
2016/02/18 职场文书
2016年度优秀辅导员事迹材料
2016/02/26 职场文书
检讨书范文
2019/04/16 职场文书
2019七夕节祝福语36句,快来收藏吧
2019/08/06 职场文书
关于感恩老师的古诗句
2019/08/20 职场文书