Навигация с использованием jQuery

Эта навигация сделана с использованием библиотеки jQuery и плагинов jquery.scrollable.js и jquery.mousewheel.js. Плагин jquery.scrollable.js отвечает за главный эффект — прокрутку, а плагин jquery.mousewheel.js позволяет использовать колесико мышки для скроллинга.

Основные возможности:

  • горизонтальная и вертикальная прокрутка;
  • возможность установить количество видимых элементов;
  • создание кнопок навигации.

Рассмотрим простой пример.

HTML:

<div id="scrollable">   
    <div class="navi"></div>   
    <a class="prev"></a>       
    <div class="items">
        <a>1</a>  <a>2</a>  <a>3</a>  <a>4</a>  <a>5</a>
        <a>6</a>  <a>7</a>  <a>8</a>  <a>9</a>  <a>10</a>
        <a>11</a> <a>12</a> <a>13</a> <a>14</a> <a>15</a>      
    </div> 
    <a class="next"></a>   
</div>

JavaScript:

$("#scrollable").scrollable({items:'.items',horizontal:true});

Cписок всех параметров и их значений по умолчанию:

// выберите один или несколько контейнеров
$("#scrollable").scrollable({
    // дефолтное количество видимых эелементов 5
    size: 5,
   
    // по умолчания создается вертикалльный скроллинг
    horizontal:false,
   
    // вскорость прокрутки
    speed: 300,
   
    // селектор для кнопки назад
    prev:'.prev',   
   
    // селектор для кпопки вперед
    next:'.next',
   
    // селектор для верхней навигации (точки наверху)
    navi:'.navi',
   
    // имя элемента внутри верхней навигации (точки наверху)
    naviItem:'span',   
       
    // CSS класс для активного элемента верхней навигации
    activeClass:'active',
   
    // селектор элементов прокрутки
    items: '.items',
   
    // функция, которая вызывается при прокрутке элементов
    onSeek: null
});

Если список элементов слишком много, можно воспользоваться функцией пролистывания: это точки наверху. Щелкая по этим точкам, вы будете прокручивать список элементов сразу на несколько штук.

Рассмотрим функции скрипта, которые можно использовать для организации навигации

// выбираем контейнер элементов
var el = $("div.scrollable");

// шаг сперед
el.scrollable("next", [speed]);

// шаг назад
el.scrollable("prev", [speed]);

// страница вперед
el.scrollable("nextPage", [speed]);

// страница назад
el.scrollable("prevPage", [speed]);

// переход на конкретную страницу
el.scrollable("setPage", 1, [speed]);

// два шага вперед
el.scrollable("move", 2, [speed]);

// переход на конкретный элемент
el.scrollable("seekTo", 2, [speed]);

// переход к первому элементу
el.scrollable("begin", [speed]);

// переход к последенему элементу
el.scrollable("end", [speed]);

Многоуровневое CSS меню с использованием jQuery

Очень часто захожу на сайт Dynamic Drive, где можно найти множество полезных web-мастеру вещей. Например, как из вложенных неупорядоченных списков создать многоуровневое выпадающее меню с использованием визуальных эффектов. Посмотреть как это работает можно здесь.

Все что нужно для создания этого меню - библиотека jQuery, два файла (CSS и JavaScript) и две картинки

CSS и JavaScript:

<link rel="stylesheet" type="text/css" href="jqueryslidemenu.css" />
<!--[if lte IE 7]>
<style type="text/css">
html .jquerycssmenu{height: 1%;} /* Holly Hack for IE7 and below */
</style>
<![endif]-->
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jqueryslidemenu.js"></script>

HTML:

<div id="myslidemenu" class="jqueryslidemenu">
<ul>
<li><a href="http://www.dynamicdrive.com">Item 1</a></li>
<li><a href="#">Item 2</a></li>
<li><a href="#">Folder 1</a>
  <ul>
  <li><a href="#">Sub Item 1.1</a></li>
  <li><a href="#">Sub Item 1.2</a></li>
  <li><a href="#">Sub Item 1.3</a></li>
  <li><a href="#">Sub Item 1.4</a></li>
  </ul>
</li>
<li><a href="#">Item 3</a></li>
<li><a href="#">Folder 2</a>
  <ul>
  <li><a href="#">Sub Item 2.1</a></li>
  <li><a href="#">Folder 2.1</a>
    <ul>
    <li><a href="#">Sub Item 2.1.1</a></li>
    <li><a href="#">Sub Item 2.1.2</a></li>
    <li><a href="#">Folder 3.1.1</a>
        <ul>
            <li><a href="#">Sub Item 3.1.1.1</a></li>
            <li><a href="#">Sub Item 3.1.1.2</a></li>
            <li><a href="#">Sub Item 3.1.1.3</a></li>
            <li><a href="#">Sub Item 3.1.1.4</a></li>
            <li><a href="#">Sub Item 3.1.1.5</a></li>
        </ul>
    </li>
    <li><a href="#">Sub Item 2.1.4</a></li>
    </ul>
  </li>
  </ul>
</li>
<li><a href="http://www.dynamicdrive.com/style/">Item 4</a></li>
</ul>
<br style="clear: left" />
</div>

Скачать исходный код

Ссылки по теме:

Тень без использования изображений

Этот пример показывает, как добавить тень к любому элементу уровня блока, не используя изображений. Для этого содержимое элемента, для которого добавляется тень, помещается внутрь относительно позиционированного контейнера, для которого задан цвет фона. Контейнер сдвинут вправо и вниз - так создается тень. Основное содержимое элемента, для которого добавляется тень, после этого “возвращается на место”. Для этого содержимое элемента с тенью помещается внутрь еще одного относительно позиционированного контейнера, который сдвинут влево и вверх.

У браузера MS IE 6 есть проблемы с правильной обработкой относительно позиционированных элементов, поэтому наш CSS-код необходимо скрыть от этого творения программистов из Ричмонда.

CSS:

<style type="text/css">

<!-- Прячем CSS от MS IE 6 -->
<![if !IE 6]>

.shiftcontainer {
  position: relative;
  left: 5px; /* значение должно совпадать с глубиной тени (ниже) */
  top: 5px; /* значение должно совпадать с глубиной тени (ниже) */
}

.shadowcontainer {
  width: 300px; /* ширина контейнера */
  background-color: #d1cfd0;
}

.shadowcontainer .innerdiv {
  /* Добавьте ширину контейнера, если необходимо */
  background-color: white;
  border: 1px solid gray;
  padding: 6px;
  position: relative;
  left: -5px; /* глубина тени */
  top: -5px; /* глубина тени */
}

<![endif]>

</style>

HTML:

<div class="shiftcontainer">
<div class="shadowcontainer">
<div class="innerdiv">
<b>Some title</b> <br />
Some text here. Some text here.<br />
Some text here. Some text here.<br />
Some text here. Some text here.<br />
Some text here. Some text here.
</div>
</div>
</div>