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插件
效果:
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
三: js用法,可以配置不采用src來源;

<!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>
在非Vscode項目的用法跟普通js用法一樣。
this.$nextTick(function () {
viewer = new Viewer(document.getElementById('dowebok'));
})
this.$nextTick(function () {
//viewer = new Viewer(document.getElementById('dowebok'), {
// viewed: function () {
// $("body").append($(".viewer-container"))
// }
//});
})
<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在彈出一張大圖。