給網站添加圖片預覽 大小縮放功能

網站沒有圖片放大預覽功能,當自己在文章中插入大尺寸圖片時,在網頁看圖片細節會看不清,這種情況要不右鍵保存圖片到本地,要不復製圖片鏈接在新窗口打開才能看到圖片中細節。其實只需要小小的js插件即可實現圖片預覽效果。

今天介紹的插件Viewer.js,效果可嘗試下圖。點擊圖片預覽,鼠標滾輪或鍵盤方向鍵上下可放大縮小,左右方向鍵可切換圖片,ESC或點擊X鍵退出預覽,並且支持幻燈片播放。

實現方法:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<link rel="stylesheet" href="css/viewer.min.css">
		<script src="js/viewer.min.js"></script>
	</head>
	<body>
		<img src="./img/tibet-1.jpg" alt="圖片1">
		<img src="./img/tibet-2.jpg" alt="圖片2">
	</body>
	<script>
		// 這裏選創建瀏覽對象所在範圍的元素,body全通用:
		// 本頁採用的是document.getElementsByClassName("article-content")[0])
		// 即根據文章內容class獲取文章內容元素 然對其進行創建預覽對象
		var viewer = new Viewer(document.body);
	</script>
</html>

其實也就是簡單調用其js與css,然後利用new Viewer()調用即可。JQ版本調用爲:

$('#id').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 回調函數,具體查看演示

配置也很簡單,把參數配置寫在new Viewer第二個參數中即可:

 

new Viewer(document.body, {
	url: 'data-original',
	button: true,
	navbar: true
});

下載:點擊下載Viewer.js

項目示例:

//父頁面函數
/**
 * 初始化按鈕,利用datagrid的row來自動生成每行對一個的圖片的一個預覽按鈕
 * 因爲img元素在datagrid的formatter裏面,好像是不能觸發viewer.js的img的click事件,
 * 這裏採用每一個預覽按鈕在父頁面生成一個imp的隱藏按鈕,預覽按鈕的click事件綁定了這個img的click事件
 * @param rows
 * @returns
 */
function initImageView(rows){
	$('.image').remove();
	for(var i = 0;i < rows.length;i++){
		var row = rows[i];
		if(row.attachmentName && (row.attachmentName.indexOf("jpg") > -1 || row.attachmentName.indexOf("png") > -1 ) ){
			var appendStr = '<img src="'+row.downUri+'" title="圖片預覽" alt="圖片預覽" style="width: 20px; height: 15px;margin-top: 2px;display: none" id="image_'+row.id+'" class="image"/>';
			$(appendStr).appendTo($('body'));
		}
	}
	var viewer = new Viewer(document.body);
}

/**
 * 點擊預覽圖片
 * @param row
 * @returns
 */
function showImageView(row){
	var $rowImage = $('#image_'+row.id);
	if($rowImage.length == 0){
		var appendStr = '<img id="myImage" src="'+row.downUri+'" title="圖片預覽" alt="圖片預覽" style="width: 20px; height: 15px;margin-top: 2px;display: none" id="image_'+row.id+'" class="image"/>';
		$(appendStr).appendTo($('body'));
		$rowImage = $('#image_'+row.id);
	}
	$rowImage.trigger('click');//綁定了click事件
}


//子頁面
$({
  $("#xgzlDataGrid").datagrid({
    title: '',
    fit:true,
    method: "get",
    loadMsg:'正在加載附件列表,請稍待...',
	singleSelect:false,
    url: './searchData',
    idField: 'id',
	rownumbers:true,
	fitColumns:false,
    extEditing: true,   
    frozenColumns: [[
    ]],
    columns: [[
        { field: 'id', title: '', width: 50,editor:{type:'text'},halign:'center',align:'center',hidden:true},
        { field: 'attachmentName', title: '附件名稱', width: 220,tooltip:true,halign:'center',align:'lift'},
        { field: 'elementAttachment', title: '', width: 50,halign:'center',align:'center',hidden:true},
        { field: 'attachmentRequired', title: '操作', width: 180,halign:'center',align:'center',
        	formatter:function(index,row){
        		var optName = "上傳";
        		var str = "";
        		if(row.uri){
        			if(row.attachmentName.indexOf("jpg")>-1||row.attachmentName.indexOf("png")>-1){
        				str += "|<a class=\"l-btn l-btn-small l-btn-plain \" onclick=\"selectAttachment(this)\" title=\"附件預覽\"  data-options=\"plain: true,title:'附件預覽'\"><span class=\"l-btn-left l-btn-icon-left\"><span class=\"l-btn-text\">預覽</span><span class=\"l-btn-icon icon-hamburg-graphy\"></span></span></a>";
        			}
        		}
    			return str;
        	}
        }
       
    ]],topDrag:function(row){
    },
    onLoadSuccess:function(data)
    {
    	window.parent.initImageView(data.rows);
    },
});
})

/**
 * 圖片預覽
 * @param param
 */
function selectAttachment(param){
	var index = $(param).parents("tr").attr('datagrid-row-index');
	var row = $('#xgzlDataGrid').datagrid('getRowData',parseInt(index));
	window.parent.showImageView(row);
	return false;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章