DIV CSS 佈局教程網

jQuery實現在線文檔
編輯:JQuery常見問題     
點擊這裡查看效果

1.1.1 摘要

現在,許多網站都提供在線圖片和圖書閱讀的功能,這種方式比下載後閱讀來的直觀和人性化,要實現該功能涉及到點擊處理和圖片動態加載。

在接下來的博文中,我們將通過Javascript方式實現在線閱讀這一功能。

1.1.2 正文

Index頁面
首先,我們創建index.html頁面,它包含三個div元素分別是content、controls和doccontainer,其中controls用來顯示翻頁控件(前/後翻),而doccontainer用於顯示圖片,具體定義如下:
<!doctype html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>Online Document Viewer Demo</title>
<meta name="author" content="JK_Rush">
<link rel="stylesheet" type="text/css" media="all" href="css/style.css">
<script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="js/jquery.onlinedocview.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#controls").viewer();
});
</script>
</head>
<body>
<div>
<div id="Div1">
<h1>Online Document Viewer Demo</h1>
<div id="controls">
<div id="backpage" class="ios-arrow-left">Back</div>
<div id="forwardpage" class="ios-arrow-right">Forward</div>
</div>
<div id="doccontainer">
<img src="img/1.jpg" data-page="1" title="click for next page"></div>
</div><!-- END #content -->
</div><!-- END # -->
</body>



上面,我們定義了index.html頁面,引用了jQuery庫文件,在controls元素中包含backpage和forwardpage控件元素,它用於表示前或後翻頁的操作;而doccontainer中img的元素用於顯示文檔,每當用戶點擊前或後翻頁就會加載相應的內容到img元素中。

Javascript
接下來,我們需要實現在線文檔的翻頁功能和內容的動態加載,我們定義jQuery插件方法viewer(),當用戶點擊#backpage和#forwardpage控件元素時實現向前或後翻頁並且動態地加載相應的文檔,具體定義如下:

/*****
* The viewer function, when user click #forwardpage, #backpage or image directly,
* load the corrosponding image.
******/
$.fn.viewer = function(options) {
'use strict';

var opts = $.extend(true, {}, $.fn.viewer.defaults, options);

var $docImage = $('#doccontainer > img');

// Implements the image click function.
$docImage.on('click', function(e) {
e.preventDefault();
var currentId = $(this).attr('data-page'),
// Gets next page id.
nextImgId = parseInt(currentId) + 1,
nextImgSrc = opts.imgDirectory;

if (currentId == opts.lastDocNum) {
// If the last page, then do nothing
return false;
}

nextImgSrc += getFile(nextImgId);
$(this).attr('data-page', nextImgId);
$(this).attr('src', nextImgSrc);
})

// Implements #forwardpage and #backpage control click function.
$('#controls > #forwardpage, #controls > #backpage').on('click', function(e) {
e.preventDefault();

var currentId = $docImage.attr('data-page'),
nextImgSrc = opts.imgDirectory;

if ($(this).attr('id') == 'backpage') {
var nextImgId = parseInt(currentId) - 1;
} else if ($(this).attr('id') == 'forwardpage') {
var nextImgId = parseInt(currentId) + 1;
}

if ((currentId == opts.lastDocNum && $(this).attr('id') == 'forwardPage') ||
(currentId == 1 && $(this).attr('id') == 'backpage')) {
// If the last page or the first page, then do nothing.
return false;
}

// Loads corresponding image file.
nextImgSrc += getFile(nextImgId);
$docImage.attr('data-page', nextImgId);
$docImage.attr('src', nextImgSrc);

})

// Constructs the image file name.
function getFile(n) {
return n + '.' + opts.fileType;
}

};

上面,我們定義了jQuery方法viewer(),我們實現了#forwardpage、#backpage和#doccontainer的點擊事件處理方法,當用戶點擊#forwardpage、#backpage或#doccontainer動態地加載相應的文檔,我們通過修改img元素的src屬性來動態加載文檔,並且通過data-page屬性保存當前文檔的頁碼。


CSS樣式
最後,我們給#forwardpage和#backpage控件元素添加CSS樣式,具體化定義如下:
/*Back and Forward button style*/
.ios-arrow-left {
cursor:pointer;
display : block;
position:absolute;
z-index : 0;
left:50px;
top:50px;
height:30px;
width:auto;
padding: 0 10px 0 6px;
background-repeat:repeat-x;
background-size : 100% 30px;
background-position :0;
background-image : -webkit-linear-gradient(
bottom,
rgba(0,0,0,0) 0%,
rgba(0,0,0,0) 50%,
rgba(255,255,255,0.1) 50%,
rgba(255,255,255,0.3) 100%
);
border-radius: 5px;
border-bottom: 1px solid rgba(255,255,255,0.4);
box-shadow :0 -1px 1px rgba(0,0,0,0.2)inset,
0 1px 2px rgba(0,0,0,0.8)inset;
font-family : HelveticaNeue;
font-weight: 400;
font-size : 12px;
line-height : 30px;
text-align:center;
color:#fff;
text-shadow : 0px -1px 0px rgba(0,0,0,0.8);
}
.ios-arrow-left:before{
position:absolute;
content : ' ';
left:-8px;
top:3.5px;
height : 24px;
width: 24px;
z-index : 1;
background-repeat:repeat-x;
background-size : 20px 20px;
background-position :-1px -0.5px;
background-image :
-webkit-gradient(linear, left bottom, right top,
from(rgba(0,0,0,0)),
color-stop(0.5, rgba(0,0,0,0)),
color-stop(0.5, rgba(255,255,255,0.1)),
to(rgba(255,255,255,0.3)));
-webkit-transform : rotate(-45deg) skew(-10deg, -10deg);
border-top-right-radius : 10px;
border-top-left-radius :0px;
border-bottom-right-radius : 0px;
border-bottom-left-radius : 10px;
border-left : 1.5px solid rgba(255,255,255,0.4);
box-shadow : 1px 1px 1px rgba(0,0,0,0.4) inset,
-1px 1px 1px rgba(0,0,0,0.5) inset;
-webkit-mask-image :
-webkit-gradient(linear, left top, right bottom,
from(#000000),
color-stop(0.4,#000000),
color-stop(0.5, transparent),
to(transparent));
}

.ios-arrow-right {
cursor:pointer;
display : block;
position:absolute;
z-index : 0;
right:50px;
top:50px;
height:30px;
width:auto;
padding: 0 6px 0 10px;
background-repeat:repeat-x;
background-size : 100% 30px;
background-position :0;
background-image : -webkit-linear-gradient(
bottom,
rgba(0,0,0,0) 0%,
rgba(0,0,0,0) 50%,
rgba(255,255,255,0.1) 50%,
rgba(255,255,255,0.3) 100%
);
border-radius: 5px;
border-bottom: 1px solid rgba(255,255,255,0.4);
box-shadow :0 -1px 1px rgba(0,0,0,0.2)inset,
0 1px 2px rgba(0,0,0,0.8)inset;
font-family : HelveticaNeue;
font-weight: 400;
font-size : 12px;
line-height : 30px;
text-align:center;
color:#fff;
text-shadow : 0px -1px 0px rgba(0,0,0,0.8);
}
.ios-arrow-right:after{
position:absolute;
content : ' ';
right:-7.5px;
top:3px;
height : 24px;
width: 24px;
z-index : 1;
background-repeat:repeat-x;
background-size : 20px 20px;
background-position :-1px -0.5px;
background-image :
-webkit-gradient(linear, left bottom, right top,
from(rgba(255,255,255,0.3)),
color-stop(0.5, rgba(255,255,255,0.1)),
color-stop(0.5, rgba(0,0,0,0)),
to(rgba(0,0,0,0)));
-webkit-transform : rotate(135deg) skew(-10deg, -10deg);
border-top-right-radius : 10px;
border-top-left-radius :0px;
border-bottom-right-radius : 0px;
border-bottom-left-radius : 10px;
border-top : 1.5px solid rgba(255,255,255,0.4);
box-shadow : 1px 1px 1px rgba(0,0,0,0.5) inset,
-1px 1px 1px rgba(0,0,0,0.4) inset;
-webkit-mask-image :
-webkit-gradient(linear, left top, right bottom,
from(#000000),
color-stop(0.4,#000000),
color-stop(0.5, transparent),
to(transparent));
}

.ios-arrow-right,
.ios-arrow-right:after,
.ios-arrow-left,
.ios-arrow-left:before {
background-color: rgba(33,33,33,1);/*normalcolor*/
}

.ios-arrow-right:hover,
.ios-arrow-right:hover:after,
.ios-arrow-left:hover,
.ios-arrow-left:hover:before {
background-color: rgba(0,0,0,1);/*hovercolor*/
}



現在,我們已經實現了在線查看文檔的功能了,由於我們使用Javascript動態地加載文檔內容,所以無需刷新頁面,我們只需替換相應的文檔鏈接地址就好了,這樣不但減少了Http請求的次數減輕了網站的負載,而且無刷新用戶體驗更好。

1.1.3 總結

本文我們通過一個在線文檔查看程序,介紹了通過jQuery實現動態加載數據的功能,通過使用jQuery動態加載數據無需刷新頁面,只需替換相應的文檔鏈接地址就好了,並且減少了網站的Http請求次數,減輕網絡負載和加載延遲。
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved