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

HTML+CSS+JavaScript

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

 

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

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

тема: Определение корректных координат
 
 автор: fix   (27.10.2008 в 13:08)   письмо автору
34.2 Кб
 
 

Есть план этажа (схема) - картинка. При наведении на квартиру, например, она выделяется красными линиями (используется блок <div> с красными границами, и позиционируется абсолютно при помощи скрипта)
Для этого используется <map> и OnMouseOver.
<script language="javascript">
function test(f,x,y,x2,y2)
{
  if (f==1)
  {
    h = y2 - y;
    w = x2 - x;

    vis('block');
    document.getElementById('in').style.left = x + 'px';
    document.getElementById('in').style.top = y + 'px';
    document.getElementById('in').style.width = w + 'px';
    document.getElementById('in').style.height = h + 'px';
  }
  else
  {
      /* setTimeout("vis('none')", 500); */
      vis('none');
  }

}

function vis(v)
{
    document.getElementById('in').style.display = v;
}

</script>




<div style="position:relative;">
  <div id="in" style="position:absolute;border:3px solid red;display:none;cursor:pointer;"></div>
                            <img src="plan_2.gif" width="549" height="438" alt="" style="border:0px;" usemap="#map" />
                            <map name="map">
                            <area coords="0,0,99,99" OnMouseOver="test(1,0,0,99,99)" href="link4.html">

                            <area coords="50,200,100,250" OnMouseOver="test(1,50,200,100,250)" href="link4.html">

                            <area coords="415,100,540,200" OnMouseOver="test(1,415,100,540,200)" href="link4.html">

                            </map>

  </div>

Проблема в том, что он работает корректно только при выравнивании картинки слева (так как отсчет координаты X идет слева). Мне же нужно выровнить картинку посередине...
В приложенном архиве есть исходник.

  Ответить  
 
 автор: PAT   (28.10.2008 в 09:53)   письмо автору
 
   для: fix   (27.10.2008 в 13:08)
 

Предложу иной подход - при нём картинка может быть размещена где угодно и как угодно:
<html>
<head>
<script>
function test (area1)
{
var obj = document.getElementById ('myPic');
var obj_left = obj_top = 0;
while (obj.offsetParent)
   {
   obj_left += obj.offsetLeft;
   obj_top  += obj.offsetTop;
   obj       = obj.offsetParent;
   }
var k = area1.coords.split (',');
with (document.getElementById ('in').style)
   {
   top     = (obj_top  + k [1] * 1 - 3)  + 'px';
   left    = (obj_left + k [0] * 1 - 3)  + 'px'
   width   = (k [2] * 1 - k [0] * 1 + 6) + 'px';
   height  = (k [3] * 1 - k [1] * 1 + 6) + 'px';
   display = 'block';
   }
}
</script>
</head>
<body>
<div id="in" style="z-index: 99; position: absolute; border: 3px solid red; display: none; cursor: pointer"></div>

План этажа<br><br>
<map name="map">
<area shape="rect" coords="0,0,99,99"       onmouseover="test (this)" href="link4.html">
<area shape="rect" coords="50,200,100,250"  onmouseover="test (this)" href="link4.html">
<area shape="rect" coords="415,100,540,200" onmouseover="test (this)" href="link4.html">
</map>
<img id="myPic" src="plan_2.gif" width="549" height="438" alt="" style="position: relative; border: 0" usemap="#map" />
</body>
</html>
* Выделенное жирно - ВАЖНО.

  Ответить  
 
 автор: FiX   (28.10.2008 в 10:54)   письмо автору
 
   для: PAT   (28.10.2008 в 09:53)
 

Большое спасибо, все работает!!!

Спасибо, PAT, ты настоящий маг :)

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

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