Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменения цвета части картинки при наведении 
V
    Опции темы
Karta
Дата 14.12.2012, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 4.6.2009

Репутация: нет
Всего: 0



Добрый день!
Сталкнулась с такой проблемой. Есть картинка, мне эту картинку нужно разделить на несколько частей, которые при наведении мышки должны изменять цвет на более яркий, а при клике на определенную часть должна открываться форма, где дается описание что это такое. Вот пример такой картинки.

Как это можно сделать в javascript css может кто то сталкивался с подобным, у кото то есть готовые решения?
 Спасибо.

Присоединённый файл ( Кол-во скачиваний: 19 )
Присоединённый файл  2.gif 47,04 Kb
PM MAIL   Вверх
Arantir
Дата 14.12.2012, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 14
Всего: 55



Ни сss, ни javascripts.
Это нужно делать с помощью карт изображений. Делается это HTML-разметкой.
Код

<img src="img.png" usemap="#segments" alt="картинка">
<map name="segments">
  <area shape="poly" coords="113,24,211,24,233,0,137,0" alt="сегмент 1">
  <area shape="poly" coords="210,24,233,0,329,0,307,24" alt="сегмент 2">
</map>

Для тега area можно задавать атрибут href, то есть делать заданные части изображения ссылками.

В случае полигона (shape="poly") тег coords содержит координаты вершин в формате "X1, Y1, X2, Y2, ...". Таким образом можно задавать фигуры почти любой сложности, если их можно представить в виде полинома.

Про другие атрибуты map и area можно почитать в любом справочнике по HTML

Это сообщение отредактировал(а) Arantir - 14.12.2012, 16:39


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
ksnk
Дата 14.12.2012, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Цитата(Arantir @  14.12.2012,  16:36 Найти цитируемый пост)
Ни сss, ни javascripts.


Цитата(Karta @  14.12.2012,  16:10 Найти цитируемый пост)
 несколько частей, которые при наведении мышки должны изменять цвет на более яркий


А такое как решить без javascript?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Arantir
Дата 14.12.2012, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 14
Всего: 55



ksnk, хе-хе, ну это только половина вопроса. Но без карт js все равно не поможет.

На счет подсвечивания выход тоже есть, как ни странно. Есть плагин для jQuery "maphilight" (пример, сорсы).

Раскрасить area, к сожалению, невозможно. На этом теге стили не работают. 
jQuery maphilight использует динамическое рисование через canvas для достижения желаемого результата.


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
Karta
Дата 14.12.2012, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 4.6.2009

Репутация: нет
Всего: 0



Спасибо боьшое за помощь! smile
PM MAIL   Вверх
tzirechnoy
Дата 14.12.2012, 18:43 (ссылка)  | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: нет
Всего: 16



Порезать на эти area, составить мозаикой табличку (с правильными ссылками для каждой ячейки), в табличке правильные ссылки поместить в <a href=""><img src=...></a>, а подсвеченные варианты -- в background. В CSS по :hover включать opacity, чтобы фоновое изображэние просвечивало.
PM MAIL   Вверх
ksnk
Дата 14.12.2012, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Насчет map и картинки - можно такое предложить (мой давний проект)

Код


<div style="position:absolute;top:140px;left:0;width:1000px;height:210px;">
                    <div id="cover" style="display:none;"> 
                    <!-- cover layer -->
                      <img style="left:11px;top:123px;" src="img/r_1.gif">
                      <img style="left:118px;top:46px;" src="img/r_2.gif">
                      <img style="left:114px;top:96px;" src="img/r_3.gif">
                      <img style="left:220px;top:66px;" src="img/r_4.gif">
                      <img style="left:527px;top:3px;" src="img/r_5.gif">
                      <img style="left:82px;top:85px;" src="img/r_6.gif">
                      <img style="left:329px;top:34px;" src="img/r_7.gif">
                      
                    </div>
                      <img style="position:absolute;left:0px;top:0px;z-index:10;width:1000px;height:210px" 
                        src="img/x1x1.gif" usemap="#Map">
                      <img id='flag' style="display:none;position:absolute;left:0px;top:0px;" src="img/Flag04.gif">
                    </div>
...
<map name="Map" id="Map">
<area shape="poly" coords="341,161,385,133,436,132,464,121,458,95,453,69,518,61,524,124,557,149,
579,167,627,156,660,176,620,190,504,199,396,189" href="#7" />
<area shape="poly" coords="545,69,627,58,738,15,861,88,757,105,854,137,862,185,745,154,691,169,635,132,588,145,548,109" href="#5" />
<area shape="poly" coords="225,155,287,122,354,87,425,72,431,109,380,114,361,130,323,154" href="#4" />
<area shape="poly" coords="148,69,211,98,289,109,343,80,382,50,308,67,254,66,249,46" href="#2" />
<area shape="poly" coords="257,122,186,120,109,143,173,157,206,160" href="#3" />
<area shape="poly" coords="125,82,207,106,91,122" href="#6" />
<area shape="poly" coords="15,152,29,134,92,129,102,147,38,184" href="#1" />
</map>

Код

    $('area').mouseover(function(){
        var x=parseInt(this.href.match(/#(\d+)/)[1]);
        if(x!=prev){
            $('#cover img').stop().css({opacity:0.01});
            $('#flag').hide();
        }
        prev=x;
        
        var self=$('#cover img').eq(x-1);
        self.animate({opacity:0.99});
        self=self[0];
        $('#flag').css({
            top:parseInt(self.style.top)+parseInt(self.height)/2-$('#flag')[0].height
            ,left:parseInt(self.style.left)+parseInt(self.width)/2
        }).show();
        self=null;
        
        return false;
    }).click(function(){
        var x=parseInt(this.href.match(/#(\d+)/)[1]);
        document.location='?do=regn&id='+x;
    })



в качестве пояснения - #cover - хранилище для картинок img/r_X.gif, которые выводятся по наведению на нужную область. Они устанавливаются абсолютно над этой областью.

#map - это грубая нарезка исходной картинки на кусочки, чтобы определять какую картинку показывать. Номер в href - это порядковый номер картинки в #cover. Я делал исходную нарезку арей в Dreamweaver, вероятно, сейчас есть уже  более удобные средства.

#flag - изображение флажка, который выставляется по центру выделяемой области. 

Использовалась именно схема с разными картинками, так как "выделенная" область - картинка с другим изображением, чем на большой,с полутенями и деталями.

В принципе, на dklab есть пример подобной прорисовки, использующий canvas и рисующий области по разметке в maparea. Этот пример требует очень точной разметки области в map/area, зато довольно компактен и эффектен ;)

Это сообщение отредактировал(а) ksnk - 14.12.2012, 20:32


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Karta
Дата 17.12.2012, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 4.6.2009

Репутация: нет
Всего: 0



У меня вопрос, а как я могу нарезать исходную картинку?
Код

<img style="left:11px;top:123px;" src="img/r_1.gif">
                      <img style="left:118px;top:46px;" src="img/r_2.gif">
                      <img style="left:114px;top:96px;" src="img/r_3.gif">
                      <img style="left:220px;top:66px;" src="img/r_4.gif">
                      <img style="left:527px;top:3px;" src="img/r_5.gif">
                      <img style="left:82px;top:85px;" src="img/r_6.gif">
                      <img style="left:329px;top:34px;" src="img/r_7.gif">

PM MAIL   Вверх
ksnk
Дата 17.12.2012, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Нарезались картинки обычным образом - с помощью фотошопа. Кусочки вырезались руками, на картинки навешивались тени-детали-красивости и они сохранялись в png-24.

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


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Karta
Дата 24.12.2012, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 4.6.2009

Репутация: нет
Всего: 0



Добрый день!
Карту я сделала, коряво получилась, но сама. Теперь столкнулась с такой проблемой: моя карта должна менять масштаб  при прокрутке колесика мыши. Нашла d3js фреймворк похожий пример : http://bl.ocks.org/2206340
но мне не понятны две вещи:
1. Что значит projection = d3.geo.albersUsa() 
albersUsa - если это название самой карты, то можно ее заменить на произвольное название, например d3.geo.skelet_celoveka(), или эти карты уже находятся гдето в библиотеки d3js ?
2. В этом примере пути по которым чертятся границы штатов помещены в файл .json

Код

d3.json("us-states.json", function(json) {
  states.selectAll("path")
      .data(json.features)
    .enter().append("path")
      .attr("d", path)
      .on("click", click);
});

 у меня же прописаны эти пути просто в .js
 Мне здесь просто надо поменять типы файлов или это записывается как то по другому, например d3.js("skelet_celoveka.js, function(js)")
Может кто работал с этим фреймворком, сможет что то подсказать.
Ну или учитывая, что я совсем новичек, какой способ наиболее простой для изменения масштаба при прокрутки колесика мышки?


Это сообщение отредактировал(а) Karta - 24.12.2012, 12:18
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0899 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.