vue-gallery的应用(图片预览)

打印 上一主题 下一主题

主题 1002|帖子 1002|积分 3006

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
vue-gallery是一款支持图片预览的前端插件,测试后是可以使用的,我们来先容一下如何使用vue-gallery
  参考网址:vue-gallery - npm
  第1步:安装vue-gallery
  1. npm install vue-gallery --save
复制代码
第2步:在vue文件中的导入
  1. <script>
  2. import VueGallery from 'vue-gallery';
  3. export default {
  4.     components: {VueGallery}
  5. }
  6. </script>
复制代码
第3步:测试案例,在单独的vue文件中应用
  1. <template>
  2.   <div>
  3.     <gallery :images="images" :index="index" @close="index = null"></gallery>
  4.     <div
  5.       class="image"
  6.       v-for="(image, imageIndex) in images"
  7.       :key="imageIndex"
  8.       @click="index = imageIndex"
  9.       :style="{ backgroundImage: 'url(' + image + ')', width: '300px', height: '200px' }"
  10.     ></div>
  11.   </div>
  12. </template>
  13. <script>
  14.   import VueGallery from 'vue-gallery';
  15.   
  16.   export default {
  17.     data: function () {
  18.       return {
  19.         images: [
  20.           'https://dummyimage.com/800/ffffff/000000',
  21.           'https://dummyimage.com/1600/ffffff/000000',
  22.           'https://dummyimage.com/1280/000000/ffffff',
  23.           'https://dummyimage.com/400/000000/ffffff',
  24.         ],
  25.         index: null
  26.       };
  27.     },
  28.     components: {
  29.       'gallery': VueGallery
  30.     },
  31.   }
  32. </script>
  33. <style scoped>
  34.   .image {
  35.     float: left;
  36.     background-size: cover;
  37.     background-repeat: no-repeat;
  38.     background-position: center center;
  39.     border: 1px solid #ebebeb;
  40.     margin: 5px;
  41.   }
  42. </style>
复制代码
下面代码是结合element-ui和el-image来使用vue-gallery。大家可以直接拿下面的代码测试,先截图,然后附上代码
  

  

  1. <template>
  2.   <div class="about">
  3.     <div>
  4.       <el-row>
  5.         <el-col :span="24">
  6.           <el-form :inline="true" :model="formInline" class="demo-form-inline">
  7.             <el-form-item label="名称">
  8.               <el-input v-model="formInline.user" placeholder="请输入电影名称"></el-input>
  9.             </el-form-item>
  10.             <el-form-item label="状态">
  11.               <el-select v-model="formInline.region" placeholder="请选择电影状态">
  12.                 <el-option label="待放映" value="0"></el-option>
  13.                 <el-option label="已上映" value="1"></el-option>
  14.                 <el-option label="停止上映" value="2"></el-option>
  15.               </el-select>
  16.             </el-form-item>
  17.             <el-form-item>
  18.               <el-button type="primary" @click="onSubmit">查询</el-button>
  19.               <el-button type="warning">重置</el-button>
  20.             </el-form-item>
  21.           </el-form>
  22.         </el-col>
  23.       </el-row>
  24.       <div style="height: 10px;"></div>
  25.       <div>
  26.         <el-row>
  27.           <el-col :span="24">
  28.             <el-button type="danger" @click="onSubmit">新增</el-button>
  29.             <el-button type="primary" @click="onSubmit">批量删除</el-button>
  30.           </el-col>
  31.         </el-row>
  32.       </div>
  33.       <div style="height: 10px;"></div>
  34.       <el-row>
  35.         <el-col :span="24">
  36.           <el-table :data="tableData" style="width: 100%" border>
  37.             <el-table-column type="selection" width="55"></el-table-column>
  38.             <el-table-column prop="name" label="中文名称" width="180"></el-table-column>
  39.             <el-table-column prop="english" label="英文名称" width="180" :show-overflow-tooltip="true"></el-table-column>
  40.             <el-table-column prop="date" label="上映时间" width="180"></el-table-column>
  41.             <el-table-column prop="times" label="电影时长" width="180"></el-table-column>
  42.             <el-table-column prop="category" label="电影类型" width="180">
  43.               <template slot-scope="scope">
  44.                 <el-tag type="danger" v-for="(item,index) in scope.row.category" :key="index" style="margin-right:5px;">{{ item }}</el-tag>
  45.               </template>
  46.             </el-table-column>
  47.             <el-table-column prop="language" label="语言类型" width="180"></el-table-column>
  48.             <el-table-column prop="desc" label="电影简介" width="180" :show-overflow-tooltip="true"></el-table-column>
  49.             <el-table-column prop="img" label="电影图片" width="180">
  50.               <template slot-scope="scope">
  51.                 <el-image style="width: 40px; height: 40px; border-radius: 5px;" fit="cover" :src="scope.row.img" @click="openGallery(0, scope.row.img)"></el-image>
  52.               </template>
  53.             </el-table-column>
  54.             <el-table-column prop="area" label="制作区域" width="180"></el-table-column>
  55.             <el-table-column prop="status" label="电影状态" width="180">
  56.               <template slot-scope="scope">
  57.                 <el-tag v-if="scope.row.status === '待放映'">{{ scope.row.status }}</el-tag>
  58.                 <el-tag v-else-if="scope.row.status === '已上映'" type="success">{{ scope.row.status }}</el-tag>
  59.                 <el-tag v-else type="danger">{{ scope.row.status }}</el-tag>
  60.               </template>
  61.             </el-table-column>
  62.             <el-table-column label="操作" fixed="right" width="100">
  63.               <template>
  64.                 <el-button size="small" type="text">编辑</el-button>
  65.                 <el-button size="small" type="text">删除</el-button>
  66.               </template>
  67.             </el-table-column>
  68.           </el-table>
  69.         </el-col>
  70.       </el-row>
  71.       <div style="height:10px;"></div>
  72.       <el-row>
  73.         <el-col :span="24" style="text-align: right;">
  74.           <el-pagination background layout="prev, pager, next" :total="1000"></el-pagination>
  75.         </el-col>
  76.       </el-row>
  77.     </div>
  78.     <!-- 图片预览画廊 -->
  79.     <vue-gallery :images="imageList" @close="currentImageIndex = null" :index="currentImageIndex" />
  80.   </div>
  81. </template>
  82. <script>
  83. import VueGallery from 'vue-gallery';
  84. export default {
  85.   name: 'about',
  86.   components: {
  87.     VueGallery
  88.   },
  89.   data() {
  90.     return {
  91.       formInline: {
  92.         user: '',
  93.         region: ''
  94.       },
  95.       tableData: [{
  96.         date: '2016-05-02',
  97.         name: '最后里程',
  98.         english: 'Last mile',
  99.         address: '上海市普陀区金沙江路 1518 弄',
  100.         desc: '11月,即将到来的全球最大购物活动之一“黑色星期五”前夜,发生了一起快递箱爆炸事件。很快,这起事件演变成了让整个日本陷入恐慌的连续爆炸事件。物流仓库的新任主管·舟渡艾蕾娜(满岛光 饰)和团队经理·梨本孔(冈田将生 饰)一同应对这场前所未有的危机! 是谁?为什么安放炸弹? 剩下的炸弹还有多少?现在在哪里? 物流是现代社会的生命线,如何才能阻止这个连续爆破事件?当谜题被解开时,这个世界所隐藏真面目将浮出水面。',
  101.         status: '待放映',
  102.         times: '120',
  103.         category: ['惊恐', '剧情'],
  104.         language: '中文',
  105.         area: '日本',
  106.         img: require('@/imgs/1730963678636.jpg')
  107.       }, {
  108.         date: '2016-05-04',
  109.         name: '爱情神话',
  110.         english: 'B for Busy',
  111.         address: '上海市普陀区金沙江路 1517 弄',
  112.         desc: '老白是一位来自上海的离异退休绘画教师,他爱上了一位同样离异的李小姐。他的前妻蓓蓓和他的一个学生的介入让整个事情变得复杂起来。在上海的弄堂里,一个男人和三个女人的故事徐徐拉开序幕。',
  113.         status: '已上映',
  114.         times: '110',
  115.         category: ['惊恐', '剧情', '科幻'],
  116.         language: '英文',
  117.         area: '中国大陆',
  118.         img: require('@/imgs/1730356252740.jpg')
  119.       }, {
  120.         date: '2016-05-01',
  121.         name: '伟大征程',
  122.         english: 'THE GREAT JOURNEY',
  123.         name: '王小虎',
  124.         address: '上海市普陀区金沙江路 1519 弄',
  125.         desc: '国内首部4K全景声大型情景史诗舞台艺术电影。',
  126.         status: '待放映',
  127.         times: '90',
  128.         category: ['戏剧', '剧情'],
  129.         language: '法语',
  130.         area: '法国',
  131.         img: require('@/imgs/1730356090428.jpg')
  132.       }, {
  133.         date: '2016-05-03',
  134.         name: '红色一号:冬日行动',
  135.         english: 'RED ONE',
  136.         address: '上海市普陀区金沙江路 1516 弄',
  137.         desc: '圣诞老人(J·K·西蒙斯 饰)被神秘绑架,北极安保主管(道恩·强森 饰)不得已与全世界最臭名昭著的赏金猎人(克里斯·埃文斯 饰)展开合作,他们寻遍全球、打遍天下,力求拯救圣诞节。',
  138.         status: '待放映',
  139.         times: '100',
  140.         category: ['惊恐', '剧情', '悬疑'],
  141.         language: '德语',
  142.         area: '德国',
  143.         img: require('@/imgs/1730355957307.jpg')
  144.       }],
  145.       imageList: [],
  146.       currentImageIndex: null, // 图片预览索引
  147.     }
  148.   },
  149.   methods: {
  150.     onSubmit() {
  151.       console.log('submit!');
  152.     },
  153.     openGallery(index, imgUrl) {
  154.       this.imageList = [] // 清空
  155.       this.imageList = [imgUrl]
  156.       this.currentImageIndex = index
  157.     }
  158.   }
  159. }
  160. </script>
  161. <style>
  162. .about {
  163.   text-align: left;
  164.   width: 90%;
  165.   margin: 0 auto;
  166. }
  167. .el-tooltip__popper {
  168.   max-width: 30%;
  169. }
  170. </style>
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

惊落一身雪

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表