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解析与序列化json数据(三)json的解析探讨
Feb 01 Javascript
Javascript实现返回上一页面并刷新的小例子
Dec 11 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
Dec 19 Javascript
jquery使用jxl插件导出excel示例
Apr 14 Javascript
js创建表单元素并使用submit进行提交
Aug 14 Javascript
JavaScript实现简单的星星评分效果
May 18 Javascript
H5实现仿flash效果的实现代码
Sep 29 Javascript
深入理解Vue 单向数据流的原理
Nov 09 Javascript
AngularJS基于http请求实现下载php生成的excel文件功能示例
Jan 23 Javascript
webpack v4 从dev到prd的方法
Apr 02 Javascript
Vue的生命周期操作示例
Sep 17 Javascript
js实现扫雷源代码
Nov 27 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
总集篇&特番节目先行播出!《SAO Alicization War of Underworld》第2季度TV动画4月25日放送!
2020/03/06 日漫
Win2003服务器安全加固设置--进一步提高服务器安全性
2007/05/23 PHP
献给php初学者(入门学习经验谈)
2010/10/12 PHP
php获取远程图片体积大小的实例
2013/11/12 PHP
Linux系统下PHP-FPM的安装和配置教程
2015/08/17 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
2017/07/10 PHP
可兼容php5与php7的cURL文件上传功能实例分析
2018/05/11 PHP
关于laravel 日志写入失败问题汇总
2019/10/17 PHP
jqgrid 编辑添加功能详细解析
2013/11/08 Javascript
IE8中动态创建script标签onload无效的解决方法
2014/12/22 Javascript
浅谈javascript 归并方法
2015/01/21 Javascript
JQuery实现防止退格键返回的方法
2015/02/12 Javascript
js获取元素的外链样式的简单实现方法
2016/06/06 Javascript
微信小程序 自己制作小组件实例详解
2016/12/22 Javascript
解决AngualrJS页面刷新导致异常显示问题
2017/04/20 Javascript
JavaScript实现简单的四则运算计算器完整实例
2017/04/28 Javascript
layui 优化button按钮和弹出框的方法
2018/08/15 Javascript
vue watch普通监听和深度监听实例详解(数组和对象)
2018/08/16 Javascript
IE9 elementUI文件上传的问题解决
2018/10/17 Javascript
vue中使用微信公众号js-sdk踩坑记录
2019/03/29 Javascript
nginx配置域名后的二级目录访问不同项目的配置操作
2020/11/06 Javascript
python实现可将字符转换成大写的tcp服务器实例
2015/04/29 Python
详解Python3中的Sequence type的使用
2015/08/01 Python
深入浅析Python中join 和 split详解(推荐)
2016/06/30 Python
查看python下OpenCV版本的方法
2018/08/03 Python
Python二进制文件读取并转换为浮点数详解
2019/06/25 Python
python找出列表中大于某个阈值的数据段示例
2019/11/24 Python
pycharm快捷键汇总
2020/02/14 Python
Python通过文本和图片生成词云图
2020/05/21 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
2020/05/27 Python
HTML5 使用 sessionStorage 进行页面传值的方法
2018/07/02 HTML / CSS
稀有和绝版书籍:Biblio.com
2017/02/02 全球购物
六一儿童节主持词
2014/03/21 职场文书
2014副局长群众路线对照检查材料思想汇报
2014/09/22 职场文书
保护动物的宣传语
2015/07/13 职场文书
分享3个非常实用的 Python 模块
2022/03/03 Python