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 相关文章推荐
Ajax一统天下之Dojo整合篇
Mar 24 Javascript
javascript 对表格的行和列都能加亮显示
Dec 26 Javascript
JS中的public和private对象,即static修饰符
Jan 18 Javascript
Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
Jun 24 Javascript
原生javascript实现隔行换色
Jan 04 Javascript
jQuery版本升级踩坑大全
Jan 12 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
Aug 01 Javascript
js实现导航栏中英文切换效果
Jan 16 Javascript
js正则表达式验证表单【完整版】
Mar 06 Javascript
React中this丢失的四种解决方法
Mar 12 Javascript
JavaScript实现模态对话框实例
Jan 13 Javascript
聊聊JS ES6中的解构
Apr 29 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正则表达式 /i, /is, /s, /isU等介绍
2014/10/23 PHP
php字符串过滤与替换小结
2015/01/26 PHP
javascript编程起步(第六课)
2007/01/10 Javascript
摘自百度的图片轮换效果代码
2007/11/19 Javascript
JAVASCRIPT函数作用域和提前声明 分享
2013/08/22 Javascript
js中style.display=&quot;&quot;无效的解决方法
2014/10/30 Javascript
PHP使用方法重载实现动态创建属性的get和set方法
2014/11/17 Javascript
60行js代码实现俄罗斯方块
2015/03/31 Javascript
JQuery中节点遍历方法实例
2015/05/18 Javascript
JS+CSS实现另类带提示效果的竖向导航菜单
2015/10/15 Javascript
jQuery实现的导航动画效果(附demo源码)
2016/04/01 Javascript
Bootstrap模态窗口源码解析
2017/02/08 Javascript
vue 2.0项目中如何引入element-ui详解
2017/09/06 Javascript
layDate日期控件使用方法详解
2018/11/15 Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
2019/03/05 Javascript
vue props对象validator自定义函数实例
2019/11/13 Javascript
[54:08]LGD女子刀塔学院 DOTA2炼金术士教学
2014/01/09 DOTA
[01:10]DOTA2英雄背景故事第四期之混沌法则混沌骑士
2020/07/16 DOTA
TensorFlow用expand_dim()来增加维度的方法
2018/07/26 Python
python实现简易动态时钟
2018/11/19 Python
Python设计模式之备忘录模式原理与用法详解
2019/01/15 Python
Django使用中间键实现csrf认证详解
2019/07/22 Python
基于Python和PyYAML读取yaml配置文件数据
2020/01/13 Python
Python 中的函数装饰器和闭包详解
2021/02/06 Python
详解css3 object-fit属性
2018/07/27 HTML / CSS
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
RetroStage德国:复古服装
2019/02/03 全球购物
美国电子产品购物网站:BuyDig.com
2020/06/17 全球购物
什么造成了Java里面的异常
2016/04/24 面试题
Lucene推荐的分页方式是什么?
2015/12/07 面试题
技校学生个人职业生涯规划范文
2014/03/03 职场文书
学历公证书范本
2014/04/09 职场文书
公司周年庆典策划方案
2014/05/17 职场文书
2015年元旦晚会活动总结(学生会)
2014/11/28 职场文书
工作总结之小学教师体育工作范文(3篇)
2019/10/07 职场文书
游戏《我的世界》澄清Xbox版暂无计划加入光追
2022/04/03 其他游戏