عرض الصور المنزلقة أوتوماتيكيا باستخدام CSS و JQuery

الكاتب: ميساء | في: 1/8/2010 | التصنيف: تطوير مواقع, تطوير واجهة المستخدم | التعليقات: 5

ترجم بإذن من Soh Tanaka المقال الأصلي: اضغط هنا للمشاهدة ترجمة: ميساء

Translated with the permission of Soh Tanaka Original article: Click here to view it 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
});

إضغط هنا لمشاهدة المثال

الإلهام

فيما يلي بعض المواقع الالكترونية التي تستخدم تقنيات مماثلة، قم بالاطلاع عليها لمزيد من الإلهام!

ساعدنا على الإنتشار بمشاركتك هذه المقالة مع الآخرين

Bookmark and Share

مصطلحات ذات الصلة: ، ، ،

عن الكاتب

ميساء

قيد التحديث.

عدد التعليقات: 5

  1. التعليق رقم: 1 aboaljod في 01/08/2010، الساعة 20:10

    السلام عليكم ورحمة الله وبركاته

    شكرا على الشرح الجميل والشيق والبسيط

    رد على التعليق

  2. التعليق رقم: 2 احمد بدوي في 02/08/2010، الساعة 00:54

    رائع وجاء في وقتة ,, كنت ابحث عن شئ مشابه لذلك

    شكراً جزيلاً

    رد على التعليق

  3. التعليق رقم: 3 أحمد السقاف في 06/08/2010، الساعة 15:02

    شكرا لك على هذا الشرح الرائع
    ومتعطشين للمزيد !

    رد على التعليق

  4. التعليق رقم: 4 racbat في 04/06/2011، الساعة 22:42

    ماشاء الله عليك مبدع غير ممكن دروس لمتغيرات جافا سكريبت التي استعملت
    مثل
    setInterval
    مثلا اين اجد دروس تنفعني

    رد على التعليق

  5. التعليق رقم: 5 علي غ في 16/10/2011، الساعة 03:13

    شكرا جزيلا طريقة حلوة في الشرح وأفادتني

    رد على التعليق