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 相关文章推荐
ppk谈JavaScript style属性
Oct 10 Javascript
网页和浏览器兼容性问题汇总(draft1)
Jun 01 Javascript
广泛收集的jQuery拖放插件集合
Apr 09 Javascript
对jQuery的事件绑定的一些思考(补充)
Apr 20 Javascript
js用正则表达式来验证表单(比较齐全的资源)
Nov 17 Javascript
JS中判断JSON数据是否存在某字段的方法
Mar 07 Javascript
JS更改select内option属性的方法
Oct 14 Javascript
jquery实现全选、反选、获得所有选中的checkbox
Sep 13 Javascript
jQuery中队列queue()函数的实例教程
May 03 Javascript
详解Angular5路由传值方式及其相关问题
Apr 28 Javascript
JavaScript类的继承操作实例总结
Dec 20 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
Jul 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
Codeigniter通过SimpleXML将xml转换成对象的方法
2015/03/19 PHP
php结合redis高并发下发帖、发微博的实现方法
2016/12/15 PHP
php简单中奖算法(实例)
2017/08/15 PHP
JavaScript加密解密7种方法总结分析
2007/10/07 Javascript
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
用Jquery实现多级下拉框无刷新的联动
2010/12/22 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
PHP+jQuery+Ajax实现多图片上传效果
2015/03/14 Javascript
js实现简洁大方的二级下拉菜单效果代码
2015/09/01 Javascript
解决JS无法调用Controller问题的方法
2015/12/31 Javascript
简单解析JavaScript中的__proto__属性
2016/05/10 Javascript
jQuery3.0中的buildFragment私有函数详解
2016/08/16 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
2016/12/24 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
2017/10/25 Javascript
JS使用栈判断给定字符串是否是回文算法示例
2019/03/04 Javascript
关于vue组件事件属性穿透详解
2019/10/28 Javascript
[01:02:45]完美世界DOTA2联赛 LBZS vs Forest 第三场 11.07
2020/11/09 DOTA
Python命令行参数解析模块getopt使用实例
2015/04/13 Python
python基础教程项目四之新闻聚合
2018/04/02 Python
Python实现快速傅里叶变换的方法(FFT)
2018/07/21 Python
Python版名片管理系统
2018/11/30 Python
Centos部署django服务nginx+uwsgi的方法
2019/01/02 Python
Python通过VGG16模型实现图像风格转换操作详解
2020/01/16 Python
关于Python 中的时间处理包datetime和arrow的方法详解
2020/03/19 Python
python爬虫学习笔记之Beautifulsoup模块用法详解
2020/04/09 Python
使用CSS3实现一个3D相册效果实例
2016/12/03 HTML / CSS
英国第一的滑雪服装和装备零售商:Snow+Rock
2020/02/01 全球购物
威盛公司软件C++工程师笔试题面试题
2012/07/16 面试题
电子商务应届生自我鉴定
2014/01/13 职场文书
3.15消费者权益日活动总结
2015/02/09 职场文书
六一晚会主持词开场白
2015/05/28 职场文书
英雄儿女观后感
2015/06/09 职场文书
2016高考寄语集锦
2015/12/04 职场文书
Python实现打乒乓小游戏
2021/09/25 Python