یک طراح وب

آدم ها را نمی توان فقط به یک یا چند موضوع ِ خاص، محدود ساخت. آدمی که این پشت نشسته است، از هر موضوعی می نویسد!

ساخت ِ یک نمایش اسلایدی ساده به‌وسیله‌ی جی‌کوئری

نوشته‌ی علیها در October 28, 2009 روی جی کوئری

نمایش اسلایدی یا همان SlideShow، برای نمایش تصاویر، به‌صورت متحرک و پشت ِ سرهم به‌کار می‌رود. احتمالا نمونه‌هایی‌ از نمایش اسلایدی را در سایت‌های مختلف مشاهده کرده‌اید.

به روش‌های مختلف می‌شود نمایش اسلایدی ساخت، اما جی‌کوئری کارمان را در این مورد بسیار آسان و حجم کدمان را مقادیری کم‌تر کرده است. در ادامه، روش ِ ایجاد ِ نمایش اسلایدی‌ای که ایشان ساخته‌اند را باهم مرور می‌کنیم ببینیم چه می‌شود :)

jquery slideshow

لازم هم نیست که بگویم کتاب‌خانه‌ی جی‌کوئری را ابتدا از این‌جا بگیرید و اگر نشد، می‌توانید آن را از این‌جا بگیرید؟

کدهای اچ‌تی‌ام‌ال ِ زیر را می‌نویسم:

<div id="slideshow">
    <img src="01.jpg" alt="Slideshow Image 1" class="active" />
    <img src="02.jpg" alt="Slideshow Image 2" />
    <img src="03.jpg" alt="Slideshow Image 2" />
</div>

نکته: حتما باید کلاس ِ اولین تصویر، active باشد.

دستورات ِ سی‌اس‌اس ِ زیر را هم اضافه می‌کنیم و آن را خوب هَم می‌زنیم :دی

#slideshow {
    position:relative;
    height:350px;
}
#slideshow IMG {
    position:absolute;
    top:0;
    left:0;
    z-index:8;
}
#slideshow IMG.active {
    z-index:10;
}
#slideshow IMG.last-active {
    z-index:9;
}

خب، حالا یک فانکشن با نام ِ slideswitch تعریف می‌کنیم و کدهای مربوط به افکت ِ نمایش اسلایدی‌مان را در آن می‌نویسیم:

function slideSwitch() {
    var $active = $('#slideshow IMG.active');

    if ( $active.length == 0 ) $active = $('#slideshow IMG:last');

    var $next =  $active.next().length ? $active.next()
        : $('#slideshow IMG:first');

    $active.addClass('last-active');

    $next.css({opacity: 0.0})
        .addClass('active')
        .animate({opacity: 1.0}, 1000, function() {
            $active.removeClass('active last-active');
        });
}

$(function() {
    setInterval( "slideSwitch()", 5000 );
});

مدت‌زمان توقف هرعکس بسته به مقداری‌ست که به setInterval() می‌دهید (خط 19). الان روی 5000 یعنی 5 ثانیه می‌باشد که باتوجه به نیاز خود می‌توانید آن را تغییر دهید.

حالا بفرمایید این‌جا و نتیجه را مشاهده کنید و این نمونه را کامل دریافت کنید:

download-zips

17 دیدگاه نوشته شده است! می توانید دیدگاه خود را بنویسید »

  • محسن در 09/10/28 گفت:

    آ … عرض كنم كه اونطور كه فهميدم همه ي عكس ها همون اول لود مي شن بعد يكي يكي زد ايندكس شون تغيير مي كنه و نشون داده ميشن . حالا اگه تعداد عكس ها زياد باشه روي سرعت احتمالن اثر ميزاره .
    خوب حالا راهي هست كه ابتدا يك تصوير لود بشه و بعد در بازه هاي مشخص شده آدرس جديدي جايگزين قبلي بشه و تصوير جديد لود بشه . آيا اين ميشه و اگه بشه تاثيري در بهتر شدن سرعت كار داره يا نه ؟ مرسي

  • علیرضا در 09/10/28 گفت:

    @محسن
    بله دقیقا همین‌طوره / تا به حال من هر اسلایدشوای که دیدم کارشون به همین صورت هست که همون ابتدا عکس‌ها رو لود می‌کنن. البته این حالتی که شما فرمودین هم به نظر امکان پذیره اما فکر کنم فرقی نداشته باشه و حتی سرعت کار پایین‌تر هم بیاد چون حتما یک دور نمایش باید صورت بگیره تا همه‌ی عکس‌ها لود بشن.

  • AmirTnT در 09/10/29 گفت:

    به به … عجب عکس های خوشگلی :دی اینا رو هم رو اسلاید می دن؟!!! :D

  • صندوقک در 09/10/29 گفت:

    خیلی جالب بود، منهم فکر می کنم اگر همه عکسها یکباره لود بشوند بهتره چون همون اول شاید کمی سرعت را پایین بیاره اما دیگه نیازی به صبر برای لود تک تک نیست

  • حدیث در 09/10/29 گفت:

    عالی بود.
    امکانش هست یاد بدید چی جوری مثل شما وقتی کد اچ تی ام ال یا پی اچ پی می زاریم اینجوری شماره خط ها هم بیاد کنارش …؟

  • رضا در 09/10/29 گفت:

    خیلی جالبه . مرسی فقط اگه لطف کنید و بگید چطور میشه به هر عکس یه لینک جداگانه داد ممنون میشم.
    چشم به راه جوابتان می مانم.

  • علیرضا در 09/10/29 گفت:

    @حدیث
    برای این‌کار پلاگین های مختلف هست که من از سینتکس های‌لایتر استفاده می‌کنم. برید این‌جا: http://alexgorbatchev.com/wiki/SyntaxHighlighter

    @رضا
    خواهش می‌کنم. اگر منظورتون این هست که خود عکس لینک بشه، کافیه هر عکس رو داخل تگ a بگذارید. اما اگر می‌خواهید مثلا زیر هر عکس یک لینک یا یک متن به عنوان توضیح بیاد، مثال زیر رو دریافت کنید، نمونه‌ی دومش در این مورد به شما کمک می‌کنه: http://jonraasch.com/downloads/simple-jquery-slideshow.zip

  • آرش در 09/10/30 گفت:

    عالی بود علیرضا جان !

  • رضا در 09/10/31 گفت:

    علیرضا جان کاش برای استفاده از تگ a یک مثال بزنید چون من زمانی که از این تگ استفاده میکنم و بیشتر از 2 تصویر در اسلاید دارم ، تصویر آخر به صورت بی موقع و بر روی بقیه اسلید ها نمایش داده میشه.
    از راهنمایی های پی در پی تون هم ممنون.

  • Ashk+An در 09/11/01 گفت:

    ایول داداش.
    چــــــــــــاکــــــــرتــــــــــــــــیـــــــــــــم!!!!!!!!!

  • بسیار متشکر. فقط ایکاش از PHP هم سر درمیاوردم!

  • solmaz در 09/11/04 گفت:

    با درود به دوست عزیز
    یه سوال از خدمتتان داشتم:من تازگیا ویندوز سیستمم را عوض کردم و از اون زمان سیستمم دی وی دی رو play نمیکنه و چنین پیغامی رو میدهد dvd decoder does not exist .
    به نظرتون مشکل از کجاست؟؟

  • ali در 09/11/18 گفت:

    بابا ای ول !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  • hadi در 09/11/23 گفت:

    @solmaz

    نسخه ی اصلی دیدگاه توسط solmazبا درود به دوست عزیز
    یه سوال از خدمتتان داشتم:من تازگیا ویندوز سیستمم را عوض کردم و از اون زمان سیستمم دی وی دی رو play نمیکنه و چنین پیغامی رو میدهد dvd decoder does not exist .
    به نظرتون مشکل از کجاست؟؟

    جسارت به کار بزرگاس ولی
    پاور دیو دی یا کدک دیوی نصب کنید درست میشه
    اینم یه نرم افزار کدک http://www.free-codecs.com/K_lite_codec_pack_download.htm
    البته خودمم میدونم جای پرسیدن و جواب دادن این سوال اینجا نبودا

  • امشب با این سایت آشنا شدم
    خیلی عالیه
    مخصوصا همین پست که کلیم دنبالش بودم
    خسته نباشید و مرسی.

  • عباس در 09/12/29 گفت:

    اگه یه کم دستکاری بشه سایدبار اضافه بشه فکر کنم ازش یه قالب فتوبلاگ قشنگ دربیاد… مرسی ،قشنگ بود :)

لطفا قبل از نوشتن دیدگاه خود، توجه داشته باشید که دیدگاه‌تان در رابطه با این پست باشد. در غیر این‌صورت می‌توانید از فرم تماس استفاده کنید. ممنون از توجه‌تان :)
my avatar

دیدگاه خود را ارسال کنید