Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Очень нужна помощь с Map Area
 
 автор: irishka207   (17.03.2010 в 00:57)   письмо автору
 
 

Добрый вечер. Подскажите, пожалуйста, я новичёк в этом деле, до конца ещё не разобралась что и как,
поэтому прошу помочь у знающих людей.
Есть карта изображения:

<img src="1.jpg" width="640" height="30" usemap="#Navigation" border=0>
<p><map name="Navigation">
<area shape="poly" coords="113,24,211,24,233,0,137,0">
<area shape="poly" coords="210,24,233,0,329,0,307,24">
<area shape="poly" coords="304,24,385,24,407,0,329,0">
<area shape="poly" coords="384,24,449,24,473,0,406,0">
<area shape="poly" coords="449,24,501,24,525,0,473,0">
<area shape="poly" coords="501,24,560,24,583,0,525,0">
<area shape="poly" coords="560,24,615,24,639,0,585,0">
</map>

нужно, чтобы при попадании курсором в 1-ую область (вероятно событием OnClick), при нажатии, на этой же странице (без обновления),
эта прямоугольная область выделилась(залилась) в какой-нибудь цвет, любой. Помогите, очень прошу, валюсь с курсовой!!!

  Ответить  
 
 автор: АЯ   (17.03.2010 в 02:36)   письмо автору
 
   для: irishka207   (17.03.2010 в 00:57)
 

Только скриптом и стилями эту задачу не решить.
Способов несколько, но все они связаны с дополнительными графическими объектами.

Например, из одной исходной картинки в графическом редакторе типа Фотошопа вам надо будет сделать столько картинок - сколько у вас имеется тегов <AREA> (такого же размера, что и исходная, но на прозрачной основе и на каждой из картинок прорисована только соответствующая область) + одна полностью прозрачная (и тоже такого же размера, как и исходная). Т.е. для выложенного вами кода всего восемь штук.

Делаете контейнер <DIV>, по размерам равный габаритам исходной картинки.
Заливаете этот контейнер каким-либо фоном. Засовываете в этот контейнер все свои 7 картинок с областями с абсолютным позиционированием одну на другую. А сверху кладете последнюю - абсолютно прозрачную. Именно на последнюю картинку навешиваете атрибут usemap.
В итоге все это выглядит как одна нормальная картинка.

На каждый тег <AREA> вешаете обработчик onclick, по которому картинка, соответствующая этому <AREA>, становится невидимой. При клике сквозь ставшую невидимой картинку просвечивает изначальный фон контейнера <DIV>, что и выглядит как "заливка области цветом".

  Ответить  
 
 автор: irishka207   (17.03.2010 в 07:11)   письмо автору
 
   для: АЯ   (17.03.2010 в 02:36)
 

Я поняла о чём вы говорите, спасибо огромное. В голове у меня крутился такой вариант, просто это слишком громоздко получается. У меня тегов <area> около ста (карта местности), и получается как-то не очень, но если другого способа совсем нет, то прийдётся этим воспользоваться.
Я знаю есть библиотека , mapper, там что-то подобное реализовано, только на себя переделать не получилось.
Хорошо, спасибо большое за совет. Если кто-то знает ещё пути решения данной задачи - отписывайтесь, буду очень признательна!!!

  Ответить  
 
 автор: АЯ   (17.03.2010 в 10:41)   письмо автору
 
   для: irishka207   (17.03.2010 в 07:11)
 

По-любому без дополнительных графических объектов не обойтись.

Я вот вспомнил, что ранее рекомендовал здесь же немного иной способ (я тогда писал под никнеймом PAT) - http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=54476
Спрашивающий тот мой совет в итоге реализовал - см. карту Украины на странице http://1ua.com.ua/searc.php?obl=22

  Ответить  
 
 автор: mihdan   (18.03.2010 в 17:17)   письмо автору
 
   для: irishka207   (17.03.2010 в 00:57)
 

Для каждого area рисуете в фотожопе закрашенную область, собираете это всё в спрайт (один файл на все картинки) и при помощи javascript при клике или наведении на нужную область меняете background-position

  Ответить  
 
 автор: irishka207   (20.03.2010 в 09:37)   письмо автору
 
   для: mihdan   (18.03.2010 в 17:17)
 

Жалко, что проще способа нет. Но всё же, всем огромное спасибо.

  Ответить  
 
 автор: mihdan   (18.03.2010 в 17:26)   письмо автору
 
   для: irishka207   (17.03.2010 в 00:57)
 

http://cssadvice.blogspot.com/2008/09/javascriptcss.html
http://davidlynch.org/js/maphilight/docs/demo_usa.html

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования