Jump to content
  • 0

Не работает скрипт


LeV
 Share

Question

Помогите разобраться, уже всю голову сломал...

Есть java-скрипт из книги Влада Мержевича.

Он позволяет расположить DIV над содержимым страницы.

При прокрутке содержимое DIV плавно сдвигается, оставаясь неподвижным относительно окна браузера.

Скрипт работает, только если из кода страницы убрать ...>.

Причем нет разницы, какой тип документа в нем объявлен.

Вот css-свойства DIV:

#popup {
position: absolute; /* Абсолютное позиционирование */
width: 150px; /* Ширина*/
border: 1px solid; /* Рамка вокруг */
background: #ffffee; /* Цвет фона */
text-align:center; /* Выравнивание содержимого по центру */
margin-left:78%; /* Координаты DIV, если выкл. скрипты */
top: 50px; /* */
}

Вот сам скрипт:

function floatMenu()
{
// Указывает, где находится меню по вертикали
// Возможные варианты - top и bottom
verticalPos = "top"; // Меню находится вверху

// Указывает, где находится меню по горизонтали
// Возможные варианты - left и right
horizontalPos = "right"; // Меню располагается справа
startX = 10; // Начальная координата по горизонтали
startY = 50; // Начальная координата по вертикали

function coordMenu(id) {
// Обращаемся к нашему меню по его id через getElementById
el = document.getElementById(id);

// Получаем координаты меню
el.currentPosition = function(x, y) {
if (horizontalPos == "left") this.style.left = x;
else this.style.right = x;
this.style.top = y;
}

// Положение по горизонтали остается неизменным
el.x = startX;

// Если меню расположено вверху окна, то вертикальная
// текущая координата не меняется
if (verticalPos == "top") el.y = startY;

// Если меню расположено внизу окна, то из высоты окна вычитаем
// исходную вертикальную координату меню
else el.y = document.body.clientHeight - startY;
return el;
}
slideMenu = function() {
// Число 20 в знаменателе определяет плавность хода,
// чем оно больше, тем медленнее движется меню
if (verticalPos == "top")
obj.y += (document.body.scrollTop + startY - obj.y)/20;
else
obj.y += (document.body.clientHeight + document.body.scrollTop - startY - obj.y)/20;

// Сохраняем текущие координаты меню
obj.currentPosition(obj.x, obj.y);

// Вызываем функцию slideMenu каждые 10 миллисекунд
setTimeout("slideMenu()", 10);
}
obj = coordMenu("popup");
slideMenu();
}

Как должен работать скрипт (убран ...>)

Заранее благодарю за советы!

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0
А если по существу? :)

Нечем помочь?

Просто тут такая пьянка: http://forum.htmlbook.ru/index.php?showtopic=7733

А по существу:

document.body.scrollTop ? не стнадарт, скорее всего на нем сыпится.

Рекомендую такую конструкцию :)

this.startX = document.documentElement.scrollLeft || window.pageXOffset || document.body.scrollLeft;
this.startY = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;

Link to comment
Share on other sites

  • 0

Не понял, куда это вставить :)

document.body.scrollTop ? не стнадарт, скорее всего на нем сыпится.

Рекомендую такую конструкцию :)

this.startX = document.documentElement.scrollLeft || window.pageXOffset || document.body.scrollLeft;
this.startY = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy