Автор Тема: Изменить координаты объекта  (Прочитано 4045 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Изменить координаты объекта
« : 10 Ноября 2002, 11:23:56 »
Есть некий объект напр.
2


При событии необходимо изменить его координаты и размеры (тобиш масштабировать)

Пишу след.
function plus(){
document.all["l"+2].style.left*=1.25;
}

Начинам ругаться....
Пишем так
function plus(){
alert(document.all["l"+2].style.left);
}

Ответ - 200px
Стало понятно почему пред. пример не робит.
Но осталось непонятно как заставить его работать.....
Есть конечно идея - работать со строкой и....
document.all["l"+2].style.left=document.all["l"+2].style.left.replace("/px/i", "");

Но мне это кажется извратом.
Может, как говорится, есть способ лучше?
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн Oak

  • Дерево
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1481
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Изменить координаты объекта
« Ответ #1 : 10 Ноября 2002, 13:55:05 »
1) читай доки - там сразу написано, что оно строка
2) Опера может про эти доки и не знать ;) читай сравнение JS на http://developer.netscape.com
3) Есть функция parseInt или подобная - дабы не мучатся с replace
 (again - читай доки)
4) присваивать надо сново (сюрприз!) строку - т.е ко всему надо +"px"
делать
[основной броузер - SeaMonkey] Netscape Communicator 4 - is the best :) // see sources

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Изменить координаты объекта
« Ответ #2 : 10 Ноября 2002, 13:58:35 »
Цитировать
Может, как говорится, есть способ лучше?
В некоторых броузерах (типа NN) координаты - это число. А в IE - строка.
Я в таких случаях просто рекомендую пользоваться какими-либо межбраузерными библиотеками, типа klayers
В klayers например это делается:
layer("LayerName").setLeft(200);

Все остальное (преобразование в строку если нужно) klayers сделает за тебя
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Изменить координаты объекта
« Ответ #3 : 10 Ноября 2002, 14:11:29 »
Цитировать
Я в таких случаях просто рекомендую пользоваться какими-либо межбраузерными библиотеками, типа klayers
В klayers например это делается:
layer("LayerName").setLeft(200);

Макс, а в моём случае выглядеть это будет так?
function plus(){
document.layer("l2").setLeft(document.all["l"+2].style.left*1.25);
}
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Изменить координаты объекта
« Ответ #4 : 10 Ноября 2002, 14:53:22 »
Тут у меня ещё идейка......
Задача у меня следующая:
есть прога http://www.autodealer.ru/acat-online/
Там есть картинки и запчасти. Однако, кртанки у мя щас не "прощёлканы", т.е. нет связи картинок и запчастей.
Щас я делаю, чтобы эта связь была, т.е. выглядит это след. образом: на картинке рисую обекты и явой делаю связь м/у ними.
Т.е. выглядит так
1

2



Далее хочу ещё сделать масштабирование.
С картинокой все ок:
function minus(){
self.frames.pic.picture.height*=0.8;
self.frames.pic.picture.width*=0.8;
}
А вот с div\'ами вышеуказанная проблема вышла.
Дак вот идея в след.:
в div\'ах указывать все не в px, а в процентах!!!!!!

Внимание, вопрос: :-)
при изменении размеров картинки, а следовательно и первого div\'a (в который картинка заключена) изменят ли свои координаты остальные объекты (размеры и координаты которых указаны в процентах)?
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Изменить координаты объекта
« Ответ #5 : 10 Ноября 2002, 17:21:26 »
Цитировать
Макс, а в моём случае выглядеть это будет так?
function plus(){
document.layer("l2").setLeft(document.all["l"+2].style.left*1.25);
}
нет.
примерно так:
layer("l2").setLeft(layer("l2).getLeft*1.25);
или
layer("l2").setLeft(parseInt(layer("l2).getLeft*1.25));
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Изменить координаты объекта
« Ответ #6 : 10 Ноября 2002, 17:29:35 »
Пере#$%нил базу, перевел всё в проценты от картинки.
С масштабированием всё стало ОК.
Но опять возникли проблемы:
почему-то все хавают проценты кроме width задаёшь хоть 1000%, а ширина всё-равно только по ширине текста,
и вторая заморочка с размером шрифта. Раньше просто - берёшь высоту (в пикселах) и вычитаешь ~4
А сейчас......
Может есть какой алгоритм
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Изменить координаты объекта
« Ответ #7 : 10 Ноября 2002, 17:37:18 »
Погодь, Макс, сейчас обратно пере#$%ню и заюзаю.
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Изменить координаты объекта
« Ответ #8 : 10 Ноября 2002, 17:52:59 »
Цитировать
почему-то все хавают проценты кроме width задаёшь хоть 1000%,

1000% от чего? ширины экрана?
наверное примерно так
new_width = parseInt(width * persent)+\'px\';

а про шрифт я ничего не понял
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Изменить координаты объекта
« Ответ #9 : 10 Ноября 2002, 18:00:18 »
Да не в яве, а так
2


Вот скопируй код:

Изображение





width: 26; height: 26; background-color: #3975B0;">1

width: [COLOR=deeppink][b]26[/b][/COLOR]; height: 26; background-color: #3975B0;">2




Попробуй вместо "26" поставить "1000%"

И кстати, твой скрипт что-т запустить не могу
Цитировать
layer("l2").setLeft(layer("l2).getLeft*1.25);

Пишу
function plus(){
alert(self.frames.pic.layer("l2"));
self.frames.pic.picture.height*=1.25;
self.frames.pic.picture.width*=1.25;
}
А он ругаться начинает... мол не поддерживает объект это свойство.
« Последнее редактирование: 10 Ноября 2002, 18:06:09 от Alexandr »
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Изменить координаты объекта
« Ответ #10 : 10 Ноября 2002, 20:38:06 »
Цитировать
Да не в яве, а так
устанавливай яваскриптом. насколько я помню процентами писать нельзя.


Цитировать
function plus(){
alert(self.frames.pic.layer("l2"));
self.frames.pic.picture.height*=1.25;
self.frames.pic.picture.width*=1.25;
}
ну и на какую строку ругается? klayers подключил?
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Изменить координаты объекта
« Ответ #11 : 11 Ноября 2002, 09:02:34 »
Цитировать
насколько я помню процентами писать нельзя.

В смысле? Что нельзя писать?
Я с процентами поязал.... та же петрушка
Типа только так работатет
new_width = some_width+\'%\';
Цитировать
ну и на какую строку ругается?

Конечно на alert(self.frames.pic.layer("l2"));
Цитировать
klayers подключил?

Конечно нет. А как? Ни разу не юзал klayers....
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Изменить координаты объекта
« Ответ #12 : 24 Ноября 2002, 12:54:51 »
Решение:




<остальные div\'ы>
<остальные div\'ы>



А далее явойs меняем свойство main_layer.style.zoom

Всё.....
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28