jQuery UI มี effect ที่น่าสนใจ สามารถนำมาประยุกต์ใช้ได้อย่างหลากหลาย เช่น กับระบบการเรียนการสอน ใช้กับร้านค้า ตะกร้าสินค้า แบบ ajax หรืออื่นๆ
สำหรับส่วนที่จะแนะนำในครั้งนี้ จะเป็นเพียงส่วนหนึ่ง คือ แบบ ไม่ต้องใช้งานกับ event show hide และ toggle
สามารถเข้าไปศึกษาเพิ่มเติม ทั้งหมดได้ด้วยตัวเองที่
docs.jquery.com/UI/Effects
docs.jquery.com/UI/Effects
ตัวอย่าง
โค้ดตัวอย่าง ทั้งหมด และคำอธิบายโค้ด
shake
bounce
highlight
pulsate
size
transfer
โค้ดตัวอย่าง ทั้งหมด และคำอธิบายโค้ด
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jquery ui effect part 1</title>
<style type="text/css">
*{
font-family:tahoma, "Microsoft Sans Serif", sans-serif, Verdana;
font-size:12px;
}
div.i_pink {
font-weight:bold;
color:#000;
margin: 0px;
width: 100px;
height: 40px;
background: pink;
border: 1px solid black;
position: relative;
}
div.i_yellow {
font-weight:bold;
color:#000;
margin: 0px;
width: 100px;
height: 40px;
background: yellow;
border: 1px solid black;
position: relative;
}
div.i_violet {
font-weight:bold;
color:#FFF;
margin: 0px;
width: 100px;
height: 40px;
background: violet;
border: 1px solid black;
position: relative;
}
div.i_blue {
font-weight:bold;
color:#FFF;
margin: 0px;
width: 100px;
height: 40px;
background: blue;
border: 1px solid black;
position: relative;
}
div.i_black {
font-weight:bold;
color:#FFF;
margin: 0px;
width: 100px;
height: 40px;
background: black;
border: 1px solid black;
position: relative;
}
div.i_green {
font-weight:bold;
color:#FFF;
margin: 0px;
width: 100px;
height: 40px;
background: green;
border: 1px solid black;
position: relative;
}
div.i_red {
margin-top: 20px;
width: 50px;
height: 30px;
background: red;
border: 1px solid black;
position: relative;
visibility:hidden;
}
/* css สำหรับการใช้งาน effect transfer */
.ui-effects-transfer {
border: 2px dotted black;
/* background: green;*/
}
</style>
</head>
<body>
<div style="margin:auto;width:75%;text-align:center;">
<div class="i_violet">shake</div>
<br />
<div class="i_blue">bounce</div>
<br />
<div class="i_black">highlight</div>
<br />
<div class="i_yellow">pulsate</div>
<br />
<div class="i_pink">size</div>
<br />
<div class="i_green">transfer</div>
<div class="i_red"></div>
</div>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js"></script>
<script type="text/javascript">
$(function(){
$("div.i_violet").click(function(){ // เมื่อคลิกที่ div class=i_violet
$(this).effect("shake", { // กำหนด effect ให้เป็น shake
direction:'right', // ทิศทาง up | down | left | right ถ้าไม่กำหนด จะเป็น left
distance:100, // ระยะห่าง หน่วยเป็น pixels ถ้าไม่กำหนด ค่าเริ่มต้นจะเป็น 20
times:3 // จำนวนครั้งที่กระทำ ถ้าไม่กำหนด ค่าเริ่มต้น เท่ากับ 3 ครั้ง
}, 300, // effect แต่ละครั้งใน 0.3 วินาที โดย 1000 เท่ากับ 1 วินาที
function(){ //
// alert("finished"); // กำหนดสิ่งที่ต้องการให้กระทำเมื่อ จบ effect
});
});
$("div.i_blue").click(function () { // เมื่อคลิกที่ div class=i_blue
$(this).effect("bounce",{ // กำหนด effect ให้เป็น bounce
direction:'up', // ทิศทาง up | down | left | right ถ้าไม่กำหนด จะเป็น up
distance:100, // ระยะห่าง หน่วยเป็น pixels ถ้าไม่กำหนด ค่าเริ่มต้นจะเป็น 20
mode:'show', // กำหนดใช้กับ กรณี show | hide ถ้าไม่กำหนด ค่าเริ่มต้นเป็น effect ที่ใช้งานอยู่
times:3 // จำนวนครั้งที่กระทำ ถ้าไม่กำหนด ค่าเริ่มต้น เท่ากับ 5 ครั้ง
}, 300, // effect แต่ละครั้งใน 0.3 วินาที โดย 1000 เท่ากับ 1 วินาที
function(){ //
// alert("finished"); // กำหนดสิ่งที่ต้องการให้กระทำเมื่อ จบ effect
});
});
$("div.i_black").mouseover(function () { // เมื่อเลื่อนเมาส์มาอยู่เหนือ div class=i_black
$(this).effect("highlight", { // กำหนด effect ให้เป็น highlight
color:'#00ff00', // กำหนดสีพื้นหลัง สำหรับ hilight
mode:'show' // กำหนดใช้กับ กรณี show | hide ถ้าไม่กำหนด ค่าเริ่มต้นเป็น show
}, 300, // ระยะเวลาที่แสดง effect 0.3 วินาที โดย 1000 เท่ากับ 1 วินาที
function(){ //
// alert("finished"); // กำหนดสิ่งที่ต้องการให้กระทำเมื่อ จบ effect
});
});
$("div.i_yellow").click(function(){ // เมื่อคลิกที่ div class=i_yellow
$(this).effect("pulsate", { // กำหนด effect ให้เป็น pulsate
mode:'show', // กำหนดใช้กับ กรณี show | hide ถ้าไม่กำหนด ค่าเริ่มต้นเป็น show
times:3 // จำนวนครั้งที่กระทำ ถ้าไม่กำหนด ค่าเริ่มต้น เท่ากับ 5 ครั้ง
}, 300, // effect แต่ละครั้งใน 0.3 วินาที โดย 1000 เท่ากับ 1 วินาที
function(){ //
// alert("finished"); // กำหนดสิ่งที่ต้องการให้กระทำเมื่อ จบ effect
});
});
$("div.i_pink").click(function(){ // เมื่อคลิกที่ div class=i_pink
$(this).effect("size", { // กำหนด effect ให้เป็น size
origin:['bottom','right'], // ทิศทางการปรับขนาด [ top | middle | bottom , left | center | right ]
from:{ // กำหนดขนาดเริ่มต้น ปกติไม่ต้องกำหนด
width:10,
height:10
},
to:{ // กำหนดปรับขนาดเป็น
width:200,
height:60
},
scale:'both' // both | box | content
}, 1000, // effect แต่ละครั้งใน 0.3 วินาที โดย 1000 เท่ากับ 1 วินาที
function(){ //
// alert("finished"); // กำหนดสิ่งที่ต้องการให้กระทำเมื่อ จบ effect
});
});
// ส่วนสุดท้าย เป็นการใช้ effect transfer แปลงร่าง จะเพิ่มโค้ดประยุกต์เข้าไป ให้เป็นตัวอย่าง
$("div.i_green").click(function () { // เมื่อคลิกที่ div class=i_green
$(this).css("visibility","hidden"); // กำหนดให้ div นี้ให้มองไม่เห็น
$(this).effect("transfer", { // กำหนด effect ให้เป็น transfer
className:'i_green', // กำหนด class ของ effect ให้คล้ายกับ div class=i_green
to: $("div.i_red") // ให้เปลี่ยนไปเป็น div class=i_red ที่ทำให้มองไม่เห็นไว้ ด้วย css
}, 300, // effect แต่ละครั้งใน 0.3 วินาที โดย 1000 เท่ากับ 1 วินาที
function(){
// alert("finished"); // กำหนดสิ่งที่ต้องการให้กระทำเมื่อ จบ effect
$("div.i_red").css("visibility","visible"); // แสดง div class=i_red
// ตั้งเวลาให้กลับไปเริ่มต้นใหม่ เพื่อแสดงอีกครั้ง
setTimeout(function(){
$("div.i_red").css("visibility","hidden");
$("div.i_green").css("visibility","visible");
},1000);
});
});
});
</script>
</body>
</html>
จากตัวอย่างการใช้งาน effect ใน jQuery UI ดังกล่าวข้างต้น เป็นการเขียนแบบ เต็มให้เห็นว่า มีอะไรบ้าง
ในแต่ละ effect การใช้งานจริง สามารถเขียนแบบย่อให้สั้นลงได้ ตามรูปแบบ ดังนี้
$(xxxx).effect("effect name",{option},time duration);
// เช่น
$("div.i_violet").effect("shake",{time:3},300);
// เป็นต้น