第一步:建立工作區間
首先,我們要位我們這個教程建立一個工作區間,建立如圖所示的文件層次結構,以及新建相應的空文件。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<link href="resources/css/style.css" rel="stylesheet" type="text/css" />
<link href="resources/js/imageCrop/jquery.imagecrop.css" rel="stylesheet" type="text/css" />
<script src="resources/js/imageCrop/jquery.imagecrop.js" type="text/javascript"></script>
</head>
<body>
<form id="form1" runat="server">
<div id="wrapper">
<h1>
Jquery Image Croping plug-in</h1>
<div class="image-decorator">
<img alt="Jquery Image Croping plug-in" height="360px" id="example" src="resources/images/example.JPG"
width="480" /></div><!--圖片修飾層-->
</div><!--#包裹層 -->
</form>
</body>
</html>
[/code]
style.css
* {
margin : 0;
outline : 0;
padding : 0;
}
/*初始化網頁樣式*/
body {
background-color : #ededed;
color : #646464;
font-family : 'Verdana', 'Geneva', sans-serif;
font-size : 12px;
text-shadow : 0 1px 0 #ffffff;
}
h1 {
font-size : 24px;
font-weight : normal;
margin : 0 0 10px 0;
}
div#wrapper {
margin : 25px 25px 25px 25px;
}
/*選擇id為wrapper的div*/
div.image-decorator {
-moz-border-radius : 5px 5px 5px 5px;/*針對火狐的瀏覽器的盒子的銳化*/
-moz-box-shadow : 0 0 6px #c8c8c8;/*針對火狐的瀏覽器的盒子的邊框陰影處理*/
-webkit-border-radius : 5px 5px 5px 5px;/*WebKit 是一個開源的瀏覽器引擎*/
-webkit-box-shadow : 0 0 6px #c8c8c8;
background-color : #ffffff;
border : 1px solid #c8c8c8;
border-radius : 5px 5px 5px 5px;
box-shadow : 0 0 6px #c8c8c8;
display : inline-block;/*將對象呈遞為內聯對象,但是對象的內容作為塊對象呈遞。旁邊的內聯對象會被呈遞在同一行內,允許空格。支持的瀏覽器有:Opera、Safari*/
height : 360px;
padding : 5px 5px 5px 5px;
width : 480px;
}
以上我們通過改變背景顏色和設置一些基本的樣式,使我們的頁面更具有可觀賞性。
第三步:寫一個基本的jQuery插件
讓我們開始寫一個基本的jQuery插件吧,在寫之前,如果讀者你從未有寫jQuery插件的經歷,建議先看看官方給出的插件教程(http://docs.jquery.com/Plugins/Authoring),這個是英文版的,中文版的沒找的,寫者打算翻譯,敬請期待。
打開/resources/js/imageCrop/jquery.imagecrop.js,并且加入如下圖所示的js代碼
//一般情況下請將所寫的插件代碼包含在‘(function($) { // 插件代碼在這里 }) (jQuery);'
(function($) {
$.imageCrop = function(object, customOptions) {};
$.fn.imageCrop = function (customOptions) {
//Iterate over each object
//對每一個對象進行迭代
this.each(function () {
var currentObject = this,
image = new Image();
//當對象加載完畢時,給予附加上imageCrop剪切的功能
image.onload = function () {
$.imageCrop(currentObject, customOptions);
};
//重設圖片的地址,因為有時被緩存的圖像不能被很快的加載
image.src = currentObject.src;
});
//除非你的插件返回一個確定的值,那么通常情況下要求函數返回‘this'關鍵字
//以此來保持編程的鏈式化
return this;
};
}) (jQuery);
我們剛剛擴展了jQuery,通過在jQuery.fn這個對象上新添加一個方法屬性。現在我們完成了對每一個對象進行迭代并當其加載完畢時為其附上imageCrop功能的基本插件。注意到被緩存的圖片可能不會被很快的下載,所以重置了它的圖片地址。
第四步:加入可定制的選擇
通過可以定制的選擇,使得對用戶來說有了更多的選擇以及使插件更加具有靈活性。(備注:以下代碼均按照順序來的)
//將插件的選項封裝在一個常量對象中,遠遠好于傳遞一長串參數來傳遞。
//這樣使得可以在插件默認的情況下進行擴展
var defaultOptions = {
allowMove: true,
allowResize: true,
allowSelect: true,
minSelect: [0, 0],
outlineOpacity: 0.5,
overlayOpacity: 0.5,
selectionPosition: [0, 0],
selectionWidth: 0,
selectionHeight: 0
};
// 將選項設為默認選項
var options = defaultOptions;
// 然后將其和客戶定制的選項合并
setOptions(customOptions);
以上我們通過定義一個包含默認選項的數組,然后通過使用setOption函數來實現將默認選項和定制選項進行合并。現在讓我們來寫這個合并函數體
// 將默認選項和客戶定制的選項合并
function setOptions(customOptions) {
options = $.extend(options, customOptions);
};
$.extend()函數實現了將兩個或者多個對象合并到第一個對象中的功能。
選項
下面的列表解釋了插件中的每一個選項
allowMove
主站蜘蛛池模板:
大冶市|
噶尔县|
冕宁县|
读书|
丰顺县|
敦化市|
安化县|
开阳县|
磐安县|
甘肃省|
建瓯市|
德保县|
光山县|
淄博市|
独山县|
扶沟县|
宜兰县|
都匀市|
搜索|
县级市|
凤凰县|
抚顺县|
新和县|
潍坊市|
烟台市|
长沙县|
兴仁县|
建阳市|
丹东市|
临城县|
祁门县|
项城市|
林口县|
乌拉特中旗|
武夷山市|
夏津县|
会理县|
平泉县|
图木舒克市|
邛崃市|
米脂县|