24/08/15 Открыта запись на обучение вёрстки для майбба - ссылка на тему

Избранные уроки Photoshop


Вверх
Вниз

COLOR MATE

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » COLOR MATE » Уроки CSS|JS » Делаем простой слайдер контента


Делаем простой слайдер контента

Сообщений 1 страница 2 из 2

1

Собственно, смысл простой - сделать слайдер, который менял бы содержимое по нажатию кнопок вправо и влево (на форумах их целая туча).

1. Кидаем непонятный яваскрипт в хтмл-низ и забываем о нём:

Код:
<script>
    $(document).ready(function(){
  var currentPosition = 0;
  var slideWidth = 560;
  var slides = $('.slide');
  var numberOfSlides = slides.length;

  // Remove scrollbar in JS
  $('#slidesContainer').css('overflow', 'hidden');

  // Wrap all .slides with #slideInner div
  slides
  .wrapAll('<div id="slideInner"></div>')
  // Float left to display horizontally, readjust .slides width
  .css({
    'float' : 'left',
    'width' : slideWidth
  });

  // Set #slideInner width equal to total width of all slides
  $('#slideInner').css('width', slideWidth * numberOfSlides);

  // Insert left and right arrow controls in the DOM
  $('#slideshow')
    .prepend('<span class="control" id="leftControl">Move left</span>')
    .append('<span class="control" id="rightControl">Move right</span>');

  // Hide left arrow control on first load
  manageControls(currentPosition);

  // Create event listeners for .controls clicks
  $('.control')
    .bind('click', function(){
    // Determine new position
      currentPosition = ($(this).attr('id')=='rightControl')
    ? currentPosition+1 : currentPosition-1;

      // Hide / show controls
      manageControls(currentPosition);
      // Move slideInner using margin-left
      $('#slideInner').animate({
        'marginLeft' : slideWidth*(-currentPosition)
      });
    });

  // manageControls: Hides and shows controls depending on currentPosition
  function manageControls(position){
    // Hide left arrow if position is first slide
    if(position==0){ $('#leftControl').hide() }
    else{ $('#leftControl').show() }
    // Hide right arrow if position is last slide
    if(position==numberOfSlides-1){ $('#rightControl').hide() }
    else{ $('#rightControl').show() }
    }
  });
</script>

2. В объявление или в хтмл-верх кидаем разметку слайдера:

Код:
<!-- Slideshow HTML -->
<div id="slideshow">
  <div id="slidesContainer">
    <div class="slide">
      содержимое
    </div>
    <div class="slide">
      содержимое
    </div>
  </div>
</div>
<!-- Slideshow HTML -->

Тут всё очень просто. Просто дублируете сколько вам нужно раз вот это вот:

<div class="slide">
      содержимое
    </div>

Заполняете чем угодно. Изображениями, текстом. Можете даже новые дивы туда поставить, в общем, всё, что душе угодно.

3. Во второе окно CSS, в самое начало, ставите это:

Код:
/* Слайдер */
#slideshow #slidesContainer {
  margin:0 auto;
  width:560px;
  height:263px;
  overflow:auto; /* allow scrollbar */
  position:absolute;
margin-top: 200px;
margin-left: 500px;
}
#slideshow #slidesContainer .slide {
  margin:0 auto;
  width:540px; /* reduce by 20 pixels to avoid horizontal scroll */
  height:263px;
}
.control {
  display:block;
  width:78px;
  height:56px;
  text-indent:-10000px;
  position:absolute;
  cursor: pointer;
}
#leftControl {
  margin-top:300px;
  margin-left:430px;
  background:transparent url(адрес) no-repeat 0 0;
}
#rightControl {
  margin-top:300px;
  margin-left:1000px;
  background:transparent url(адрес) no-repeat 0 0;
}
/* Конец слайдера */

Пояснения:

#slideshow #slidesContainer {
  margin:0 auto;
  width:560px; - ширина слайдера
  height:263px; - высота слайдера
  overflow:auto; /* allow scrollbar */
  position:absolute;
margin-top: 200px; - отступ сверху
margin-left: 500px; - отступ со стороны (чем выше значение, тем он правее будет)
}

Это общие настройки слайдера. Комментарии в цитате.

#slideshow #slidesContainer .slide {
  margin:0 auto;
  width:540px; /* reduce by 20 pixels to avoid horizontal scroll */
  height:263px;
}

Содержимое слайдера. Высота и ширина должны быть немного меньше высоты и ширины, которую вы установили для всего слайдера (чтобы содержимое не выходило за рамки, особенного это заметно при общим фоне или при рамке). Комментарии, думаю, излишни.

.control {
  display:block;
  width:78px; - ширина кнопок
  height:56px; - высота кнопок
  text-indent:-10000px;
  position:absolute;
  cursor: pointer;
}

Общие настройки для кнопок переключения (вправо, влево). Комментарии в цитате.

#leftControl { - левый переключатель
  margin-top:300px; - отступ сверху
  margin-left:430px; - отступ со стороны
  background:transparent url(адрес) no-repeat 0 0;
}
#rightControl { - правый переключатель
  margin-top:300px; - отступ сверху
  margin-left:1000px; - отступ со стороны
  background:transparent url(адрес) no-repeat 0 0;
}

По сути, это всё. При настройке не забывайте, что левый переключатель отображается лишь после нажатия на правый (самый первый слайд является самым левым, и первое переключение идёт на право). Можете вставлять как есть, поставив переключатели и заполнив чем-то контейнеры, и уже дальше настраивать под дизайн. Если будут какие-то проблемы, обращайтесь - исправим.

P.S. Кстати, в самом начале яваскрипта есть такая цифра, как "560". Это указывается ширина всего слайдера. Я не помню, реагирует ли это на то, что мы указываем в ксс, но, если не будет меняться ширина, просто синхронизируйте (укажите и там ширину) с настройками в ксс.

+4

2

morgan
здравствуйте. а можно как-нибудь сделать, чтобы слайдер всегда листался только вправо?

0


Вы здесь » COLOR MATE » Уроки CSS|JS » Делаем простой слайдер контента