基于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 相关文章推荐
科讯商业版中用到的ajax空间与分页函数
Sep 02 Javascript
js字符编码函数区别分析
Jun 05 Javascript
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
Jan 15 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
Sep 05 Javascript
js随机生成26个大小写字母
Feb 12 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
Oct 14 Javascript
javascript设置文本框光标的方法实例小结
Nov 04 Javascript
JS实现含有中文字符串的友好截取功能分析
Mar 13 Javascript
angular-cli修改端口号【angular2】
Apr 19 Javascript
javaScript 连接打印机,打印小票的实例
Dec 29 Javascript
vux-scroller实现移动端上拉加载功能过程解析
Oct 08 Javascript
微信小程序之左右布局的实现代码
Dec 13 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
PHP与MySQL开发的8个技巧小结
2010/12/17 PHP
ThinkPHP添加更新标签的方法
2014/12/05 PHP
Composer设置忽略版本匹配的方法
2016/04/27 PHP
PHP实现微信商户支付企业付款到零钱功能
2018/09/30 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
2019/10/17 PHP
Js 本页面传值实现代码
2009/05/17 Javascript
js改变img标签的src属性在IE下没反应的解决方法
2013/07/23 Javascript
js 定时器setTimeout无法调用局部变量的解决办法
2013/11/28 Javascript
js比较日期大小的方法
2015/05/12 Javascript
node模块机制与异步处理详解
2016/03/13 Javascript
JavaScript动态检验密码强度的实现方法
2016/11/09 Javascript
基于jQuery实现滚动刷新效果
2017/01/09 Javascript
jQuery的三种bind/One/Live/On事件绑定使用方法
2017/02/23 Javascript
Vue.2.0.5过渡效果使用技巧
2017/03/16 Javascript
原生JS+Canvas实现五子棋游戏实例
2017/06/19 Javascript
layui在form表单页面通过Validform加入简单验证的方法
2019/09/06 Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
2019/09/16 Javascript
微信分享invalid signature签名错误踩过的坑
2020/04/11 Javascript
[03:11]完美世界DOTA2联赛PWL DAY8集锦
2020/11/09 DOTA
python操作摄像头截图实现远程监控的例子
2014/03/25 Python
Python文件和目录操作详解
2015/02/08 Python
python使用BeautifulSoup分页网页中超链接的方法
2015/04/04 Python
在Python中测试访问同一数据的竞争条件的方法
2015/04/23 Python
python读文件保存到字典,修改字典并写入新文件的实例
2018/04/23 Python
python如何解析配置文件并应用到项目中
2019/06/27 Python
解决安装pyqt5之后无法打开spyder的问题
2019/12/13 Python
基于Python 中函数的 收集参数 机制
2019/12/21 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
2020/02/04 Python
python 轮询执行某函数的2种方式
2020/05/03 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
Python Tkinter图形工具使用方法及实例解析
2020/06/15 Python
自我鉴定范文
2013/11/10 职场文书
会计岗位描述
2014/02/22 职场文书
周年庆促销方案
2014/03/15 职场文书
师德承诺书
2015/01/20 职场文书
工艺技术员岗位职责
2015/02/04 职场文书