• Страница 1 из 1
  • 1
Рисуем кнопку, изменняющую цвет
Aleko
Дата: Воскресенье, 18.10.2009, 00:47 | Сообщение # 1
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
В этом уроке я расскажу как сделать простую но красивую кнопку, а так же поведаю, как, используя css и javascript, присобачить к этой кнопке классный эффект смены цвета. Весь урок займет у вас 15 минут, но результат вас порадует.

Шаг 1

Создадим новый документ в фотошопе. Размер не важен. Фон залейте белым цветом. Затем на новом слое с помощью инструмента rounded_rectangle с радиусом в 5 пикселей нарисуйте вот такую фигуру черного цвета (на скриншоте фигура в реальном размере):

Шаг 2

Созданный слой дублируйте 2 раза так, чтобы у нас получилось 3 одинаковых слоя. Затем 3 новый слой скройте нажав на глаз рядом с ним в панели слоев:

Шаг 3

К первому слою не требуется применять никаких стилей - такова задумка. У второго слоя параметр fill установите на 0%, затем примените вот эти стили:

Вот что мы получим:

Шаг 4

Теперь необходимо создать блик. Сделайте видимым третий слой, затем сделайте ctrl+клик по иконке слоя на панели слоев чтобы выделить его. затем выберите select > modify > contract. Вы увидите вот такое диалоговое окно:

Введите значение 2 и нажмите OK. Затем выполните select > inverse чтобы инвертировать выделение и нажмите delete. У вас должен получится прямоугольник чуть меньше исходного. Нажмите ctrl+i чтобы сделать его белым. Теперь сделайте овальное выделение с помощью инструмента elliptical_marquee как показано ниже.

Нажмите delete а затем удалите и нижнюю часть белой фигуры. У вас должен получиться вот такой блик:

Шаг 5

Примените к блику вот эти стили:

Затем установите параметр fill слоя с бликом на 0%.

Шаг 6

В этом шаге я добавил текст (шрифт Myriad Pro) на самый верх списка слоев и применил к нему стили, как на скрине ниже (текст добавляется с помощью инструмента :horisontal_type:):

Вот что мы получаем на этом шаге:

Кнопка не очень красива, можно было сделать гораздо более приятный внешне блик, но стили настроены так для того, чтобы можно было сохранить кнопку без нижнего слоя, при этом не изменив её отображение. Этот плюс раскроется далее.

В принципе это финальный результат фотошопного урока. Но я так же обещал рассказать о эффекте переливания цвета, поэтому продолжим. Продолжение во втором посте.

Прикрепления: 1443571.jpg (1.9 Kb) · 4835278.jpg (23.2 Kb) · 4404268.jpg (85.4 Kb) · 8061916.jpg (2.8 Kb) · 3765091.jpg (21.0 Kb) · 3110511.jpg (4.5 Kb) · 1581509.jpg (3.2 Kb) · 4568262.jpg (41.1 Kb) · 9342012.jpg (26.7 Kb) · 0292217.jpg (4.8 Kb)


Бесплатные обои.
  
Aleko
Дата: Воскресенье, 18.10.2009, 00:57 | Сообщение # 2
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Шаг 7

Выполните ctrl+клик по первому слою с нашей кнопкой чтобы получить его выделение, сделайте этот слой невидимым, затем щелкните правой кнопкой мышки по слою background и в выпадающем меню выберите Layer from background затем выберите этот слой (не снимая выделения) и нажмите delete. Это уберет фон подкнопкой:

Шаг 8

Обрежте рисунок инструментом crop . Будьте осторожны и не отрежьте кусок кнопки или тень.

Шаг 9

Сохраните получившееся изображение кнопки в формате PNG24 так, чтобы сама кнопка была прозрачной. назовите изображение button. Вот это изображение:


Шаг 10

Теперь приступим к созданию веб страницы. Создайте html документ и скопируйте в него вот этот код:

Code
<html>
<head>
<title>Кнопка, которая меняет цвет сама по себе</title>
<style type='text/css'>
.button {width:176px;height:65px;background:url(button.png) #222;}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>
<body>
<div class='button' onmouseover='colors.animate("jump",this,{"backgroundColor":"#d900d1"},500)' onmouseout='colors.animate("compress",this,{"backgroundColor":"#222"},1000)'></div>

<script type="text/javascript">
colors={current:function(el,st){var result;if(el.style[st]&&el.style[st]!=""){result=el.style[st]}else{if(/*@cc_on!@*/false){result=el.currentStyle[st]}else{result=document.defaultView.getComputedStyle(el,null)[st]}}return result=="transparent"?"#FFFFFF":result},torgb:function(e){var h,f,c,a;function d(i,g){var j={A:10,B:11,C:12,D:13,E:14,F:15};return parseInt(i in j?j[i]:i)*16+parseInt(g in j?j[g]:g)}a=e.toUpperCase();if(/RGB\(\d+,\s?\d+,\s?\d+\)/.test(a)){h=a.match(/\d+/g)[0];f=a.match(/\d+/g)[1];c=a.match(/\d+/g)[2]}else{if(/#([0-9A-F]{2}){3}/.test(a)){h=d(a.charAt(1),a.charAt(2));f=d(a.charAt(3),a.charAt(4));c=d(a.charAt(5),a.charAt(6))}else{if(/#([0-9A-F]{1}){3}/.test(a)){h=d(a.charAt(1),a.charAt(1));f=d(a.charAt(2),a.charAt(2));c=d(a.charAt(3),a.charAt(3))}}}return{r:h,g:f,b:c}},animtype:function(e,b){switch(b){case"simple":return e;break;case"compress":var a=2;return Math.pow(e,2)*((a+1)*e-a);break;case"smooth":function f(c){return Math.pow(c,3)}if(e<0.5){return f(2*e)/2}else{return(2-f(2*(1-e)))/2}break;case"jump":function g(h){for(var d=0,c=1;1;d+=c,c/=2){if(h>=(7-4*d)/11){return -Math.pow((11-6*d-11*h)/4,2)+Math.pow(c,2)}}}return 1-g(1-e);break;default:return e;break}},animator:{},anielems:0,animate:function(a,e,b,d,f){for(key in b){c(key,b[key])}function c(h,j){var i,g;j=colors.torgb(j);i=colors.torgb(colors.current(e,h));for(key in colors.animator){if(colors.animator[key].o==e&&colors.animator[key].p==h){clearInterval(colors.animator[key].timer)}}g=colors.anielems;colors.animator[g]={o:e,p:h,start:new Date().getTime(),timer:setInterval(function(){var n,m,l,p,o,k;n=(new Date().getTime())-colors.animator[g].start;m=n/d;l=colors.animtype(m,a);p=parseInt((parseInt(j.r)-parseInt(i.r))*l+parseInt(i.r));o=parseInt((parseInt(j.g)-parseInt(i.g))*l+parseInt(i.g));k=parseInt((parseInt(j.b)-parseInt(i.b))*l+parseInt(i.b));e.style[h]="rgb("+p+","+o+","+k+")";if(m>=1){clearInterval(colors.animator[g].timer);e.style[h]="rgb("+j.r+","+j.g+","+j.b+")";if(f){f()}delete colors.animator[g]}},10)};colors.anielems++}}};
</script>
</body>
</html>
Вот на этом участке кода
Code
<style type='text/css'>
.button {width:176px;height:65px;background:url(button.png) #222;}
</style>
значения 176 и 65 замените на ширину и высоту получившегося у вас изображения.

Сохраните эту страничку например на рабочем столе. Убедитесь что рисунок нашей кнопки находится там же, где и ваша страничка (в данном случае на рабочем столе);

Теперь откройте страницу и наведите мышку на кнопку. если вы сделали всё правильно - кнопка эффектно изменит цвет с черного на розовый как в этом примере.

Тадааам! ))

Автор: Aleko

Прикрепления: 3110686.jpg (6.5 Kb) · 2474535.png (6.8 Kb) · example.html (2.5 Kb)


Бесплатные обои.
  
Duck4Fuck
Дата: Воскресенье, 18.10.2009, 01:01 | Сообщение # 3
болтун
Группа: Модераторы
Пользователь №: 317
Сообщений: 322
Получено оценок: 41
Неплохо ;) Но по моему на jquery можно было бы обойтись куда меньшим кодом =)
  
Aleko
Дата: Воскресенье, 18.10.2009, 01:08 | Сообщение # 4
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Duck4Fuck, этот код содержит 4 варианта анимации, трех из которых в квери вообще нет. К тому же анимация цвета в квери работает только с плагином, а тут она встроена.

Бесплатные обои.
  
Duck4Fuck
Дата: Воскресенье, 18.10.2009, 01:52 | Сообщение # 5
болтун
Группа: Модераторы
Пользователь №: 317
Сообщений: 322
Получено оценок: 41
Ну хз, мне бы и простой анимации с opacity хватило ^_^
  
MadeMan
Дата: Воскресенье, 18.10.2009, 19:44 | Сообщение # 6
говорун
Группа: Проверенные
Пользователь №: 25
Сообщений: 185
Получено оценок: 6
Спасибо за урок, но почему у меня фон чёрный? Сохранял картинку на прозрачном фоне PNG24
http://trial-site.ucoz.ru/button.html
а вот сама картинка http://trial-site.ucoz.ru/button.png
  
tomas686
Дата: Воскресенье, 18.10.2009, 20:00 | Сообщение # 7
шептун
Группа: Проверенные
Пользователь №: 18
Сообщений: 90
Получено оценок: 1
Quote (MadeMan)
Спасибо за урок, но почему у меня фон чёрный?

Так ты в коде измени ^_^
  
OnMusic
Дата: Воскресенье, 18.10.2009, 21:24 | Сообщение # 8
говорун
Группа: Проверенные
Пользователь №: 120
Сообщений: 158
Получено оценок: 11
прикольно, но у меня не так получилось))
  
Aleko
Дата: Воскресенье, 18.10.2009, 22:25 | Сообщение # 9
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
MadeMan, ты шаг 7 вы полнил не верно. Удалил весь фон а нужно было удалить только фон под кнопкой. Код тут не виноват.

Бесплатные обои.
  
vladko95
Дата: Воскресенье, 18.10.2009, 22:49 | Сообщение # 10
говорун
Группа: Проверенные
Пользователь №: 51
Сообщений: 121
Получено оценок: 6
мне анимацию на Джаве понравилась :) и кнопка тоже сексапильная)
  
MadeMan
Дата: Воскресенье, 18.10.2009, 23:37 | Сообщение # 11
говорун
Группа: Проверенные
Пользователь №: 25
Сообщений: 185
Получено оценок: 6
Aleko, ну я удалил только фон под кнопкой, я всё правильно сделал, даже проверил специально.
  
MadeMan
Дата: Понедельник, 19.10.2009, 18:05 | Сообщение # 12
говорун
Группа: Проверенные
Пользователь №: 25
Сообщений: 185
Получено оценок: 6
всё, разобрался)

http://trial-site.ucoz.ru/button.html

только в шаге 5 (стили для блика) наверное не 90 градусов, а - 90 :)

Сообщение отредактировал MadeMan - Понедельник, 19.10.2009, 18:36
  
php_expert
Дата: Понедельник, 19.10.2009, 18:27 | Сообщение # 13
Группа: Удаленные
кнопка некроссобраузерная как и этот форум
  
Aleko
Дата: Понедельник, 19.10.2009, 20:00 | Сообщение # 14
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Quote (MadeMan)
не 90 градусов, а - 90

Нет, там всё должно быть верно.

php_expert, неправда ваша. Кнопка не прозрачна в ie6. Все это и так знают, а так же знают как это исправить. Форум же полностью кроссбраузерен, как и сайт.


Бесплатные обои.
  
vladko95
Дата: Понедельник, 19.10.2009, 22:08 | Сообщение # 15
говорун
Группа: Проверенные
Пользователь №: 51
Сообщений: 121
Получено оценок: 6
Quote (Aleko)
Кнопка не прозрачна в ie6

мало кто этим калькудятором уже пользуется :)
  
Aleko
Дата: Вторник, 20.10.2009, 00:02 | Сообщение # 16
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
vladko95, тем более

Бесплатные обои.
  
Иван0
Дата: Вторник, 27.10.2009, 20:28 | Сообщение # 17
молчун
Группа: Проверенные
Пользователь №: 300
Сообщений: 48
Получено оценок: 5
Aleko, знаешь, у меня весь этот код (прям в этом примере) просто виснет (firefox 3.5, win xp, Intel Core 2 Duo E8400, GTX 260 core 216, 4GB 1066 mhz). И надпись тут плохо смотрится >(
  
ad
Дата: Вторник, 27.10.2009, 20:29 | Сообщение # 18
Группа: Удаленные
Quote
win xp, Intel Core 2 Duo E8400, GTX 260 core 216, 4GB 1066 mhz

Ты че де**л чтоли ??? Причем тут это ? <_<

  
php_expert
Дата: Вторник, 27.10.2009, 20:32 | Сообщение # 19
Группа: Удаленные
Иван0, js код в несколько строчек виснет?)))) наверно процессор перегружен или в брауезере запущено много страниц. а надпись это фотошоп перерисуешь на свой вкус сам, че заглупости
  
Aleko
Дата: Вторник, 27.10.2009, 22:11 | Сообщение # 20
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
Quote (php_expert)
Причем тут это ?

Человек выпендривается.
Quote (Иван0)
Aleko, знаешь, у меня весь этот код (прям в этом примере) просто виснет

Знаешь, у меня весь этот код стабильно работает в firefox 3, opera 9 и 10, ie c 5.5 по 8, safari и Chrome, win vista intel core 2 quad 2.34 GHz, 4Gb ram, geforce GTX 260.


Бесплатные обои.
  
ad
Дата: Среда, 28.10.2009, 17:11 | Сообщение # 21
Группа: Удаленные
Quote (Aleko)
Quote (php_expert)

Ты кого цитируеш ? :D

  
Aleko
Дата: Четверг, 29.10.2009, 02:18 | Сообщение # 22
Watching you
Группа: Администраторы
Пользователь №: 2
Сообщений: 1621
Получено оценок: 167
ad, хм, интересный глюк..

Бесплатные обои.
  
zippo
Дата: Вторник, 10.11.2009, 02:37 | Сообщение # 23
молчун
Группа: Пользователи
Пользователь №: 407
Сообщений: 3
Quote (Aleko)
Знаешь, у меня весь этот код стабильно работает

Такая проблема присутствует, у меня тоже виснет как не странно с твоим примером, а вот со вторым примером что сделал MadeMan,
всё нормально.
  
Codename_47
Дата: Вторник, 17.11.2009, 01:23 | Сообщение # 24
молчун
Группа: Пользователи
Пользователь №: 433
Сообщений: 6
У меня всё ок.
Отличный урок =)
  
WeLord
Дата: Среда, 02.12.2009, 18:04 | Сообщение # 25
шептун
Группа: Проверенные
Пользователь №: 457
Сообщений: 91
Получено оценок: 8
Aleko, извени за тупость, но мог бы переписать так. Чтобы было при навидении на шапку, она менялась на другую картинку только на ту которую нужно. Может это есть то, но я нечего непонял :(
  
  • Страница 1 из 1
  • 1
Поиск:
© Studioad.ru 2006 · 2010. Использование материалов форума на сторонних ресурсах без прямой обратной ссылки строго запрещено. Хостинг от uCoz.