22 декабря 2015
3 июня 2009
21
«Хлебные крошки» на jQuery
Привет!
Знаете что называют «хлебными крошками»? Это вид вспомогательной навигации, которая показывает вложенность текущего документа. Она очень удобна, если на вашем сайте есть глубокая вложенность страниц. Но такой вид навигации встречается не только на сайтах, но и в операционных системах (на картинке слева изображена маковская версия).
Так вот, сегодня мы рассмотрим плагин BreadCrumbs для jQuery, которые позволит нам сделать эти крошки более компактными (в случае, когда у вас более 5 вложенных страниц с длинными заголовками это очень актуально). Думаю, что разработчики плагина взяли идею как раз из Мак ОСи.
Итак, начнем с верстки. Как и полагается нормальным парням, хлебные крошки мы сделаем через неупорядоченный список ссылок (красиво, валидно, семантично):
<div class="breadCrumbHolder module">
<div id="breadCrumb" class="breadCrumb module">
<ul>
<li><a href="#">Главная</a></li>
<li><a href="#">Примеры</a></li>
<li><a href="#">JavaScript</a></li>
<li><a href="#">jQuery</a></li>
<li><a href="#">Плагины</a></li>
<li><a href="#">Навигация</a></li>
<li>«Хлебные крошки» на jQuery — плагин jBreadCrumbs</li>
</ul>
</div>
</div>
<div class="chevronOverlay main"></div>
Теперь сделаем стили:
.breadCrumb {
margin: 0;
padding: 0;
float: left;
display: block;
height: 21px;
overflow: hidden;
width: 990px;
padding:5px;
border:solid 1px #dedede;
background:#fff;
}
.breadCrumb ul {
margin: 0;
padding: 0;
height: 21px;
display: block;
}
.breadCrumb ul li {
display: block;
float: left;
position: relative;
height: 21px;
overflow: hidden;
line-height: 21px;
margin: 0px 6px 0px 0;
padding: 0px 10px 0px 0;
font-size: .9167em;
background: url(../Images/Chevron.gif) no-repeat 100% 0;
}
.breadCrumb ul li div.chevronOverlay {
position: absolute;
right: 0;
top: 0;
z-index: 2;
}
.breadCrumb ul li span {
display: block;
overflow: hidden;
}
.breadCrumb ul li a {
display: block;
position: relative;
height: 21px;
line-height: 21px;
overflow: hidden;
float: left;
}
.breadCrumb ul li.first a {
height: 16px !important;
text-indent: -1000em;
width:16px;
padding: 0;
margin-top: 2px;
overflow: hidden;
background:url(../Images/IconHome.gif) no-repeat 0 0;
}
.breadCrumb ul li.first a:hover {
background-position: 0 -16px;
}
.breadCrumb ul li.last {
background: none;
margin-right: 0;
padding-right: 0;
}
.chevronOverlay {
display: none;
background: url(../Images/ChevronOverlay.png) no-repeat 100% 0;
width: 13px;
height: 20px;
}
Для работы плагина нам потребуется сам jQuery, плагин jQuery Easing и плагин jQuery Dimensions (они все есть в архиве примера в конце статьи). Подключаем их (внизу страницы) и вызываем плагин:
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.easing.1.3.js"></script>
<script type="text/javascript" src="js/jquery.dimensions.js"></script>
<script type="text/javascript" src="js/jquery.jBreadCrumb.js"></script>
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery("#breadCrumb").jBreadCrumb({easing:'swing'});
});
Вот и все собственно. Просто, быстро, а главное удобно! ;-)
Как всегда, жду ваших советов, замечаний и вопросов в комментариях. Пока!
Во-первых, они не позволяют с одного взгляда понять где конкретно я сейчас нахожусь. Во-вторых, перейти на уровни выше проблематично - не видно заголовков, и ждать пока они выезжают утомительно.
С отключенным javascript'ом ваши breadcrumbs'ы более юзабельны, посмотрите сами.
Лучше перед глазами чтобы все всегды было видно.
Хлебные крошки нужны чтобы:
— Понять «где я?»
— Быстро перейти в место, которое нужно (из пути крошек)
Ваши крошки не позволяют ни того, ни другого.
Какую цель вы преследовали, когда делали их?
Можно попробовать слегка изменить. Оставить в каждой ячейке по 1-2 слову и приписать "...".
Получится примерно так:
"Спорт, Охота... » Спортивные тренажеры... » Тренажеры высокой... » Складные » Эллиптический тренажер LandIce с панелью Cardio Trainer E9"
элементарно же - по-умолчанию previewWidth:5
ставьте вызов
jQuery("#breadCrumb").jBreadCrumb({previewWidth:35, easing:'swing'});
делает сокращения более приемлимыми - всё отлично видно
Если в примере навести на 3-ю ссылку (та, что «JavaScript»), дождаться пока полностью раскроется, а потом попробовать навести на «jQuery» (4-я ссылка) то при закрытии 3-й, курсор 4-я крошка выскальзнет из-под курсора и начнет открываться 5-я ссылка.
Но как прототип — прикольно
элементарно же - по-умолчанию previewWidth:5
ставьте вызов
>jQuery("#breadCrumb").jBreadCrumb({previewWidth:35, easing:'swing'});
делает сокращения более приемлимыми - всё отлично видно
Когда будут показывать машину, которая не ездит, вы тоже будете предлагать доточить её напильником?
Например:
Новости, наводим курсор - Новости мировой политики (как-то так надо)
Я в большом сомнении, что это действительно удобно. Скорее это ужасно с точки зрения ЮЗАБИЛИТИ..
Слишком маленькая область реагирования.
Сворачивание вообще лишнее, пригодится только для длинных категорий, но и надо оставить пару слов, чтобы понять о чем, иначе весь смысл крошек теряется.