عرض الصور المنزلقة أوتوماتيكيا باستخدام CSS و JQuery
| في: 1/8/2010 | التصنيف: تطوير مواقع, تطوير واجهة المستخدم | التعليقات: 5
ترجم بإذن من Soh Tanaka ترجمة: ميساء
Translated with the permission of Soh Tanaka Translated by: Maisa
مع إطلاق الآي باد وافتقاره إلى دعم الفلاش، ظهرت على السطح مناقشات عدة فيما يخص مستقبل الفلاش. مع أخذ هذا الأمر بالاعتبار، أعتقد أنه من الحكمة بناء برمجيات مصغرة widgets وبسيطة مثل عارض الصور المنزلقة باستخدام HTML/CSS/Javascript وترك التطبيقات الأكثر تفاعلية للفلاش عند الحاجة. سيكون للـ image slider المعتمد على لغة الـ HTML فوائده من حيث تحسين الظهور في محركات البحث SEO والتخلص برشاقة من المنزلقات التي تعتمد أو لا تعتمد على الجافا سكريبت.
المخطط السلكي باستخدام الـ HTML
ابدأ بإنشاء div يحوي جميع العناصر يدعى main_view وجزئين داخل الـ div باسم image_reel و paging. سيحتوي جزء الـ image_reel على الصور المنزلقة في حين سيحتوي جزء الـ paging على أدوات التحكم بالـ paging. ألق نظرة على الصورة في الأسفل للتوضيح.
<div class="main_view"> <div class="window"> <div class="image_reel"> <a href="#"><img src="reel_1.jpg" alt="" /></a> <a href="#"><img src="reel_2.jpg" alt="" /></a> <a href="#"><img src="reel_3.jpg" alt="" /></a> <a href="#"><img src="reel_4.jpg" alt="" /></a></div> </div> <div class="paging"> <a rel="1" href="#">1</a> <a rel="2" href="#">2</a> <a rel="3" href="#">3</a> <a rel="4" href="#">4</a></div> </div>
التنسيق باستخدام الـ CSS
ألق نظرة على التعليقات بالأسفل لتوضيح التنسيق.
/*--Main Container--*/
.main_view {
float: left;
position: relative;
}
/*--Window/Masking Styles--*/
.window {
height:286px; width: 790px;
overflow: hidden; /*--Hides anything outside of the set width/height--*/
position: relative;
}
.image_reel {
position: absolute;
top: 0; left: 0;
}
.image_reel img {float: left;}
/*--Paging Styles--*/
.paging {
position: absolute;
bottom: 40px; right: -7px;
width: 178px; height:47px;
z-index: 100; /*--Assures the paging stays on the top layer--*/
text-align: center;
line-height: 40px;
background: url(paging_bg2.png) no-repeat;
display: none; /*--Hidden by default, will be later shown with jQuery--*/
}
.paging a {
padding: 5px;
text-decoration: none;
color: #fff;
}
.paging a.active {
font-weight: bold;
background: #920000;
border: 1px solid #610000;
-moz-border-radius: 3px;
-khtml-border-radius: 3px;
-webkit-border-radius: 3px;
}
.paging a:hover {font-weight: bold;}الخطوة الثالثة: تجهيز الـ jQuery
للأشخاص الذين ليسوا معتادين على استخدام مكتبة الـ Jquery، تفقد موقعها أولا وخذ فكرة عن كيفية عمل هذه المكتبة. كما قمت بمشاركة بعض الحيل التي صادفتها والتي يمكنك الاطلاع عليها أيضا.
الخطوة الابتدائية- قم باستدعاء ملف الـ jQuery
يمكنك أن تختار بين تحميل ملف الـ jQuery من الموقع الخاص به أو بإمكانك استخدام هذا الملف الموجود على جوجل:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js" type="text/javascript"><!--mce:0--></script>
قم بفتح وسم <script> جديد بعد السطر الذي قمت فيه باستدعاء مكتبة الـ jQuery وابدأ شفرتك البرمجية باستخدام الحدث $(document).ready. يسمح هذا الحدث لكود الـ jQuery بالعمل في نفس اللحظة التي يصبح فيها الـ DOM جاهزا للمعالجة. الكود الذي ستقوم بكتابته في الخطوات القليلة التالية يجب أن يكون موجودا داخل الحدث التالي:
$(document).ready(function() {
//Code goes here
});الخطوة الرابعة: إطلاق الكود إلى الحياة- jQuery
يحتوي السكريبت التالي على تعليقات توضح أحداث الـ jQuery التي سيتم تنفيذها.
إعداد الـ Image Slider
إبدأ بإظهار الـ paging وتفعيل أول رابط. ومن ثم سنقوم بحساب وضبط عرض width جزء الـ image_reel وفقا لعدد المنزلقات الموجودة.
//Show the paging and activate its first link
$(".paging").show();
$(".paging a:first").addClass("active");
//Get size of the image, how many images there are, then determin the size of the image reel.
var imageWidth = $(".window").width();
var imageSum = $(".image_reel img").size();
var imageReelWidth = imageWidth * imageSum;
//Adjust the image reel to its new size
$(".image_reel").css({'width' : imageReelWidth});إعداد دالة الـ Slider والمؤقت Timer
نبدأ أولا بإنشاء الدالة الخاصة بحدث الانزلاق نفسه .(rotate) ومن ثم قم بإنشاء دالة أخرى (rotateSwitch) التي ستقوم بعمل الدوران وتكرار حدث الانزلاق (rotate).
//Paging and Slider Function
rotate = function(){
var triggerID = $active.attr("rel") - 1; //Get number of times to slide
var image_reelPosition = triggerID * imageWidth; //Determines the distance the image reel needs to slide
$(".paging a").removeClass('active'); //Remove all active class
$active.addClass('active'); //Add active class (the $active is declared in the rotateSwitch function)
//Slider Animation
$(".image_reel").animate({
left: -image_reelPosition
}, 500 );
};
//Rotation and Timing Event
rotateSwitch = function(){
play = setInterval(function(){ //Set timer - this will repeat itself every 7 seconds
$active = $('.paging a.active').next(); //Move to the next paging
if ( $active.length === 0) { //If paging reaches the end...
$active = $('.paging a:first'); //go back to first
}
rotate(); //Trigger the paging and slider function
}, 7000); //Timer speed in milliseconds (7 seconds)
};
rotateSwitch(); //Run function on launchاطلع على هذا الدرس والذي يشرح كيفية عمل المؤقت (setInterval)
أحداث الـ Click والـ Hover
في حال رغب المستخدم باستعراض المنزلق لفترة أطول من الزمن، فسنسمح للـ Slider بالتوقف في حال تم التمرير فوقه hover. أمر آخر يجب أن نأخذه في اعتبارنا هو القيام بتصفير المؤقت في كل مرة يتم فيها الضغط على الـ paging. سيمنع هذا التبديلات المفاجئة للمنزلق ويسمح باستخدام أكثر سلاسة للمستخدم.
//On Hover
$(".image_reel a").hover(function() {
clearInterval(play); //Stop the rotation
}, function() {
rotateSwitch(); //Resume rotation timer
});
//On Click
$(".paging a").click(function() {
$active = $(this); //Activate the clicked paging
//Reset Timer
clearInterval(play); //Stop the rotation
rotate(); //Trigger rotation immediately
rotateSwitch(); // Resume rotation timer
return false; //Prevent browser jump to link anchor
});الإلهام
فيما يلي بعض المواقع الالكترونية التي تستخدم تقنيات مماثلة، قم بالاطلاع عليها لمزيد من الإلهام!
كن على تواصل
تصنيفات
- أمن الإنترنت (2)
- التسويق الإلكتروني (2)
- بحث وتنقيب (3)
- تراجم (2)
- تصميم مواقع (2)
- تصميم واجهة المستخدم (1)
- تطوير مواقع (10)
- تطوير واجهة المستخدم (4)
- شعارات (7)
- عام (11)
- قابلية الإستخدام (1)
- محركات البحث (2)
- مقابلات (6)
- نظام إدارة المحتوى (2)













عدد التعليقات: 5
التعليق رقم: 1
aboaljod
في 01/08/2010، الساعة 20:10
السلام عليكم ورحمة الله وبركاته
شكرا على الشرح الجميل والشيق والبسيط
التعليق رقم: 2
احمد بدوي
في 02/08/2010، الساعة 00:54
رائع وجاء في وقتة ,, كنت ابحث عن شئ مشابه لذلك
شكراً جزيلاً
التعليق رقم: 3
أحمد السقاف
في 06/08/2010، الساعة 15:02
شكرا لك على هذا الشرح الرائع
ومتعطشين للمزيد !
التعليق رقم: 4
racbat
في 04/06/2011، الساعة 22:42
ماشاء الله عليك مبدع غير ممكن دروس لمتغيرات جافا سكريبت التي استعملت
مثل
setInterval
مثلا اين اجد دروس تنفعني
التعليق رقم: 5
علي غ
في 16/10/2011، الساعة 03:13
شكرا جزيلا طريقة حلوة في الشرح وأفادتني
عَلق على الموضوع