Vue.js圖片預(yù)覽集合

起因:因公司業(yè)務(wù)需求彪置,需要用到一個(gè)圖片預(yù)覽功能,先在網(wǎng)上找了好多蝇恶,發(fā)現(xiàn)都不是太滿足要求所以拳魁,先貼出來(lái)有哪些

1.針對(duì)PC端的vue.js圖片預(yù)覽組件

安裝

npm install enlargeimg --save-dev
import enlargeimg from 'enlargeimg'; 

基礎(chǔ)用法

<enlargeImg :data="files"></enlargeImg> 
export default {
  name: 'hello',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App',
      files:[
    {
      path:'http://img4q.duitang.com/uploads/item/201311/01/20131101141757_tunaj.png'
    },
    {
      path:'http://img5.duitang.com/uploads/item/201503/22/20150322122457_EQ3NP.thumb.700_0.jpeg'
    },
    {
      path:'http://tupian.enterdesk.com/uploadfile/2013/1219/20131219053302481.jpg'
    },
  ]
    }
  },
}

注意事項(xiàng)

圖片地址為path
此組件主要針對(duì)PC端,手機(jī)端未測(cè)試撮弧。

2.移動(dòng)端Vue.js圖片預(yù)覽插件

vue-picture-preview
移動(dòng)端Vue.js圖片預(yù)覽插件 | Mobile-friendly picture file preview Vue.js plugin with horizontal nav and bottom title.

安裝

npm

npm install --save vue-picture-preview

使用

首先在項(xiàng)目的入口文件中引入, 調(diào)用 Vue.use 安裝潘懊。

import vuePicturePreview from 'vue-picture-preview'
Vue.use(vuePicturePreview)

在根組件添加 lg-preview 組件的位置

<!-- Vue root compoment template -->
<div id="app">
    <router-view></router-view>
    <lg-preview></lg-preview>
</div>

對(duì)于所有圖片都可以使用 v-preview 指令來(lái)綁定他們的預(yù)覽功能

<img v-for="img in imgs" v-preview="img" :src="img">
export default {
    data () {
        return {
            imgs: ['http://covteam.u.qiniudn.com/ka2.jpg', 'http://covteam.u.qiniudn.com/poster.png']
        }
    }
}

API

isTitleEnable: (boolean, optional) 設(shè)置 isTitleEnable="false" 將禁用水平導(dǎo)航. 默認(rèn)值: true.
isHorizontalNavEnable: (boolean, optional) 設(shè)置 isHorizontalNavEnable="false" 將禁用底部標(biāo)題. 默認(rèn)值: true.

3.Overview

Demo

vue-fancybox

Github

github

安裝

npm install vue-fancybox --save
import fancyBox from 'vue-fancybox';

基礎(chǔ)用法

<div class="list" v-for="(n, index) in imageList" :data-index="index">
  <img @click="open($event)" :src="n.url">
</div>
export default {
  data () {
    return {
      imageList: [
        { width: 900, height: 675, url: 'http://ocm0knkb1.bkt.clouddn.com/1-1.jpg' },
        { width: 601, height: 1024, url: 'http://ocm0knkb1.bkt.clouddn.com/1-2.jpg' },
        { width: 1024, height: 700, url: 'http://ocm0knkb1.bkt.clouddn.com/1-3.jpg' }
      ]
    }
  },
  methods: {
    open (e) {
      fancyBox(e.target, this.imageList);
    }
  }
}

選項(xiàng)

fancyBox Parameter:

Parameter Description
e.target 當(dāng)前點(diǎn)擊的圖片
this.imageList 所有的圖片列表

this.imageList Options:

Option Description Type
width 圖片的寬度 Number
height 圖片的高度 Number
url 圖片的的地址 String

例子

$ cd example
$ npm install
$ npm run dev

注意

需要postcss-salad配合

4.基于Vue.js, iview的全屏圖片、視頻瀏覽組件

先上效果圖

image.png

再上源代碼

<template>
    <transition name="fade">
        <div class="media-wrapper" v-if="seeMedia">
            <Button type="text" class="media-close" shape="circle" icon="close" @click="close"></Button>
            <div class="media-controller">
                <Button-group shape='circle'>
                    <Button size="large" type="ghost" icon="ios-skipbackward" @click.prevent="prev"></Button>
                    <Button size="large" type="ghost" icon="ios-skipforward" @click.prevent="next"></Button>
                </Button-group>
            </div>
            <div class="media-content">
                <div v-for="(item,index) in data" :key="index" :class="type(index)">
                    <img :src='item' v-if="isImg(item)" @click="toggle(index)">
                    <video :src="item" v-else controls="controls" @click="toggle(index)">
                    </video>
                </div>
            </div>
        </div>
    </transition>
</template>

<script>
export default {
    name: 'cjMedia',
    data: function () {
        return {
            nowIndex: 0,
            data: [
                '/src/test/media/movie.ogg', '/src/test/media/1.jpg', '/src/test/media/2.jpg'
            ]
        }
    },
    props: {
        // data:{
        //     type:Array
        // }
    },
    methods: {
        next() {
            if (this.nowIndex == this.data.length - 1) {
                this.$Message.warning('已到達(dá)最后一張');
            } else {
                this.nowIndex++;
            }
        },
        prev() {
            if (this.nowIndex == 0) {
                this.$Message.warning('已到達(dá)第一張');
            } else {
                this.nowIndex--;
            }
        },
        type(index) {
            if (index == this.nowIndex) {
                return 'media-center'
            } else if (index - this.nowIndex == 1) {
                return 'media-right'
            } else if (index - this.nowIndex == -1) {
                return 'media-left'
            } else {
                return 'media-hide'
            }
        },
        isImg(item) {
            var ext = item.substr(item.length - 3, 3);
            var flag = ext == ('jpg' || 'png' || 'gif') ? true : false;
            return flag;
        },
        toggle(index) {
            if (index - this.nowIndex == 1) {
                this.nowIndex++;
            } else if (index - this.nowIndex == -1) {
                this.nowIndex--;
            }
        },
        close() {
            this.$store.commit('SET_MEDIA', false);
            this.nowIndex = 0;
        }
    },
    computed: {
        seeMedia() {
            return this.$store.state.seeMedia;
        }
    }
}
</script>

<style lang="scss">
.media-wrapper {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.52);
    z-index: 1010;
    i {
        color: #fff
    }
    .media-controller {
        position: absolute;
        left: 50%;
        bottom: 30px;
        transform: translateX(-50%)
    }
    .media-close {
        position: absolute;
        right: 5px;
        top: 5px;
        i {
            font-size: 30px;
        }
    }
    .media-content {
        div {
            position: absolute;
            top: 50%; // background: green;
            color: #fff;
            text-align: center;
            font-size: 30px;
            transition: all .56s ease;
            img {
                max-width: 100%;
                max-height: 100%
            }
            video {
                width: 100%;
            }
        }
        .media-center {
            height: 50%;
            width: 40%;
            left: 50%;
            transform: translate(-50%, -50%);
            z-index: 1011;
        }
        .media-left,
        .media-right {
            width: 25%;
            height: 35%;
            filter: grayscale(90%);
        }
        .media-right {
            left: 100%;
            transform: translate(-105%, -50%);
        }
        .media-left {
            left: 0;
            transform: translate(5%, -50%);
        }
        .media-hide {
            height: 0;
            width: 0;
            left: 50%;
            z-index: 1010;
            opacity: 0;
        }
    }
}
</style>

data傳入媒體路徑即可贿衍。

總結(jié)

發(fā)現(xiàn)有的需要手動(dòng)設(shè)置圖片的大小授舟,并不是自適應(yīng)的,這是一個(gè)硬傷贸辈。
如果有好的圖片預(yù)覽作品歡迎貢獻(xiàn)释树。

青團(tuán)社招聘:

招聘崗位:高級(jí)前端開發(fā)工程師P5及以上

簡(jiǎn)歷投遞到:hr@qtshe.com || haochen@qtshe.com

職位描述:

1、建設(shè)工具擎淤、提煉組件奢啥、抽象框架,促進(jìn)前端工程化嘴拢、服務(wù)化桩盲,持續(xù)提升研發(fā)效率,保障線上產(chǎn)品質(zhì)量

2席吴、構(gòu)建H5/PC應(yīng)用基礎(chǔ)設(shè)施赌结,主導(dǎo)建設(shè)前端各種發(fā)布/監(jiān)控等平臺(tái),指導(dǎo)落實(shí)解決方案

3孝冒、持續(xù)優(yōu)化前端頁(yè)面性能姑曙,維護(hù)前端代碼規(guī)范,鉆研各種前沿技術(shù)和創(chuàng)新交互迈倍,增強(qiáng)用戶體驗(yàn)伤靠、開拓前端能力邊界

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子宴合,更是在濱河造成了極大的恐慌焕梅,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卦洽,死亡現(xiàn)場(chǎng)離奇詭異贞言,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)阀蒂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門该窗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蚤霞,你說(shuō)我怎么就攤上這事酗失。” “怎么了昧绣?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵规肴,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我夜畴,道長(zhǎng)拖刃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任贪绘,我火速辦了婚禮兑牡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘税灌。我一直安慰自己发绢,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布垄琐。 她就那樣靜靜地躺著边酒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪狸窘。 梳的紋絲不亂的頭發(fā)上墩朦,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音翻擒,去河邊找鬼氓涣。 笑死,一個(gè)胖子當(dāng)著我的面吹牛陋气,可吹牛的內(nèi)容都是我干的劳吠。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼巩趁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼痒玩!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蠢古,失蹤者是張志新(化名)和其女友劉穎奴曙,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體草讶,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡洽糟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了堕战。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坤溃。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖嘱丢,靈堂內(nèi)的尸體忽然破棺而出薪介,到底是詐尸還是另有隱情,我是刑警寧澤屿讽,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站吠裆,受9級(jí)特大地震影響伐谈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜试疙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一诵棵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧祝旷,春花似錦履澳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至吻谋,卻和暖如春忠蝗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背漓拾。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工阁最, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人骇两。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓速种,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親低千。 傳聞我的和親對(duì)象是個(gè)殘疾皇子配阵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 嘖嘖,貴圈真亂。 薛之謙紅了闸餐。從B站上百萬(wàn)播放量的“3饱亮、2、1舍沙,走”近上,到屢次登陸熱門微博,這個(gè)自稱已“過(guò)氣十年”的...
    微愉悅閱讀 476評(píng)論 0 0
  • 那年夏天拂铡,我在桂林的陽(yáng)朔壹无。嚴(yán)格來(lái)說(shuō),是剛從桂東北的一個(gè)邊陲小鎮(zhèn)南來(lái)北往迂回著去了這個(gè)名滿天下的地方感帅。我沒想把家鄉(xiāng)的...
    葉紫蘇閱讀 231評(píng)論 0 0
  • 昨天跟閨蜜們微信閑聊時(shí)斗锭,一個(gè)說(shuō)她大學(xué)時(shí)的下鋪要結(jié)婚了,她特別震驚失球,畢竟去年剛畢業(yè)岖是,還把自己當(dāng)寶寶,最后她來(lái)了句“都...
    Wendy曹閱讀 530評(píng)論 1 2
  • 最近開始學(xué)習(xí)JavaScript閉包,這個(gè)概念對(duì)我而言著實(shí)有點(diǎn)難懂黔牵,看了視頻理解也不是很深刻聪轿。在四處查找相關(guān)資料后...
    _李楊閱讀 342評(píng)論 0 0
  • 2015年畢業(yè)后我愛上了旅行我在亞布力滑雪舉步維艱我在無(wú)人區(qū)狂擺pose自拍我穿著紅裙在月牙泉光腳踏沙我在祁連山腳...
    薩利SL閱讀 878評(píng)論 9 15