45872 (CSS Design: Укрощение списков), страница 2
Описание файла
Документ из архива "CSS Design: Укрощение списков", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "45872"
Текст 2 страницы из документа "45872"
margin-bottom: 0;
padding: 2px 15px 5px;
border: 1px solid #000;
list-style: none;
display: inline;
}
#tabs ul li.here {
border-bottom: 1px solid #ffc;
list-style: none;
display: inline;
}
Item 1
Item 2
Item 3
Item 4
В данном примере мы добавили класс class="here" к одному из LI, благодаря чему нижняя граница этого пункта списка имеет цвет, совпадающий с фоном. Таким образом в меню мы указываем на текущее положение пользователя на сайте.
Примечание: этот прием был предложен Ренделом Растом (Randal Rust), а затем его улучшили подписчики списка рассылки css-discuss
Ссылки-цепочки
Еще один тип ссылок, которые обычно располагаются горизонтально на веб-странице - это известные всем нам ссылки-цепочки (breadcrumb links). Эти ссылки показывают наглядно, где в иерархии сайта вы сейчас находитесь - весь ваш путь от главной страницы до текущего раздела или страницы. Если вы действительно хотите сделать код вашей страницы семантически правильным, этот тип ссылок следует оформить как серию вложенных списков, так как каждый раздел является частью предыдущего раздела:
- Home
- » Products
- » Computers
- » Software
- » Computers
- » Products
в результате получаем:
Home
» Products
» Computers
» Software
Применив следующие правила:
#bread {
color: #ccc;
background-color: #006;
padding: 3px;
margin-bottom: 25px;
}
#bread ul {
margin-left: 0;
padding-left: 0;
display: inline;
border: none;
}
#bread ul li {
margin-left: 0;
padding-left: 2px;
border: none;
list-style: none;
display: inline;
}
получаем вот что:
Home
» Products
» Computers
» Software
И опять-таки символ "»" (или любой другой подходящий символ) можно генерировать автоматически с помощью псевдо-элемента :before в сочетании с классом class="first", чтобы первый пункт LI не имел этого символа.
#bread-gen ul li:before {
content: "\0020 \0020 \0020 \00BB \0020";
color: #ff9;
}
#bread-gen ul li.first:before {
content: " ";
}
Конечный результат:
Home
Products
Computers
Software
Мир реалий
Закончу свою статью реальным примером, в котором использован вышеописанный трюк. Мы возьмем стандартный список UL со ссылками и создадим динамическое меню с эффектами перекатывания. Для создания эффекта перекатывания визуальные стили будут применяться к элементам A, а элементы UL и LI будут служить лишь как структурный каркас.
Home
Hidden Cameras
CCTV Cameras
Employee Theft
Helpful Hints
F.A.Q
About Us
Contact Us
Это меню - фактически ответ на вопрос, заданный Майклом Эффордом (Michael Efford) в списке рассылки css-discuss. Майкл создал в точности такое же меню с помощью таблиц, графики и JavaScript. Затем он спросил в списке рассылки, можно ли то же самое получить с помощью CSS.
Дайте разберем стилевую таблицу правило за правилом, и я объясню для чего нужно каждое из них.
#button {
width: 12em;
border-right: 1px solid #000;
padding: 0 0 1em 0;
margin-bottom: 1em;
font-family: 'Trebuchet MS', 'Lucida Grande',
Verdana, Lucida, Geneva, Helvetica,
Arial, sans-serif;
background-color: #90bade;
color: #333;
}
Первое правило - для DIV-а #button. Оно задает, сколько места будет занимать меню, и создает контекст, чтобы мы могли управлять поведением ссылок и пунктов списка. Я предпочел сделать меню гибким и зависимым от установок броузера, поэтому (почти) все значения заданы в "em"-ах. Включая ширину меню. Черная граница была взята из исходного дизайна Майкла. Большой нижний отступ (padding) у меню сделан для того, чтобы вы могли видеть фон у DIV. Опять таки, это было сделано, чтобы повторить исходный дизайн. Нижнее поле (margin) используется для того, чтобы отделить меню от того, что за ним идет. Все цвета взяты из исходного дизайна.
#button ul {
list-style: none;
margin: 0;
padding: 0;
border: none;
}
#button li {
border-bottom: 1px solid #90bade;
margin: 0;
}
Тут я определил, как должен выглядеть список. Так как все пункты списка у нас являются ссылками, а эффект перекатывания пока имеется только у ссылок, я намеренно удалил все стилистические правила из списков. Я добавил лишь границу шириной в один пиксель, у которой цвет совпадает с цветом фона DIV-а #button. Эта граница служит разделителем между пунктами меню. В исходном дизайне для этого использовалась отдельная картинка.
#button li a {
display: block;
padding: 5px 5px 5px 0.5em;
border-left: 10px solid #1958b7;
border-right: 10px solid #508fc4;
background-color: #2175bc;
color: #fff;
text-decoration: none;
width: 100%;
}
html>body #button li a {
width: auto;
}
#button li a:hover {
border-left: 10px solid #1c64d1;
border-right: 10px solid #5ba3e0;
background-color: #2586d7;
color: #fff;
}
Наконец, я дошел до ссылок. В исходном дизайне слева и справа были границы по 10 пикселей каждый. Эти границы меняли свой цвет вместе с фоном при наведении мышки. Это поведение довольно просто получить с помощью псевдо-класса :hover, поэтому эффект изменения цвета границ и фона применен к элементам .
Здесь воспользовался одним трюком: чтобы поведение ссылок распространялось на весь блок (по ширине и высоте), я присвоил им правило display: block;. Это сработало во всех броузерах, кроме IE для Windows. Если вы явно укажите ширину в 100%, IE для Windows все поймет. Но при этом вы получаете проблемы в броузерах IE5 для Mac и Netscape/Mozilla. Поэтому я схитрил: с помощью дочернего селектора ">" я присвоил ширине значение "auto". Так как броузер IE для Windows не понимает дочерних селекторов, он игнорирует это правило. IE5 для Mac, Opera и Netscape/Mozilla понимают это правило, и все остались довольными.
Правило для псевдо-класса :hover меняет цвет фона и границ при наведении мышки на ссылку.
Все стилевые правила и список (1 кб кода) заменили примерно 5кб JavaScript-ов и вложенных таблиц, не говоря уже о примерно 8кб графических файлов, использовавшихся для создания эффекта перекатывания. Кроме того разметка стала более читаемой, ее легче обновлять, так как вам не нужно создавать новые картинки, если поменяется название какого-либо меню. Достаточно лишь поменять текст. Окончательный вариант меню вы можете посмотреть на сайте Asset Surveillance.
Вершина айсберга
Хотите верьте, хотите - нет, но мы лишь слегка затронули тему списков и того, что с ними можно вытворять с помощью CSS. Я не утверждаю, что все приемы, изложенные тут, являются верхом совершенства, но я очень надеюсь что данная статья изменит ваше отношение к CSS и привлечет ваше внимание к идее структурной верстки.
Список литературы
Для подготовки данной работы были использованы материалы с сайта http://www.webmascon.com/