基于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 相关文章推荐
javascript跨域刷新实现代码
Jan 01 Javascript
今天是星期几的4种JS代码写法
Sep 17 Javascript
JQuery处理json与ajax返回JSON实例代码
Jan 03 Javascript
JS实现文字放大效果的方法
Mar 03 Javascript
js实现上传文件添加和删除文件选择框
Oct 24 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
Feb 22 Javascript
jquery仿苹果的时间/日期选择效果
Mar 08 Javascript
vue的基本用法与常见指令
Aug 15 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
Sep 20 Javascript
Ionic学习日记实现验证码倒计时
Feb 08 Javascript
vue实现微信获取用户信息的方法
Mar 21 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
Apr 22 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
javascript 小型动画组件与实现代码
2010/06/02 PHP
用PHP为SHOPEX增加日志功能代码
2010/07/02 PHP
PHP缓存机制Output Control详解
2014/07/14 PHP
WordPress中对访客评论功能的一些优化方法
2015/11/24 PHP
php验证身份证号码正确性的函数
2016/07/20 PHP
PHP如何实现阿里云短信sdk灵活应用在项目中的方法
2019/06/14 PHP
使Ext的Template可以解析二层的json数据的方法
2007/12/22 Javascript
Prototype Selector对象学习
2009/07/23 Javascript
几个javascript操作word的参考代码
2009/10/26 Javascript
asp.net下利用js实现返回上一页的实现方法小集
2009/11/24 Javascript
javascript innerHTML使用分析
2010/12/03 Javascript
javascript强大的日期函数代码分享
2013/09/04 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
2016/06/28 Javascript
初探JavaScript 面向对象(推荐)
2017/09/03 Javascript
微信小程序实现slideUp、slideDown滑动效果及点击空白隐藏功能示例
2018/12/11 Javascript
vue axios封装及API统一管理的方法
2019/04/18 Javascript
Vue中的循环及修改差值表达式的方法
2019/08/29 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
2019/12/26 Javascript
vue组件内部引入外部js文件的方法
2020/01/18 Javascript
[01:07:19]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第一场
2018/04/06 DOTA
Python中的CURL PycURL使用例子
2014/06/01 Python
python中getaddrinfo()基本用法实例分析
2015/06/28 Python
使用Django Form解决表单数据无法动态刷新的两种方法
2017/07/14 Python
python使用super()出现错误解决办法
2017/08/14 Python
Django如何使用第三方服务发送电子邮件
2019/08/14 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
简单了解Python字典copy与赋值的区别
2020/09/16 Python
英国领先的家庭时尚品牌:Peacocks
2018/01/11 全球购物
如何强制垃圾回收
2015/10/06 面试题
初中家长寄语
2014/04/02 职场文书
个人授权委托书范本
2014/04/03 职场文书
综合管理员岗位职责
2015/02/11 职场文书
2016教师读书思廉心得体会
2016/01/23 职场文书
MySQL中distinct和count(*)的使用方法比较
2021/05/26 MySQL
HTML基础详解(上)
2021/10/16 HTML / CSS