Динамическая Кнопка на чистом CSS.
Запись от and_y87 размещена 21.08.2012 в 12:52
Показов 62561
Комментарии 12
|
И так, сегодня я вам отвечу на вопрос который вы не задавали: "как сделать динамическую кнопку на CSS?" Отступление: Последнее время я заметил что многие делают кнопки не пользуясь возможностями CSS в полной мере... Люди делают кнопки двумя файлами типа on и off, аля: on - Кнопка при наведении на неё курсором; off - Кнопка в нормальном режиме; если адский мастер попадётся то можно ещё встретить третий тип: activ - Кнопка нажата... всё по принципу ссылок... Если Вы больФой гуру вёрстки, то дальнейшее вам вряд ли откроет что то новое, и вам проще будет нажать сочетание клавиш Ctrl + W, однако можете и остаться, дабы поправить меня если я в каком то месте допущу ошипку... (никто не идеален) Приступим Друзья! Блин, крепись народ... я не знал что будет столько букав! Итак представим друзья: мы - верстальщик модного интернет магазина, продающего Бентли, Ягуары и Жигули... И вот... дизайнер нам дал задание оживить старые статичные ссылки... нам дан макет кнопочек как они должны выглядить:
За основу мы возьмём размер нашей будущей кнопки: 150 х 24 px. естественно вы можете использовать свои размеры, эта часть гибко-настраиваемая... Мой вариант кнопки можно увидеть тут Само меню пускай у нас будет вот такого вида: некий блок div с идентификатором nav содержащий в себе какое то неопределённое множество ссылок... Можно использовать и конструкцию с UL LI, но она больше подходит всётаки для многоуровневого меню, а мы тут проходим мальца другое ![]()
подсказка
P.S. в будущем создавая стиль для меню старайтесь всегда учитывать то, что количество ссылок вам заранее неизвестно, их может быть сколько угодно, поэтому желательно делать автоматизацию для их стилизации...
Что я имею ввиду? Для того что бы задать стиль ссылке не все, но некоторые используют class, получая такую ссылку: <a href="#" class="some-class">Бентли</a> минус такого подхода в том, что - Вам приходиться прописывать всем вашим ссылкам class Однако автоматизировать сей процесс можно задав в файле .css такой путь для стиля:
Если же у вас не 1, а скажем 3 блока... или 5... тогда делаем путь таковым:
В настоящее время наше меню - полный ацтой... Начинаем его приводить в человеческий вид, что бы это сделать отметим в своей голове, "что нам надо задать из свойств css для каждой ссылки?": ширина и высота, для корректного отображения ссылок списком зададим дисплею св-во block, задать цвет, стиль шрифта, эффекты и вроде всё... и так у нас получилось следующее:
подсказка
Старайтесь всегда описывать стили в однотипном порядке. В процессе когда вы привыкните, вам будет проще найти ту часть кода которую вам понадобиться по какой либо причине изменить.
Я описываю стили по такому порядку:
Начало это у меня - отступы, ширина высота... Середина это - Позиционирование и Фон Ближе к концу - всё про текст и шрифт... согласитесь удобно...
Итак, определившись что нам надо от CSS пишем стиль который нам все ссылочки наши сделает красавчиками...
При наличии двух файлов на сервере, клиенту приходится обращаться через браузер два раза к серверу, что бы получить оба эти файла, соответственно если у вас: к примеру, и вертикальное и горизонтальное меню, то будет 2 стиля ссылок это уже 4 запроса... а я сторонник оптимизации, чего и вам желаю... можно объединить графику в 1 файл и получится всего 1 запрос на сервер, это очень актуально конечно для больших медиапроектов, т.к. там ежесекундно идут тысячи запросов на сайт, но согласитесь приятно лазить по сайту который быстро грузится и не тормозит... То - о чём я выше толковал именуется: спрайтами Много информации о них можно будет посмотреть по этой ссылке,но только после того как вы всё дочитаете... Суть этого процесса заключается в том что в нашей картинке будет сверху состояние кнопки в обычном режиме, а ниже в этой же картинке состояние кнопки если на неё навели курсор(:hover) пускай эта картинка будет лежать рядом с нашим файлом.html и иметь название: button_all.png... Таким образом "допиливаем" наш css до следующего вида:
У нас фон прилипает к верхней границе блока <a> Сделали? молодцы! Теперь как вы уже знаете делаем что бы картинка менялась при наведении... Раньше использовался другой файл, а теперь используем другую позицию... Допиливаем наш CSS добавляя код следующего вида:
В итоге получаем следующий HTML документ (я всё делал в одном ибо лень разбивать на 2 )HTML Code
тут можете увидеть как оно работает Все ссылки работают, как бэ Анимированы и всё круто... В продолжении можно прикинуться крутым шлангом и сделать третью - если на ссылку нажали... Теперь картинка кнопки у нас имеет имя: button_3all.png Мой вариант кнопки можно увидеть тут Теперь разница лишь в том что придется в позиционировании фона использовать не слова а цифры... не бойтесь это не Алгебра тут всё проще... В мозгу надо прикинуть следующую "схему": у нас высота ссылки 24px это держем в уме; 1. первое сверху изображение это сылка в обычном режиме значит позицианирование такое: сдвиг по вертикали ноль, по горизонтали ноль; 2. второе изображение сверху это эффект при наведении, следовательно по вертикали мы изображение фоновое сдвигаем на 24px а по горизонтали не трогаем; 3. третье изображение сверху если на ссылку нажали, поскольку высота кнопок одинаковая сдвиг рассчитываем легко и не принуждённо, поскольку изображение треть сверху, над ним 2 изображения высота каждого нам известна = 24px, получается 24 * 2 = 48 ровно на 48px нам надо будет сдвинуть по вертикали фоновое изображение что бы показать эту часть картинки... от слов к делу... редактируем наш css и добавляя ещё 1 стиль
Вот так Вот дорогие друзья! Мы уделали принципы в принципе! ![]() И теперь научились делать клёвые кнопочки ![]() Так же можно делать сам шрифт непосредственно в изображении... Это даст иногда преимущества к примеру Текст с рамкой и градиентом на прозрачном фоне... Но щас БОНУСОМ я продемонстрирую преимущества использования именно текста. Преимущество заключается именно в - Анимации! Да да... раньше я говорил анимация кнопки... но я через силу и с тяжёлым трудом заставлял себя так называть это событие... теперь воочию - вы увидите, что такое Анимация ![]() опять допиливаем наш любимый CSS (я серьёзно... он наш любимчик! )приводим в такой вид:
Просмотреть результат можно по этой ссылке Спасибо за уделённое мне время, надеюсь эта информация вам поможет ![]() Если вам понравилась данная статья и есть желание заказывайте темы через Личные Сообщения, тогда, возможно, продолжу эти "Уроки" ![]() В Архиве примеры 3 файла html + 2 png При обнаружении нерабочих ссылок просьба отписать мне в ЛС... | |||||||||||||||||||||||||||||||||||||||||||||
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 12
Комментарии
-
Запись от koorya размещена 21.08.2012 в 19:52
-
Запись от and_y87 размещена 21.08.2012 в 20:44
-
Запись от pavlinmavlin размещена 24.08.2012 в 08:38
-
Запись от and_y87 размещена 04.09.2012 в 22:43
-
Запись от basili4 размещена 05.09.2012 в 10:23
-
Запись от and_y87 размещена 05.09.2012 в 10:23
-
Запись от Skipy размещена 06.09.2012 в 16:49
-
Запись от and_y87 размещена 06.09.2012 в 18:03
-
Спасибо
Столько лет прошло.. а всё актуально! Большое спасибо!Запись от ioan673 размещена 23.08.2015 в 11:27
-
Запись от Avazart размещена 23.08.2015 в 15:30
-
ioan673, рад что могу быть полезным. =)
Avazart, в рамках обучающей статьи, которые читают в основном новички, лучше использовать простешие примеры, что бы не порождать новые вопросы, а показывать читателю решение текущей задачи, статья же должна показать "логику создания кнопки" и не методику вычисления координат в спрайте.Запись от and_y87 размещена 23.08.2015 в 20:42
-
Я считаю что учить нужно делать сразу правильно, ну или хотя бы озвучивать проблему.
И все равно как не наглядно, изображения добавил бы что ли.
К примеру http://shpargalkablog.ru/2012/... ki.html#onЗапись от Avazart размещена 08.02.2016 в 19:56





