Веб-разработка

индекс
236,88

Быстрая перекраска вещей на сайте

image
Существуют моменты когда необходимо предоставить пользователям выбор цвета какой либо вещи. Есть несколько способов выхода из этой ситуации.

Здесь я покажу очень простой и незамысловатый способ быстрой перекраски, на примере iPod Shuffle.

Сразу дам ссылку на то, что должно получиться в результате: ссылка

Краткий смысл таков и всем известен:
Нужная вещь отрисовывается в фотошопе с использованием полупрозрачных градиентов на однотонном фоне. После этого все сохраняется в png и на сайте просто меняется фон посредством js. Кто все знает может дальше не читать ;)

И так начнем с отрисовки нашего iPodа как примера к идеи.


Это наше исходное изображение. Кстати для этого удобнее отрисовывать уже отрисованные картинки ;) нежели фотографии.
image

В начале разбиваем его на основные элементы. Так как он прямоугольный это упрощает задачу.
image

Далее пытаемся добавить такие же тени и блики как на оригинале и сделаем нормальное отражение в полу.
image

Далее нарисуем кружок с кнопками. Выставляем параметры для слоя с кругом примерно как показано на скриншоте.
image

Добавляем пиктограммы и собственно в данном случае все. С другими предметами все может быть куда сложнее, но смысл понятен. Самое главное следите за тем, что бы при отключении всех слоев кроме слоя с фоновым квадратом он был одного сплошного (в будущем заменяемого цвета).
А потом удаляем зеленый квадрат оставляя прозрачное место. В результате должно получиться примерно так:
image

Теперь оживим это с помощью простенького js, применив для удобства jQuery.


<script type="text/javascript">
function change(obj)
{
$("ul.ChangeColor a").removeClass("act");
$(obj).toggleClass("act");
$("img#color").css("background",jQuery(obj).css("background"));
}
</script>


Далее сделаем список с нашими иконками цветов. Для примера двумя. Фон может быть как цветом так и картинкой.
<ul class="ChangeColor">
<li>
<a style="background: #5db9b7;" onmouseover='change(this);'><img src="box.png" alt="" /></a>
</li>
<li>
<a style=" background: url('t1.png'); " onmouseover='change(this);'><img src="box.png" alt="" /></a>
</li>
</ul>


Сама же перекрашиваемая вещь будет такой:
<img src="form.png" id="color" alt="" style="background: #000;" />


Оформим все с помощью css. Например у меня на скорую руку вышло так:
#color {margin: 15px 0 0 0;}

ul.ChangeColor {margin: 0; width: 336px; background: #f3f3f3; border: 1px solid #efefef; padding: 25px 25px 40px 25px; display: table;}
ul.ChangeColor li {float: left; list-style: none; margin: 15px; width: 50px; height: 50px;}

.ChangeColor a, .ChangeColor a:hover {border: 8px solid #e3e3e3; cursor: pointer; display: block; width: 50px; height: 50px;}

.ChangeColor a.act, .ChangeColor a.act:hover {border: 8px solid #cdcdcd;}


Вот собственно и все. И незабуддте про укрощение png в IE6 ;) Но про это уже слишком много писали у каждого свои способы.

Так же вам могут понадобится еще уроки по отрисовке вещей. В журнале www.smashingmagazine.com есть подборка статей на эту тематику.

Немного поразмыслив вы сможете придумать кучу вариаций на тему покраски вещей и зачем это нужно ;)

спасибо за помощь kellion

UPD: Пример использования от Tvarb
+142
6 декабря 2008, 21:32
223

комментарии (65)

+1
mxc #
Спасибо большое. Казалось все сложнее.
0
Tvarb #
Можно и сложней градиенты подкладывать
делали по такому же принципу :)
молодец, что описал
+4
Grayscale #
Да конечно можно, но всеголишь пример описал :)
+2
Somebody32 #
Придираюсь, но на странице примера все же надо «выберите цвет»
0
Grayscale #
Да, точно, спасибо)))
+6
Devgru #
Ничего такого, на er.ru висело подобное «выберете партию».
+23
Devgru #
Кстати, странный топик для человека с таким ником.
+7
Grayscale #
Первый кто оценил )))
+3
artch #
А если прикрутить какой-нибдуь колорпикер, то можно сделать выбор произвольного цвета на месте. Так сделано у меня на Клавогонках — юзер может выбирать цвет машинки.
+1
Grayscale #
На автокадабре тоже так сделано :) и вообще можно много чего :) на то и мозги что бы придумать :)
+2
MKrivosheev #
habrahabr.ru/blogs/iconoskaz/18805/ — про автокадабру
+1
Grayscale #
turbomilk.ru/portfolio/icons/autokadabra-icons/
Это вот от самого турбомилка…
+2
KELLiON #
Ну через колор-пикер картинку на фон нельзя поставить. Можно смешать колор пикер и набор картинок, тогда возможно будет поудобнее, хотя это еще вопрос.
+2
artch #
Колорпикер будет менять цвет фона.
0
Londeren #
[offtop]
так вот кто сделал этот шикарный сайт))
гоняюсь там бывает…
[/offtop]
0
Londeren #
автору статьи хотелось бы пожелать использовать текстовый редактор
некоторые ошибки уж больно сильно глаз режут…
сори за занудство))
+2
Grayscale #
Да ничего страшного))) понимаю, но на сегодня уже сил нет исправлять)
0
muradali #
именно так сделано и у нас в авингрупе при выборе цвета автомобиля в каталоге, только там посложнее пришлось рисовать…
0
Grayscale #
Devgru уже приводил пример с автомобилями )) да, сложнее…
0
Devgru #
Странно, кажется, это был какой-то неправильный Devgru.
0
Grayscale #
Извини, промазал))))
0
Devgru #
ничего)
0
Tvarb #
имеено со сложными моделями — там много от дизайнеров зависит.
Полутени, градиенты в прозрачность :)
0
harhan #
ух ты! фотошоп на русском! просто честно — я и так далеко не гуру, но просто подумалось что если мне сейчас подсунут русский фотошоп — буду чувствовать себя ребенком :)

топик один из лучших, скажите пожалуйста, можно ли его перепостить?
0
Grayscale #
Да, можно, я не против)
0
skylix #
Простите, но явно не «выбирите» х_х
0
Grayscale #
Да, на самой странице исправил, а на скриншоте забыл :(
0
Uratsakidogi #
Дополнительно можно заморочится с дополнительным элементом, чтобы узоры правильно отражались (сейчас — не очень). Хотя в простых случаях, как в примере, можно просто заморочиться с позиционированием фоновой картинки для одного элемента.
0
Grayscale #
Да, так изначально и было))) просто потом забыл поправить)
0
theKitich #
Толково :)
Впервые на эту мысль наткнулся тут: www.kulish.ru/websites/works_avingroupsite,process.html
А у Вас описание самой технологии )
–6
homm #
www.artlebedev.ru/everything/backstage/icon-reflections/
Не хорошо как-то получается.
Нет, я не хочу сказать что кто первый опубликавал статью, тот технику и придумал, но и вы не можете претндавать на авторство техники.
Конечно можно сказать что статья полезна описанием процесса создания айпода, но тогда ей место в уроках фотошопа.
+1
Grayscale #
ОМГ, да никто и не притендует)) я думаю что это вообще придумали еще задолго до Т.Герасименко )))))
0
banzalik #
а вы сравнивали ту картинку, которая была и ту, которая получилась?
0
Grayscale #
Вот если честно воообще не приследовал цель идеально отрисовать айпод (который до этого кто-то отрисовал и не факт что привильно)
0
pseudopanda #
жаль, в жёлтый нельзя покрасить, э-эх. А еще рядом с цветом можно написать красивое название: «Ультра», «Banano»…
0
Rengised #
фуууу, русский фотошоп)
+3
Grayscale #
Это спецом для всяких скриншотов)))))))))
0
deerua #
awesome10 тыщ раз
вот так нужно делать мануалы для фотожопа!
0
pgg #
Велосипед изобрели давно
+1
jAx #
На чуть-чуть моя веб-жизнь стала ярче. Буду вашу реализацию вкладывать в свои работы. Реально спасибо.
0
Devgru #
Эта техника кстати довольно стара, и используется, например на "странице-в-клочья", для логотипов — таким образом под логотип можно положить фон нужного цвета и он перекрасится. Удобно на самом деле.
0
Grayscale #
Я с огромной радостью прочитаю ваши профессиональные статьи) нет, правда) очень жду) и думаю не я один)
0
Grayscale #
Комент к комменту ниже…
–1
glazs #
Очередная статья в духе «Веб разработка для даунов».
И, разумеется, для удобства jQuery. Жду статью про использования тега IMG.
–3
imps #
Я для замены картинок, не цвета правда, такой вот когда то скрипт нашёл, если немного подумать то можно и к данному случаю применить

function MM_swapImgRestore() {
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_swapImage() {\
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


А пример использования такой вот:
<img name="somename" src="imagetoswaplink" width="somewidth" height="someheight" 
onMouseOver="MM_swapImage('somename','','imagewhichwillswap')" 
onMouseOut="MM_swapImgRestore()" />
–1
imps #
Собственно к последнему коменту как раз получилось :)
0
pepelsbey #
Вы из какого бабушкиного сундука достали этот скрипт? Его писала компания, которой уже даже не существует…

Если уж автор использует в статье jQuery, то рекомендовать ему этот антиквариат точно не стоит.
0
imps #
Непонятно за что минусуют, наверно за то что поделился вариантом. На самом деле всё зависит от цели. Я использовал скрипт для простого сайта не нагруженого ничем, кроме пары функций.

Может кому то всё же пригодится.

Никому ничего не навязывал, а тем более автору, я всего лишь предложил другой вариант.
Но это ведь не значит что нужно использовать именно его ;)
0
egoisto #
похоже на Dreamweaver
0
imps #
Да, именно из бесплатного шаблона для него я и взял парочку функций.
0
almalexa #
Пользовался таким методом и раньше, но всё равно спасибо, очень детально расписали)
0
koldarev #
тут пришлось заюзать прозрачность png'шки для смены цвета (параметру «си» назначается цвет в hex'e, можно поиграться).
просто и почти на любой вкус )
*на правах примера*
0
WebMast #
Крутая вещица. Наконец-то я узнал как это делается!
0
hlomzik #
Вы про самую суть не написали — как можно из заданной картинки сделать нужный png с нужными полупрозрачностями? iPod — слишком элементарный пример.
Т.е. фактически задача такая — мы имеем картинку, состоящую из «фонового», белого и промежуточных между ними цветов. И нужно создать маску, основанную на яркости белого цвета.
+1
Grayscale #
В конце статьи я привел ссылку на статью с большим количеством примеров примерной отрисовки похожих предметов. Если их даже просто прочитать то все станет ясно.
0
PDmitriy #
0
pepelsbey #
Это обычная смена картинок:

Вот — красные, вот — фиолетовые… скучно.
0
PDmitriy #
но красиво
0
pepelsbey #
Это тоже был гей-тест? )
0
PDmitriy #
:)
–3
Triaffer #
Решение для ресурсов, на которые не ходят пользователи IE 6 :)
+1
Grayscale #
Человечество уже давно решило эту проблему ;)
0
caIIIa #
Русский Photoshop?
0
Grayscale #
Где-то выше уже нираз поднималась эта тема)))))
0
caIIIa #
Да уже заметил, каюсь :)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.