基于elementUI实现图片预览组件的示例代码


Posted in Javascript onMarch 31, 2019

这是一个简单的点击图片预览的组件

顺便记录一下写组件期间踩的vue中scope的坑~

基于elementUI实现图片预览组件的示例代码

从注册全局组件开始叭!

项目目录:

基于elementUI实现图片预览组件的示例代码

模仿elementUI目录结构,目录名是组件名,src中是组件源文件(或者js服务文件),文件目录下还有一个index.js用于同一管理src中的所有文件,导出并注册,这个组件我们只有一个vue文件件

先看index.js文件里有什么:

//引入了src下的vue组件文件
import starPicList from './src/star-pic-list';

/* istanbul ignore next */
starPicList.install = function(Vue) {
  //starPicList.name这就是后面可以使用的组件的名字(star-pic-list.vue文件里面定义的name),install是默认的一个方法
  Vue.component(starPicList.name, starPicList);
};

export default starPicList;

接下来介绍一下install方法:

Vue.use( plugin ):安装 Vue.js 插件。如果插件是一个对象,必须提供 install 方法。如果插件是一个函数,它会被作为 install 方法。install 方法将被作为 Vue 的参数调用。当 install 方法被同一个插件多次调用,插件将只会被安装一次。Vue.js 的插件应当有一个公开方法 install 。这个方法的第一个参数是 Vue 构造器,第二个参数是一个可选的选项对象:

导出starPicList组件后在管理组件js文件中引用,然后由这个统一管理js文件导出注册到全局即可:

基于elementUI实现图片预览组件的示例代码

基于elementUI实现图片预览组件的示例代码

好了,这些是废话!

组件的使用:

<!--图片列表形式,点击查看图片列表,点击显示上(下)一张-->
<template v-slot="scope">
  <star-pic-list :data="scope.row.pic" :max-show="2"/>
</template>

参数
data: 传入图片数组;
max-show: 一次最多显示几张图片

效果如下:

基于elementUI实现图片预览组件的示例代码

基于elementUI实现图片预览组件的示例代码

补充:vue组件开发中 style 添加scoped后,修改第三方组件样式没有效果问题:

在vue的开发中,我们通常和element-UI配合开发,就会遇到,在组件style中添加scoped后,element-ui中使用的子组件样式无法改变。

不用scoped,去掉这个属性,但是会污染全局样式,(可配合less 或者 scss(推荐scss),所有样式写在当前组件id或class下面)

组件源码:

<template>
  <div id="star-pic-vue">
    <template v-if="data">
      <img v-for="item in images"
         :src="item"
         id="contract_url"
         @click="enlargePic"/>
      <template v-if="isDialogShow">
    </template>
      <el-dialog
        :visible.sync="centerDialogVisible"
        modal
        close-on-click-modal
        custom-class="dialog"
        >
        <el-carousel :autoplay="false" arrow="always">
          <el-carousel-item v-for="item in data" :key="item">
            <img :src="item">
          </el-carousel-item>
        </el-carousel>
      </el-dialog>
    </template>
  </div>
</template>

<script>
  export default {
    name: "star-pic-list",
    props: ["data","maxShow"],
    data(){
      return{
        centerDialogVisible: false,
        showPic: '',
        isDialogShow: false,
        index: 0,
      }
    },
    computed: {
     images() {
       if (this.data instanceof Array && this.data.length > 2) {
         return this.data.splice(0,this.maxShow)
       } else {
         return this.data
       }
     }
    },
    methods: {
      // 放大图片
      enlargePic(e){
        this.isDialogShow = true;
        this.centerDialogVisible = true;
        this.showPic = this.data[0];
        console.log(this.images)
      },
    }
  }
</script>

<style lang="less">
#star-pic-vue{
  width: 200px;
  height: auto;
  display: flex;
  flex-wrap: wrap;
  img{
    width: 80px;
    height: 80px;
    margin: 4px;
  }
  .dialog {
    img{
      width: 100%;
      height: 100%;
      margin: 0;
    }
  }
  .el-carousel__item h3 {
    color: #475669;
    font-size: 18px;
    opacity: 0.75;
    line-height: 300px;
    margin: 0;
    height: 100%;
    width: 100%;
  }
  .el-dialog__header{
    display: none;
  }
  .el-dialog__body {
    padding: 0 !important;
    margin: 0 !important;
    height: 600px;
  }
  .el-carousel{
    height: 100%;
  }
  .el-carousel__container {
    height: 100%;
  }
}
</style>

更多组件点击这儿 --> link : github>components>star-pic-list

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery模拟按下回车实现代码
Sep 20 Javascript
js下获得客户端操作系统的函数代码(1:vista,2:windows7,3:2000,4:xp,5:2003,6:2008)
Oct 31 Javascript
JavaScript获取网页支持表单字符集的方法
Apr 02 Javascript
原生js实现addClass,removeClass,hasClass方法
Apr 27 Javascript
plupload+artdialog实现多平台上传文件
Jul 19 Javascript
jQuery简单实现iframe的高度根据页面内容自适应的方法
Aug 01 Javascript
Vue.js组件tabs实现选项卡切换效果
Dec 01 Javascript
Bootstrap组合上、下拉框简单实现代码
Mar 06 Javascript
angular-cli修改端口号【angular2】
Apr 19 Javascript
Vue.js学习记录之在元素与template中使用v-if指令实例
Jun 27 Javascript
解决easyui日期时间框ie的兼容的问题
Mar 01 Javascript
angularjs1.5 组件内用函数向外传值的实例
Sep 30 Javascript
微信小程序访问豆瓣电影api的实现方法
Mar 31 #Javascript
vue项目首屏打开速度慢的解决方法
Mar 31 #Javascript
jQuery事件blur()方法的使用实例讲解
Mar 30 #jQuery
Javascript实现一朵从含苞到绽放的玫瑰
Mar 30 #Javascript
使用post方法实现json往返传输数据的方法
Mar 30 #Javascript
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
Mar 30 #Javascript
微信公众平台获取access_token的方法步骤
Mar 29 #Javascript
You might like
索尼SONY ICF-7600A(W)电路分析
2021/03/01 无线电
用PHP控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
基于PHP 面向对象之成员方法详解
2013/05/04 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
完美解决在ThinkPHP控制器中命名空间的问题
2017/05/05 PHP
input、button的不同type值在ajax提交表单时导致的陷阱
2009/02/24 Javascript
基于jquery实现的鼠标滑过按钮改变背景图片
2011/07/15 Javascript
js的压缩及jquery压缩探讨(提高页面加载性能/保护劳动成果)
2013/01/29 Javascript
jquery实现可拖动DIV自定义保存到数据的实例
2013/11/20 Javascript
Javascript学习笔记之数组的遍历和 length 属性
2014/11/23 Javascript
高性能JavaScript DOM编程(1)
2015/08/11 Javascript
js+html5实现的自由落体运动效果代码
2016/01/28 Javascript
Bootstrap零基础入门教程(二)
2016/07/18 Javascript
JS弹出窗口的运用与技巧大全
2016/11/01 Javascript
Javascript基于jQuery UI实现选中区域拖拽效果
2016/11/25 Javascript
Canvas实现放射线动画效果
2017/02/15 Javascript
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
使用InstantClick.js让页面提前加载200ms
2017/09/12 Javascript
详解vue中使用express+fetch获取本地json文件
2017/10/10 Javascript
简单说说angular.json文件的使用
2018/10/29 Javascript
使用Vue.set()方法实现响应式修改数组数据步骤
2019/11/09 Javascript
vue-列表下详情的展开与折叠案例
2020/07/28 Javascript
python字符串连接的N种方式总结
2014/09/17 Python
跟老齐学Python之使用Python操作数据库(1)
2014/11/25 Python
python Django中models进行模糊查询的示例
2019/07/18 Python
解决python 虚拟环境删除包无法加载的问题
2020/07/13 Python
python+selenium爬取微博热搜存入Mysql的实现方法
2021/01/27 Python
网上常见的一份Linux面试题(多项选择部分)
2014/09/09 面试题
就业自我评价
2014/02/04 职场文书
党员党性分析材料
2014/02/17 职场文书
水污染治理工程专业自荐信
2014/06/21 职场文书
公司离职证明样本
2014/09/13 职场文书
2015民办小学年度工作总结
2015/05/26 职场文书
解决hive中导入text文件遇到的坑
2021/04/07 Python
厉害!这是Redis可视化工具最全的横向评测
2021/07/15 Redis
nginx刷新页面出现404解决方案(亲测有效)
2022/03/18 Servers