ساخت Image Slider سه بعدی با استفاده از jQuery در MVC
یکشنبه 19 شهریور 1396در این مقاله ما یک Image Slider سه بعدی Responsive در صفحات ASP.NET MVC و با استفاده از Adaptor خواهیم ساخت. هدف Adaptor ایجاد slider با استفاده از انیمیشن های دوبعدی یا سه بعدی با رابط کاربری ساده برای توسعه دهنده ها است.
گام اول:
یک پروژه ASP.NET MVC ایجاد و نام آن را JQueryImageSlider قرار دهید.
فایل های پلاگین مورد نظر را دانلود نمایید و تمام فولدر های css, img, js را به پروژه خود اضافه کنید.

گام دوم:
در _Layout.cshtml فایل های Adaptor 3D slider را اضافه کنید.

گام سوم:
اکنون یک مدل به نام ImageModel بسازید. این مدل شامل اطلاعات slider شما از database است.
public class Imagemodel
{
public int ImageID { get; set; }
public string ImageName { get; set; }
public string ImagePath { get; set; }
}
گام چهارم:
لیستی از تصاویر را از repository برای اتصال به slider بسازید.
List<Imagemodel> imageList = new List<Imagemodel>();
imageList.Add(new Imagemodel { ImageID = 1, ImageName = "Image 1", ImagePath = "/img/the-battle.jpg" });
imageList.Add(new Imagemodel { ImageID = 2, ImageName = "Image 2", ImagePath = "/img/hiding-the-map.jpg" });
imageList.Add(new Imagemodel { ImageID = 3, ImageName = "Image 3", ImagePath = "/img/theres-the-buoy.jpg" });
imageList.Add(new Imagemodel { ImageID = 4, ImageName = "Image 4", ImagePath = "/img/finding-the-key.jpg" });
imageList.Add(new Imagemodel { ImageID = 5, ImageName = "Image 5", ImagePath = "/img/lets-get-out-of-here.jpg" });
return View(imageList);
گام پنجم:
کد HTML زیر را به View مورد نظر اضافه نمایید.
<div id="page" class="row">
<section>
<div id="viewport">
<div id="box">
@foreach (var item in Model)
{
<figure class="slide">
<img src=@item.ImagePath class="img-responsive">
</figure>
}
</div>
</div>
<footer>
<nav class="slider-controls">
<a class="increment-control" href="#" id="prev" title="go to the next slide">« قبلی</a>
<a class="increment-control" href="#" id="next" title="go to the next slide">بعدی »</a>
<ul id="controls">
@{int index = 0;}
@foreach (var item in Model)
{
string cssClass = index.Equals(0) ? "goto-slide current" : "goto-slide";
<li><a class="@cssClass" href=" #" data-slideindex="@index"></a></li>
index = index + 1;
}
</ul>
</nav>
</footer>
</section>
<aside dir="rtl" id="effect-switcher">
<h2>نوع انیمیشن را انتخاب کنید</h2>
<ul id="effect-list">
<li><a href="#" class="effect current" data-fx="scrollVert3d">چرخش عمودی<span class="new-effect">3D</span></a></li>
<li><a href="#" class="effect" data-fx="scrollHorz3d">چرخش افقی<span class="new-effect">3D</span></a></li>
<li><a href="#" class="effect" data-fx="tile3d">چرخش کاشی <span class="new-effect">3D</span></a></li>
<li><a href="#" class="effect" data-fx="tile">چرخش کاشی</a></li>
<li><a href="#" class="effect" data-fx="scrollVert">چرخش عمودی</a></li>
<li><a href="#" class="effect" data-fx="scrollHorz">چرخش افقی</a></li>
<li><a href="#" class="effect" data-fx="blindLeft">حرکت به چپ</a></li>
<li><a href="#" class="effect" data-fx="blindDown">حرکت به پایین</a></li>
<li><a href="#" class="effect" data-fx="fade">محو شدن</a></li>
</ul>
</aside>
</div>
گام ششم:
script زیر را به View مورد نظر اضافه نمایید.
@section scripts{
<script type="text/javascript">
$(function () {
var switchIndicator = function ($c, $n, currIndex, nextIndex) {
$timeIndicator.stop().css('width', 0);
$indicators.removeClass('current').eq(nextIndex).addClass('current');
};
var startTimeIndicator = function () {
$timeIndicator.animate({ width: '100%' }, slideInterval);
};
var $box = $('#box')
, $indicators = $('.goto-slide')
, $effects = $('.effect')
, $timeIndicator = $('#time-indicator')
, slideInterval = 5000
, defaultOptions = {
speed: 1200
, autoScroll: true
, timeout: slideInterval
, next: '#next'
, prev: '#prev'
, pause: '#pause'
, onbefore: switchIndicator
, onafter: startTimeIndicator
}
, effectOptions = {
'blindLeft': { blindCount: 15 }
, 'blindDown': { blindCount: 15 }
, 'tile3d': { tileRows: 6, rowOffset: 80 }
, 'tile': { tileRows: 6, rowOffset: 80 }
};
$box.boxSlider(defaultOptions);
startTimeIndicator();
$('#controls').on('click', '.goto-slide', function (ev) {
$box.boxSlider('showSlide', $(this).data('slideindex'));
ev.preventDefault();
});
$('#effect-list').on('click', '.effect', function (ev) {
var $effect = $(this)
, fx = $effect.data('fx')
, extraOptions = effectOptions[fx];
$effects.removeClass('current');
$effect.addClass('current');
switchIndicator(null, null, 0, 0);
$box
.boxSlider('destroy')
.boxSlider($.extend({ effect: fx }, defaultOptions, extraOptions));
startTimeIndicator();
ev.preventDefault();
});
});
</script>
}
اگر در Slider خود نیاز به عنوان برای هر تصویر داشتید میتوانید از figcaption استفاده نمایید.
@foreach (var item in Model)
{
<figure class="slide">
<figcaption>برنامه نویسان</figcaption>
<img src=@item.ImagePath class="img-responsive">
</figure>
}
اکنون شما یک Slider سه بعدی و Responsive دارید که به خوبی در صفحات ASP.NET MVC کار میکند.


- ASP.net MVC
- 3k بازدید
- 5 تشکر