超簡單?vue-photo-preview

忙?懶:懶怜械。
好久沒有更新東西了颅和。忙里偷閑,記錄點(diǎn)東西吧宫盔。

項(xiàng)目中需要圖片預(yù)覽功能融虽。
首先想到的是,使用element的Dialog展示灼芭,但是需要改彈窗的樣式有额,另外圖片的寬度不固定,高度也不固定彼绷,這樣做出來的效果比較難看巍佑。放棄了el-dialog。
然后想著網(wǎng)上有什么開源的組件寄悯,拿來直接用萤衰。總比自己造輪子強(qiáng)吧猜旬〈喽埃看了 vue-photo-viewer之類的,基本上都是輪播形式洒擦,并且不能陰式的調(diào)用椿争。不能滿足需求。放棄熟嫩。

自己動(dòng)手豐衣足食秦踪,還是自己搞吧。

總結(jié)下常見的展示樣式,然后自己搞了個(gè)椅邓,樣式如下:


image.png

首先封裝:

<template>
  <div class="photo_preview" v-if="dialogVisible">
    <div class="photo_preview_dialog">
      <div class="preview_header">
        <el-button type="text" @click="dialogClose(false)">關(guān) 閉</el-button>
      </div>
      <div class="preview_body" :style="{height:warpHeight+'px'}" @click="dialogClose(false)">
        <img :src="src" class="img"
             :style="mouseStyle"
             alt="" @click.stop="handleMouse">
      </div>
    </div>
  </div>
</template>
<script>

  export default {
    name: '',
    props: {
      src: {
        type: String,
        default: ''
      },
      visible: {
        type: Boolean,
        default: false
      }
    },
    data () {
      return {
        dialogVisible: false,
        warpHeight: '',
        mouseStyle: {
          cursor: 'zoom-in',
          height: '80%'
        },
        toogle: false
      }
    },
    created () {
      this.dialogVisible = this.visible
    },
    watch: {
      visible (val, oldval) {
        this.dialogVisible = val
        this.warpHeight = document.body.clientHeight - 100
      }
    },
    methods: {
      dialogClose (value) {
        this.$emit('close', value)
        Object.assign(this.$data, this.$options.data())
      },
      handleMouse () {
        let cursor = this.toogle ? 'zoom-in' : 'zoom-out'
        let height = this.toogle ? '80%' : '100%'
        this.toogle = !this.toogle

        this.mouseStyle = {
          cursor: cursor,
          height: height
        }
      }
    }
  }

</script>

<style lang="scss" scoped>
  .photo_preview {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    height: 100%;
    width: 100%;
    background: rgba(0, 0, 0, 0.9) !important;
    z-index: 999999;
    overflow: hidden;

    .photo_preview_dialog {
      position: relative;
      width: 100%;
      margin: 0 auto;
      height: 100%;

      .preview_header {
        height: 50px;
        padding: 0 20px;
        display: flex;
        justify-content: flex-end;
        align-items: center;

        .el-button {
          color: #ffffff;
        }
      }

      .preview_body {
        position: relative;
        margin: 0 auto;
        width: 100%;
        height: 100%;
        display: flex;
        justify-content: center;
        align-items: center;

        .img {
          height: 100%;
          width: auto;
          display: block;
        }
      }
    }

  }
</style>

調(diào)用 this.showDialog=true :


    <f-photo-preview 
      :src="imgUrl" 
      :visible="showDialog" 
      @close="e => showDialog = e">
    </f-photo-preview>

暫時(shí)功能可以滿足放大縮小圖片柠逞。

  • 默認(rèn)展示圖片大小的80%,放在圖片區(qū)域景馁,鼠標(biāo)變?yōu)榉糯箸R板壮,點(diǎn)擊圖片,可以放大至100%裁僧。這時(shí)鼠標(biāo)變?yōu)榭s小鏡个束,再次點(diǎn)擊可以改變圖片至80%慕购。

  • 點(diǎn)擊關(guān)閉按鈕聊疲,或者圖片以外的區(qū)域都可以關(guān)閉預(yù)覽界面。

  • 沒有增加鼠標(biāo)滾輪放大縮小的特效沪悲。

  • 不支持輪播功能(暫時(shí)沒有必要)获洲。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市殿如,隨后出現(xiàn)的幾起案子贡珊,更是在濱河造成了極大的恐慌,老刑警劉巖涉馁,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件门岔,死亡現(xiàn)場離奇詭異,居然都是意外死亡烤送,警方通過查閱死者的電腦和手機(jī)寒随,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來帮坚,“玉大人妻往,你說我怎么就攤上這事∈院停” “怎么了讯泣?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長阅悍。 經(jīng)常有香客問我好渠,道長,這世上最難降的妖魔是什么节视? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任拳锚,我火速辦了婚禮,結(jié)果婚禮上肴茄,老公的妹妹穿的比我還像新娘晌畅。我一直安慰自己,他們只是感情好寡痰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布抗楔。 她就那樣靜靜地躺著棋凳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪连躏。 梳的紋絲不亂的頭發(fā)上剩岳,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音入热,去河邊找鬼拍棕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛勺良,可吹牛的內(nèi)容都是我干的绰播。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼尚困,長吁一口氣:“原來是場噩夢啊……” “哼蠢箩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起事甜,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤谬泌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后逻谦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掌实,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年邦马,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贱鼻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡勇婴,死狀恐怖忱嘹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情耕渴,我是刑警寧澤拘悦,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站橱脸,受9級(jí)特大地震影響础米,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜添诉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一屁桑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧栏赴,春花似錦蘑斧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沟突。三九已至,卻和暖如春捕传,著一層夾襖步出監(jiān)牢的瞬間惠拭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來泰國打工庸论, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留职辅,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓聂示,卻偏偏與公主長得像域携,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子催什,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355