Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Функция movelayer () (https://javascript.ru/forum/misc/2891-funkciya-movelayer.html)

kotjke 23.02.2009 12:30

Функция movelayer ()
 
Добрый день! Я в javascript оч слаб, поэтому прошу помощи у вас, уважаемые гуру :) У меня есть функция movelayer ()
var curx=200;
var deltax=12;
var areawidth=160;

function movelayer(){ 
  curx-=deltax;        
  if(curx>areawidth)
  {
    document.getElementById("ofice").style.left=curx + "px";
    deltax=+deltax;
    setTimeout('movelayer()',50);
  }
  else
  {
    document.getElementById("langu").style.display = "block";
  }
}

То есть при нажатии на ссылку, она отъезжает в лево и появляется воторое меню. Но дело в том что в разрешениях экрана до 1600 все нормально, а вот с 1600 включительно меню которое отъезжает влево вылазит за поля верхнего меню :( подскажите где тут можно уменьшить дистанцию отъезда в лево. Верхнее меню - 1003 px;
Заранее спасибо! :thanks:

kotjke 24.02.2009 11:33

UP
помогите плиз, ну просто очень нада! Если чтото не понятно, могу выложить кусок стиля и HTML относящиеся к этому коду!

Андрей Параничев 24.02.2009 16:47

Я не вижу связи этого скрипта с расширением экрана, так что не могу понять в чем проблема.
Может вам поможет смысл этих переменных:
var curx=200; // Начальная позиция по оси x
var deltax=12; // Шаг смещения позиции
var areawidth=160; // Ширина пространства, по которому идет перемещение

Возможно вам нужно уменьшить значение третьей переменной, но это только предположение.

Если не получится, то выложите страницу куда-нибудь и дайте ссылку.
Либо выложите код проблемного места, который было бы легко протестировать.

kotjke 24.02.2009 16:49

test5.perevedem.ru - ссылка... на главной нажать на любой язык под OFFICES.
Заранее спасибо :)

Андрей Параничев 24.02.2009 17:08

kotjke,
Тут проблема не столько в скрипте, сколько в верстке. Дело в том, что для элемента с position: absolute позиция, задаваемая top, left, right, bottom, высчитывается об ближайшего позиционированного элемента, либо от body.

В вашем случае отсчет идет от body, а значит left: 160px; это расстояние между левым "углом документа" и самим меню. Естественно, что при увеличении расширения экрана этих 160px уже не хватает.

В качестве решения могу предложить добавить в CSS элементу с классом wrapper свойство position: relative, а в скрипте переменной areawidth сделать значение 0. Но можно и другими способами решить проблему, например перемещая элемент отрицательными отступами.

kotjke 24.02.2009 17:44

Андрей Параничев,
Спасибо Вам огромное за помощь! Вы меня очень выручили! :rolleyes:
С ув. Александр!


Часовой пояс GMT +3, время: 04:42.