![]() |
[CSS] Табы как в Windows Vista
Сдеалем-ка меню в стиле висты.
http://www.nnm.ru/filez/vista/1.jpg Да, вот именно такое =))) Не знаю зачем оно может пригодится, но в данной статье я хотел рассказать небольшой трюк, который недавно использовал. Лучшим примером будет как раз такое Tab-меню. Начнем. Для начала нам нужен обычный список: PHP код:
http://www.nnm.ru/filez/vista/2.jpg Теперь разберемся с CSS кодом. Для начала я позиционирую как список, так и все его элементы по левому борту, т.к. нам нужно горизонтальное меню. Одновременно немного настраиваю отображение списка. в частности делаю отступ от левого борта для первого таба и прописываю общую длинну списка: PHP код:
http://www.nnm.ru/filez/vista/3.jpg Теперь играемся с "a"... Пару бордеров, пару отступов итп: PHP код:
http://www.nnm.ru/filez/vista/4.jpg Теперь используем обычный трюк с class='active'. Элементу, который в данный момент активный, присваивается class='active' и пишется несколько другой CSS код. PHP код:
и пишем CSS для него: PHP код:
http://www.nnm.ru/filez/vista/5.jpg Чтобы поправить это достаточно присвоить margin-top:2px для всех элементов a, кроме активного. Т.е. опустить все элементы на 2 пикселя, кроме активного. http://www.nnm.ru/filez/vista/6.jpg куда лучше =))) ну а теперь тот самый трюк, о котором я и хотел поведать. Как можно заметить, каждый элемент a имеет бордеры справа и слева. Поэтому на стыке получается линия в 2 пикселя, что не очень красиво. Теоритически можно задать только левый или только правый бордер и конечному\начальному элементу присвоить другой класс и заливать оба бордера. Но у нас с вами один из элементов выше других, а значит он должен иметь оба бордера. Какзалось бы ситуация сложная, но все оказалось проще. PHP код:
http://www.nnm.ru/filez/vista/7.jpg Дело за малым. Осталось прорисовать горизонтальную черту списку и все будет готово. Тут я уже воспользуюсь не своим трюком, а трюком известного немецкого дизайнера Дэна (simplebits.com) Ведь если мы просто проведем border-bottom для списка, то получим такую картину http://www.nnm.ru/filez/vista/8.jpg Как видим, линия проходит и под активным элементом. Я долго марался с этим но понял что кроссбраузерно проблему решить нельзя с помощью border-bottom. Трюк Дэна прост - мы заливаем в бэкграунд списка эту линию и активный элемент смещаем чуть вниз. А точнее мы смещаем вниз все элементы, просто у остальных a элементов появляется нижний бордер. Но это не суть, для начала нам нужен 1 пиксель гифом нужного цвета - цвета линии, чтобы залить бэкграунд. делаем. Конечный код выглядит примерно так: PHP код:
посмотреть вживую можно тут: http://exot.ru/trin/vista.php |
Прикольно, спасибо
|
=) велком =)
тут еще пару статей было, как будет время - еще ченить напишу. http://doci.nnm.ru/trinux/30.10.2005/php_css_alendar_sobytijnovostej http://doci.nnm.ru/trinux/26.01.2006/css_zakruglyaem_kraya_blokov_bez_kartinok http://doci.nnm.ru/trinux/27.01.2006/css_effekt_3d_dlya_tablic |
очень полезно =)
+ |
Цитата:
#tab a{ ... border:1px solid #8B8C91; ... } а у active снизу она закрашивается светлым просто.. border-bottom:1px solid #fff; И так все выглядит хорошо. Убрать то свойство с картинкой background:url('1px.gif') repeat-x left bottom; И все равно получается все как задумано.. или я что то не вижу? |
Цитата:
http://www.nnm.ru/filez/vista/1.jpg (видим что линия начинается не с первого таба, а на 3 пикселя ранее и не заканчивается последним, продалжается), то это достаточно трудно. Нужно еще 2 элемента списка, первый имеет 3 пикселя в длинну, второй - все остальное пространство. Да, моя погрешность, я написал стать относительно своего стиля float позиционирования. А в float я не могу указать 100% =( он его не понимает =( в дивном, абсолютном или табличном позиционировании этот трюк прошел бы, при float не получится - надо заранее знать всю длину. Хотя можно, конечно, поместить список в div без float, ограничить его размером и сделать overflow-x:hidden. Это кстати идея =))) над этим надо будет поработать... Но все равно проще намного залить пиксель в бэкграунд списка |
позновательные статьи.
P.s. в Опере9 табы не работают. |
|
Красиво, все статьи хорошии ;)
|
Цитата:
|
| Время: 22:30 |