viewer 圖片點擊放大 用法匯總


 

A 不用viewer插件

1彈出框

https://www.cnblogs.com/web1/p/8989967.html

2表格中

https://www.jianshu.com/p/c17f4f62704c

3自己封裝vue組件

https://www.cnblogs.com/yesyes/p/6689082.html

 

一、用viewer插件

效果:

Viewer.js - 強大的JS/jQuery圖片查看器

1、引入文件

JS 版本:

<link rel="stylesheet" href="css/viewer.min.css">
<script src="js/viewer.min.js"></script>

jQuery 版本:

<link rel="stylesheet" href="css/viewer.min.css">
<script src="js/jquery.min.js"></script>
<script src="js/viewer.min.js"></script>

注意:JS 版本和 jQuery 版本名字雖然一樣,但代碼不一樣,不能通用,請到 github 上下載需要的版本。

2、HTML

<ul id="dowebok">
    <li><img src="img/tibet-1.jpg" alt="圖片1"></li>
    <li><img src="img/tibet-2.jpg" alt="圖片2"></li>
    <li><img src="img/tibet-3.jpg" alt="圖片3"></li>
</ul>

3、JavaScript

JS 版本:

var viewer = new Viewer(document.getElementById('dowebok'));

jQuery 版本:

$('#dowebok').viewer();

配置

名稱 類型 默認值 說明
inline 布爾值 false 啟用 inline 模式
button 布爾值 true 顯示右上角關閉按鈕(jQuery 版本無效)
navbar 布爾值/整型 true 顯示縮略圖導航
title 布爾值/整型 true 顯示當前圖片的標題(現實 alt 屬性及圖片尺寸)
toolbar 布爾值/整型 true 顯示工具欄
tooltip 布爾值 true 顯示縮放百分比
movable 布爾值 true 圖片是否可移動
zoomable 布爾值 true 圖片是否可縮放
rotatable 布爾值 true 圖片是否可旋轉
scalable 布爾值 true 圖片是否可翻轉
transition 布爾值 true 使用 CSS3 過度
fullscreen 布爾值 true 播放時是否全屏
keyboard 布爾值 true 是否支持鍵盤
interval 整型 5000 播放間隔,單位為毫秒
zoomRatio 浮點型 0.1 鼠標滾動時的縮放比例
minZoomRatio 浮點型 0.01 最小縮放比例
maxZoomRatio 數字 100 最大縮放比例
zIndex 數字 2015 設置圖片查看器 modal 模式時的 z-index
zIndexInline 數字 0 設置圖片查看器 inline 模式時的 z-index
url 字符串/函數 src 設置大圖片的 url
build 函數 null 回調函數,具體查看演示
built 函數 null 回調函數,具體查看演示
show 函數 null 回調函數,具體查看演示
shown 函數 null 回調函數,具體查看演示
hide 函數 null 回調函數,具體查看演示
hidden 函數 null 回調函數,具體查看演示
view 函數 null 回調函數,具體查看演示
viewed 函數 null 回調函數,具體查看演示

 

GitHub 地址:

 文檔:  https://github.com/fengyuanchen/viewerjs/blob/master/README.md#options

 

二:在vscode中用法

鏈接:https://www.jianshu.com/p/c7e7c1550f42

第一步安裝:

npm install v-viewer --save

第二步注冊調用:

import Viewer from 'v-viewer' import 'viewerjs/dist/viewer.css' 

第三步注冊:

Vue.use(Viewer); Viewer.setDefaults({ Options: { "inline": true, "button": true, "navbar": true, "title": true, "toolbar": true, "tooltip": true, "movable": true, "zoomable": true, "rotatable": true, "scalable": true, "transition": true, "fullscreen": true, "keyboard": true, "url": "data-source" } }); 

第四部使用:

<viewer :images="tupians"> <i-col span="4" v-for="item in tupians"> <div class="detailed"> <img :src="item.img" alt=""> </div> </i-col> </viewer> 數據部分 tupians:[ { img:tupian1, },{ img:tupian2, },{ img:tupian3, } ],
 

其他使用方法可以在github上查看viewerjs

 鏈接:  https://github.com/fengyuanchen/viewerjs

三: js用法,可以配置不采用src來源;
來源:https://blog.csdn.net/m0_37885651/article/details/81060806
相似:https://blog.csdn.net/archer119/article/details/78390203
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <link rel="stylesheet" type="text/css" href="js/viewer.css"/>
        <script src="js/viewer.js" type="text/javascript" charset="utf-8"></script>
        <style type="text/css">
            .img-list{
                clear: both;
            }
            .img-list li{
                width:200px;
                height: 200px;
                margin: 10px;
                float: left;
            }
            img{
                width: 100px;
                height: 100px;
                display: block;
            }
        </style>
    </head>
    <body>
        <ul id="images1" class="img-list">
            <li>
                <img src="img/QQ圖片20170920110853.png"/>
            </li>
            <li>
                <img src="img/QQ圖片20170920110853.png"/>
            </li>
            <li>
                <img src="img/QQ圖片20170920110853.png"/>
            </li>
            <li>
                <img src="img/QQ圖片20170920110853.png"/>
            </li>
        </ul>
        <!--二-->
        <ul id="image2" class="img-list">
            <li>
                <img src="img/QQ圖片20170920110853.png" data-imgurl="img/QQ圖片20170920110853.png"/>
            </li>
            <li>
                <img src="img/QQ圖片20170920110853.png" data-imgurl="img/QQ圖片20170920110853.png"/>
            </li>
            <li>
                <img src="img/QQ圖片20170920110853.png" data-imgurl="img/QQ圖片20170920110853.png"/>
            </li>
            <li>
                <img src="img/QQ圖片20170920110853.png" data-imgurl="img/QQ圖片20170920110853.png"/>
            </li>
        </ul>
    </body>
    <script type="text/javascript">
        window.onload = function(){
            var viewer = new Viewer(document.getElementById('images1'), {});
            //
            var viewer = new Viewer(document.getElementById('image2'), {
                url: 'data-imgurl'
            });
        }
    </script>
</html>
View Code

在非Vscode項目的用法跟普通js用法一樣。

四、直接使用vue和iview生成后的腳本開發,有很多坑!
 
0、項目中有各模塊切換和顯示隱藏的需要,iview tabs控制顯示隱藏只能用if,show無效;if意味着重新渲染;
所以每次渲染id都會刪除和重建,需要重新 new Viewer。
1、執行順序問題,解決:nextTick
2 viewer組件舊版本有一個bug,這個bug導致無法viewer無法彈出到body,在新版本中已經解決了這個問題
老版本解決方法:
1、去復制粘貼新的js和css腳本,然后。

this.$nextTick(function () {
   viewer = new Viewer(document.getElementById('dowebok'));
})

2、修改viewed方法,將 viewer-container樣式所在的對象附加給body

this.$nextTick(function () {
//viewer = new Viewer(document.getElementById('dowebok'), {
// viewed: function () {
// $("body").append($(".viewer-container"))
// }
//});
})

 
五  iview 輪播圖 +viewer
                                    <div id="dowebok_qm">

                                        <Carousel v-bind:radius-dot="carouselDot_qm" dots="outside" v-bind:height="imgHeight2+'px'" v-model="carouselValue_qm" style="text-align:center;">
                                            <div v-for="item in imgData_qm">
                                                <Carousel-Item>
                                                    <img v-bind:src="item.src" style="height:inherit;width:auto;cursor:pointer;" />
                                                    <div><span class="carousel-text"> {{item.textName}}</span></div>
                                                </Carousel-Item>
                                            </div>
                                        </Carousel>
                                    </div>

 

圖片名稱顯示的樣式

.carousel-text { 
position: relative;
bottom: 25px;
width: 100%;
font-size: 13px;
/*width: auto;*/ /*也可以*/
text-align: center;
color: white;
background-color: rgba(0,0,0,0.3);
}

vue的 methods中寫方法

 getImageListByPlantID: function (id) {

//根據id發送 ajax請求 從數據庫獲取該id對應的圖片數據列表

this.imgData_qm=[];

let srcPart = '/ProjectFrist/Api/image/'
for (i = 0, len = imageList.length; i < len; i++) {

   // 拼接對象

   that.imgData_qm.push({ src: srcPart + imageList[i].ImageID + part, name: imageList[i].FileName, textName: imageList[i].textName });

}

if (that.imgData_qm.length > 10) {
that.carouselDot_qm = true; //如果圖片數量大於10個則將輪播圖的 橫杠 換成 點。
}

vm.$nextTick(function () {
console.log("dowebok_qm 被點中");
viewer = new Viewer(document.getElementById('dowebok_qm'));
});

}

效果如下

點擊圖片,viewer在彈出一張大圖。

 

 

 

 

 
我們的一只腳已經邁入的富前端時代,前端越來越模塊化,各種開發包越來越強大!
先進生產工具和強大的生態,將大大提高開發效率,反之亦然!
微軟的MVC模式已經遠遠落后於,前后端完全分離才是未來!
以后選擇用vscode開發環境、各種前端包、vue全家桶+elementUI開發。
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM