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

HTML+CSS+JavaScript

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

 

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

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

тема: Надписи в определенных местах картинки
 
 автор: aexb   (21.06.2006 в 19:08)   письмо автору
 
 

Проблема в следующем:

Есть картинка (в аттаче сообщения). На ней в определенных местах расположены области, в которых должны быть ссылки (например, ссылка 1, ссылка 2 итд).

Ссылки необходимо расположить не относительно всего документа, а именно относительно картинки. То есть, чтобы контейнер с картинкой можно по странице было бы гонять туда-сюда, а ссылки при этом оставались бы каждая на своем месте.

Может, делал кто чего-нибудь похожее? Хотя б на мысль верную натолкните))

   
 
 автор: valenok   (21.06.2006 в 19:22)   письмо автору
 
   для: aexb   (21.06.2006 в 19:08)
 

<MAP NAME="pic">
<AREA HREF="page1.php" SHAPE="poly" COORDS="92,76,167,49,177,62,97,93,92,76">
<AREA HREF="page2.php" SHAPE="poly" COORDS="205,37,259,25,260,36,209,52,205,37">
<AREA HREF="page3.php" SHAPE="poly" COORDS="303,13,367,6,373,16,308,30,303,13">
</Map>

<img src="/pictures/pic.jpg" width="431" height="131" alt="" usemap='#pic' border="0">

Смотри вообщем документацию на тему map

   
 
 автор: aexb   (21.06.2006 в 19:24)   письмо автору
 
   для: valenok   (21.06.2006 в 19:22)
 

Вопрос в другом: ссылки НЕ ДОЛЖНЫ РИСОВАТЬСЯ на картинке, а должны писаться в HTML. Это условие - обязательно.

   
 
 автор: valenok   (21.06.2006 в 19:31)   письмо автору
 
   для: aexb   (21.06.2006 в 19:24)
 

<img src="image.jpg" id='img' style="left:100px; top:100px;">
<div id='div' style="left:115px; top:115px;"><a href="site">Link</a></div>

<SCRIPT language="JavaScript">
var left = 15; // Как далеко с лева текст от левого края картинки
var top= 15; // Как далеко с верху текст от верхнего края картинки

document.getElementById('div').style.left=document.getElementById('img').style.left + "px";
document.getElementById('div').style.top=document.getElementById('img').style.top + "px";

</SCRIPT>

   
 
 автор: aexb   (21.06.2006 в 20:08)   письмо автору
 
   для: valenok   (21.06.2006 в 19:31)
 

Нет, к сожалению, предложенный вариант не работает. Вот мой кривой:


<html>
<style>
div.img {
    width: 400px;
    height: 400px;
    background: url('for_links.gif');
    background-repeat: no-repeat;
}

div.img div {position: absolute;}
</style>
<body>
<div class="img">
    <div style="top: 70; left: 80; z-index: 1">link1</div>
    <div style="top: 138; left: 240; z-index: 2">link2</div>
    <div style="top: 230; left: 120; z-index: 3">link3</div>
    <div style="top: 320; left: 260; z-index: 4">link4</div>
</div>
</body>
</html>


Работать-то это работает, но если картинка сдвигается, скажем, влево, то надписи при этом остаются на месте. Из-за position:absolute. Как привязать надписи именно к картинке? Дело в CSS, только не пойму, чего не хватает (или, наоборот, лишнее).

   
 
 автор: Бог Зайцев   (22.06.2006 в 16:36)   письмо автору
 
   для: aexb   (21.06.2006 в 20:08)
 

Вот, накатал скриптик )


<body onresize = rePos()>
<center><img src = "1.jpg" id = "img">
<script>
// Позиционируем инфу относительно объектов. (c) Бог зайцев

function getCoords(obj)
{
/* Функция находит координаты объекта */
    x=0; 
    y=0; 
    oid=obj.id;

    while(obj){ 
         x+=obj.offsetLeft; 
         y+=obj.offsetTop; 
         obj=obj.offsetParent; 
               }
return [x,y]
}
function addData(obj,left,top,txt)
{
 /* С помощью этой функции добавляем html код, который 

позиционируем относительно объекта )) */
 
   coords = getCoords(obj)
   x=coords[0];
   y=coords[1];
   document.write('<div pos = "'+oid+'" qleft="'+left+'" qtop="'+top+'" style = "position:absolute;left:'+(left+x)+';top:'+(top+y)+';padding:0;">'+txt+'</div>')
}




function rePos()
{
 /* Мы хочим предусмотреть все случае. А координаты картинки могут быть заданы неявно, например она может быть отцентрована. Поэтому при изменении размеров окошка мы должны подправить расположение наших объектов))  */
   for(i=0;i<(d=document.getElementsByTagName   

('div')).length;i++)
   {
      if((p=d[i].getAttribute('pos')))
      {
         obj=document.getElementById(p);
         lf=d[i].getAttribute('qleft')*1;
         tp=d[i].getAttribute('qtop')*1;
         coords = getCoords(obj)
         x=coords[0];
         y=coords[1];
         d[i].style.left=lf+x;
         d[i].style.top=tp+y;
      }
   }

}
 
/* Теперь собсна добавляем  сами ссылки, или чего там нам надо )
Первым идет объект, относительно которого надо позиционировать код
Затем идет координата Х относительно объекта (!)
Затем идет координата Y относительно объекта (!)
Последним параметром передаем сам код, тут может бысть ссылка или другая картинка )
*/
addData(document.getElementById('img'),20,20,'<b>Привет! Как дела?!</b>');
</script>

   
Rambler's Top100
вверх

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