1. 程式人生 > >pc端圖片與視訊放大預覽

pc端圖片與視訊放大預覽

我這邊藉助了element的dialog元件,進行封裝為自己的公共元件即可

正常頁面 圖片大小

<div v-if="JSON.stringify(authorizedInformation) !== '{}' && authorizedInformation.name != '無'">
     <div v-for="(item, value) in authorizedImg"><img :src="item.url" @click="large(authorizedImg, index)"/>
     </div>
</div>
authorizedImg這是一個物件,裡面的type 是對應是img 還是 video 還有一個屬性自然是伺服器路徑url了

video

<video :src="videoUrl"
       @click="large([{type: 'video', url: videoUrl}])">
</video>

點選事件 觸發 子元件

 large(img, index) { // 圖片放大
        if (img.length > 0) {
          this.imgList = img
          this.currentIndex = index
          this.$refs.img.open()
        }
      },
<cd-img ref="img"
        :imgList="imgList"
        :index="currentIndex"></cd-img>

其實不難,,主要是樣式問題,一般來說,放大里面加了可以左右按鈕檢視,video自動播放的功而已,直接貼程式碼  HTML

<template>
  <el-dialog
      custom-class="cd-img"
      :visible.sync="centerDialogVisible"
      :close-on-click-modal="false"
      width="90vw"
      @close="close"
      center>
    <div v-if="imgList[currentIndex] != undefined" class="img" :style="'background: url(' + imgList[currentIndex].url + ') center center / contain no-repeat'">
      <el-button type="text" @click="previous" style="left: -3%;" v-if="currentIndex>0">
        <dl-icon type="Left" size="1.5" color="#fff"></dl-icon>
      </el-button>
      <el-button type="text" @click="next" style="right: -3%;" v-if="currentIndex< this.imgList.length - 1">
        <dl-icon type="youjiantou1" size="2" color="#fff"></dl-icon>
      </el-button>
      <video width="100%" height="100%" controls
             ref="video"
             autoplay  loop
             v-if="imgList[currentIndex].type =='video'">
        <source :src="imgList[currentIndex].url" type="video/mp4">
        您的瀏覽器不支援 HTML5 video 標籤。
      </video>
    </div>
  </el-dialog>
</template>

CSS

<style lang="scss" rel="stylesheet/scss" scoped>
  .el-dialog__wrapper{
    overflow: hidden !important;
  }
  .cd-img.el-dialog{
    margin-top: 0 !important;
    padding: 0;
    background: transparent;
    box-shadow:0 0 0 transparent;
    .el-dialog__header{
      position: fixed;
      top:5%;
      right:2%;
      z-index: 9999;
      .el-dialog__headerbtn{
        .el-dialog__close {
          background-color: #7e848f;
          border-radius: 50%;
          color:#fff;
          padding: .25rem;
          font-size: 1.25rem;
        }
      }
    }
    .el-dialog__body{
          padding: 0;
          vertical-align: bottom;
        }
    .img{
      width:100%;
      height:100vh;
      position: relative;
      .el-button{
        position: absolute;
        top: 50%;
      }
    }
  }

</style>

JS

<script>
  import {Dialog, Button} from 'element-ui'
  import {DlIcon} from '[email protected]'
  export default {
    name: 'CdImg',
    components: {
      [Button.name]: Button,
      [Dialog.name]: Dialog,
      DlIcon
    },
    componentName: 'CdImg',
    props: {
      data: Object,
      color: {
        type: String,
        default: '#ff5a52'
      },
      imgList: Array,
      index: Number
    },
    data () {
      return {
        centerDialogVisible: false,
        currentIndex: 0
      }
    },
    watch: {
      index: function (newVal, oldVal) {
        this.currentIndex = newVal !== undefined ? newVal : 0
      }
    },
    methods: {
      open () {
        this.centerDialogVisible = true
        if (this.$refs.video !== undefined) {
          this.$refs.video.play()
        }
      },
      next () {
        this.currentIndex = this.currentIndex >= this.imgList.length - 1 ? this.currentIndex : this.currentIndex + 1
      },
      previous () {
        this.currentIndex = this.currentIndex <= 0 ? 0 : this.currentIndex - 1
      },
      close () {
        if (this.$refs.video !== undefined) {
          this.$refs.video.pause()
        }
      }
    },
    mounted () {
    }
  }
</script>

只是記錄一下,希望可以幫助到大家!

相關推薦

pc圖片視訊放大

我這邊藉助了element的dialog元件,進行封裝為自己的公共元件即可 正常頁面 圖片大小 <div v-if="JSON.stringify(authorizedInformation) !== '{}' && authorizedInform

css+jquery 實現圖片局部放大

leave init float this () 設計 背景 事件 relative 今天有時間開始動手,使用css+jqueryshi實現了圖片局部放大的組件,首先看看效果圖: 界面設計思路如下: 1.兩個div,左

微信小程式上傳圖片視訊

wxml <!-- 圖片預覽 --> <view class='preview-warp' wx:if="{{urls}}"> <image src='{{urls}}' /> </view> <view class="prew_video"

微信小程式圖片上傳放大刪除程式碼

效果: 一,下面是上傳圖片的效果 image.js程式碼: Page({ //選擇相簿或拍照 data: { imgs: [] }, //上傳圖片 chooseImg: function (e) { var that = this;

jQuery PC圖片,鼠標移上去查看大圖

utf-8 charset order inline logs 鼠標 w3c auto end <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR

小程序之點擊圖片放大

pos get 手機 bin tgt style col 本地圖片 sele 基本手機H5的開發,都會有圖片放大預覽的需求。下面我們看小程序是如何實現這一需求的: .wxml: <view class=‘footer‘ wx:for="{{imgArr}}">

微信小程式點選圖片放大

微信小程式點選圖片放大預覽使用到 wx.previewImage 介面,可以放大、上/下一張 上程式碼 wxml程式碼 <view class='content-img' wx:if="{{images}}" > <view wx:for="{{i

AJAX實現圖片上傳和(傳統ajaxjQuery AJAX;帶圖片的表單提交)

  一、通過Servlet3.0和傳統的AJAX實現圖片上傳和預覽          此方法也適用於帶圖片的表單提交         上傳時預覽圖片    

移動頁面字型圖片尺寸正常瀏覽器顯示小或者超小

在HTML的<head></head>中加入這句就可以正常顯示了<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1, user

Android多媒體技術(一)Camera實時視訊採集、拍照、JPEG圖片方向的處理

Camera實時視訊採集預覽、拍照、JPEG圖片方向的處理                          作者:     蔣東國    時間:  2017年1月12日 星期四  

圖片本地上傳

dao tom favicon 查看 else ada author chang dataurl 在IE裏面顯示的話,你可以用div直接顯示圖片,不通過img來添加SRC,這樣就不會有小圖標出現 例子: <div class="banner_up_pic" id="i

[轉]html之file標簽 --- 圖片上傳前 -- FileReader

disabled scrip ade java undefine 內容 .com 知識 nim 記得以前做網站時,曾經需要實現一個圖片上傳到服務器前,先預覽的功能。當時用html的<input type="file"/>標簽一直實現不了,最後舍棄了這個標簽,使用

html   上傳圖片,本頁

html 上傳圖片 本頁預覽 直接上代碼<!DOCTYPE html><html><head><meta charset="UTF-8"><title>圖片上傳預覽</title><script type="text/j

input file實現多選,限制文件上傳類型,圖片上傳前功能

ava eight tag HA ont accep 多選 red 異常 限制上傳類型 & 多選:① accept 屬性只能與 <input type="file" /> 配合使用。它規定能夠通過文件上傳進行提交的文件類型。 ② multiple 屬性規

Java web圖片上傳本地,無需後臺寫介面

前言 本篇部落格為轉載,由於目前很多上傳圖片預覽的外掛都需要Java後臺寫方法先獲取選擇圖片的介面,這個外掛不需要。 下載外掛地址 http://jquery.decadework.com/ 原作者部落格地址 http://zhouxiang.decadework.com

前端H5實現多圖片上傳並

多檔案上傳並預覽 利用input 的type='file" 可以實現檔案的上傳,不過只支援單個檔案上傳。只有給input加上multiple屬性才能實現多個檔案同時上傳。 好了,下面我們來實現一個簡單的多圖片上傳並預覽的例子 <div class="input-file-box

圖片上傳前演示

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>圖片上傳前預覽演示</title> <script src="http://cdn

用原生JS實現多張圖片上傳及功能(相容IE8)

最近需要做一個圖片上傳預覽的功能(相容IE8-11、chrome、firefox等瀏覽器),網上現有的檔案上傳元件(如webuploader)總是會遇到一些相容性問題。於是我參考了一些博文(連結找不到了⊙o⊙…),自己用原生JS寫了一個支援多張圖片上傳預覽功能的Demo 先通過最終效果看一下功能:

JQuery Ajax實現圖片上傳並

本文通過使用 JQuery 、AjaxUpload非同步頭像上傳並實現實時預覽** 效果預覽如下 如果上傳圖片後,專案圖片資料夾不能顯示上傳圖片,頁面也不能展示圖片,手動重新整理後就能看到,解決方法: 需要自己設定Myeclipse : Window---->Prefe

用viewpager實現圖片視訊混輪播

主要參考https://blog.csdn.net/chengxu_hou/article/details/78144607 不同之處在於我用的 JCVideoPlayer播放視訊,參考的博主用的是VideoView播放視訊的,主要邏輯與思路,參考上篇部落格博主。 程式碼其實不難理解:禁用了