|
|
|
Философский вопрос про свойства
|
|||
|---|---|---|---|
|
#18+
Правильно ли я понимаю, что не существует универсального способа получить координаты ЛЮБОГО объекта относительно родительского. Например: <style> .mystyle{position:relative; left:100px} </style> ... <table id="tab1" class="tt" border="1"> ... после загрузки страницы tab1.style.left == пустой строке tab1.offsetLeft == 123 если присвоить tab1.style.left = "200px" то элемент передвинется, и tab1.offsetLeft станет 123 а если присвоить tab1.style.left = "100px" то элемент не передвинется, и tab1.offsetLeft не изменится. Короче говоря, передвинуть объект можно, узнать, где он находится, тоже можно, а вот как узнать, куда он передвинулся ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 14:28 |
|
||
|
Философский вопрос про свойства
|
|||
|---|---|---|---|
|
#18+
Не хочется писать много кода, к тому же я уже давненько не делаю чистым js, поэтому просто приведу с помощью библиотеки jQuery: Код: plaintext 1. 2. Вроде решение универсально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 17:30 |
|
||
|
Философский вопрос про свойства
|
|||
|---|---|---|---|
|
#18+
Да, я пробовал и с jquery. Но вопрос немного не о том. Мы можем получить некое значение offset. И мы может его установить, записав в style.left или style.top. Проблема в том, что это РАЗНЫЕ значения. Читается не то, что пишется. А можно ли сделать такие функции, чтобы : getObjectOffsetLeft(object) всегда возвращало то, что было установлено посредством setObjectOffsetLeft(object,value), а если ее ни разу не вызывали, то реальное положение объекта ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 18:39 |
|
||
|
Философский вопрос про свойства
|
|||
|---|---|---|---|
|
#18+
Если ты установил position как relative, то почему ждешь, что элемент встанет на абсолютную позицию? Устанавливай position как absolute и позиционируй как хочешь, для этого и существует. Не надо лепить все в одну кучу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 18:50 |
|
||
|
Философский вопрос про свойства
|
|||
|---|---|---|---|
|
#18+
Веб-программист, Почему ж? Существует - суммировать оффсет-парент. Универсальная метода, в том же жквери IDVsbruck а присутствует - в полный рост. IDVsbruck , когда ты пишешь это слово (жквери) - я как доктор Геббельс, хватаюсь за пистолет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 21:08 |
|
||
|
Философский вопрос про свойства
|
|||
|---|---|---|---|
|
#18+
ShSergeВеб-программист, Почему ж? Существует - суммировать оффсет-парент. Универсальная метода, в том же жквери IDVsbruck а присутствует - в полный рост. IDVsbruck , когда ты пишешь это слово (жквери) - я как доктор Геббельс, хватаюсь за пистолет. И это пробовал. Получается во-первых, +- несколько пикселей, во-вторых, style.left можно задать и не в пикселях. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Результат: 100=>102 jQuery Код: plaintext 1. дает тот же результат, 102 а не 100. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 12:28 |
|
||
|
Философский вопрос про свойства
|
|||
|---|---|---|---|
|
#18+
Для полноты картины не хватает стиля объекта и его родителя. Посмотреть можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 14:05 |
|
||
|
Философский вопрос про свойства
|
|||
|---|---|---|---|
|
#18+
У родителя все по умолчанию <body> <p> <table border="1"> <tr><td> </td> <td> <!-- се родитель --> <table id="tab1" class="mystyle" border="1"> <!-- се объект --> ... </table> </td> </tr> </table> </p> </body> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 14:49 |
|
||
|
Философский вопрос про свойства
|
|||
|---|---|---|---|
|
#18+
Я, конечно, понимаю желание "получить координаты ЛЮБОГО объекта относительно родительского", но проводить такие действия в отношении таблиц и ячеек - кощунство. Для это есть контейнеры (потому так и называются). Что же до расхождений, которые ты получил, то тут все понятно - это расхождение браузеров. Могу ошибиться в расстановке мест, но вроде как ИЕ делает рамку ЗА пределами контейнера, а ФФ - внутри. Однако тот же jQuery пытается быть объективным и совершенно кроссбраузерным, поэтому выдает реальное положение объекта, включая границу. Таким образом, указав стиль напрямую (left: 100 и border: 1), в ФФ объект с границей будет отображаться начиная с позиции 100, тогда как в ИЕ - с позиции 99. Решение таких "коллизий" - это использование только одного пути установки и получения координат, например, тот же jQuery. Если установить объект.css("left", 100), то фреймфорк установит объект во всех браузерах одинаково, с учетом их специфики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2008, 17:16 |
|
||
|
Философский вопрос про свойства
|
|||
|---|---|---|---|
|
#18+
IDVsbruck: Ты, скорее всего, не понял вопрос. Ты говоришь, что есть способ установить объект одинаково во всех браузерах. Это совершенно не то, про что я спрашивал. Я спрашивал: можно ли узнать, куда именно он установился ? То есть если я любым способом (не только скриптом) устанавливаю его в позицию "100", то есть ли способ прочитать откуда-то это самое "100" ? Не 102, не 99, а именно то самое, что я туда писал. При этом не так уж важно, где именно находится объект - на 100 пикселей от родителя или на 101. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2008, 11:45 |
|
||
|
Философский вопрос про свойства
|
|||
|---|---|---|---|
|
#18+
А ты, скорее всего, не понял ответ. Ты устанавливаешь одним средством, а получаешь другим. Если ставить обычным способом - через стили - то будут расхождения и нестыковки, вызванные наличием/отсутствием бордеров, маргинов и паддингов. Чтобы избежать, устанавливай и получай одним (к примеру, тем же жКвери). Ну, и конечно, поправка по поводу контейнера ... С установкой для таблицы абсолютного позиционирования не сталкивался, всегда запихивал в этих целях в контейнер див. Кстати, из доки про таблицы: The properties of a table are distinct from the properties of cells contained within the table. For example, the offsetLeft property of a multicolumn table is not the same as the offsetLeft property of the left-most cell in the table. Refer to the appropriate object when writing scripts involving table and/or cell objects. Поэтому чтобы говорить об универсальном способе, пользуйся контейнерами и абсолютным позиционированием. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2008, 12:35 |
|
||
|
Философский вопрос про свойства
|
|||
|---|---|---|---|
|
#18+
IDVsbruckЧтобы избежать, устанавливай и получай одним (к примеру, тем же жКвери). Если устанавливать и получать через jQuery, получается то же самое. Ставим object.css("left",100); получаем alert(object.offset().left-object.parent().offset().left); // = 102 IDVsbruck С установкой для таблицы абсолютного позиционирования не сталкивался, всегда запихивал в этих целях в контейнер див. Что можно использовать div я знаю. Вопрос носит философский характер. То есть нам говорят буквально следующее: "Ребята, хотя у вас есть DOM, но этот DOM - чистая условность. В нем можно делать не что угодно, а только определенные вещи строго предписанными методами. Все остальное не гарантируется. Хотите позиционирование - юзайте div и position absolute. Свойства объектов существуют сами по себе, и к объектам имеют весьма условное отношение". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2008, 12:57 |
|
||
|
Философский вопрос про свойства
|
|||
|---|---|---|---|
|
#18+
А ты, кстати, установил position: absolute или проводишь изыскания все с тем же relative? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2008, 13:05 |
|
||
|
Философский вопрос про свойства
|
|||
|---|---|---|---|
|
#18+
IDVsbruckА ты, кстати, установил position: absolute или проводишь изыскания все с тем же relative? c relative. C absolute более или менее все ясно. Но вот, например, если есть какая-то таблица, и внутри клетки этой таблицы нужно позиционировать элемент, то relative - естественный способ. Кстати, div тут не слишком помогает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2008, 16:29 |
|
||
|
Философский вопрос про свойства
|
|||
|---|---|---|---|
|
#18+
Никаких проблем - в ячейку вставляй див с position: relative и шириной/высотой по 100%, а в него всовывай таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2008, 17:41 |
|
||
|
Философский вопрос про свойства
|
|||
|---|---|---|---|
|
#18+
IDVsbruckНикаких проблем - в ячейку вставляй див с position: relative и шириной/высотой по 100%, а в него всовывай таблицу. Абсолютно тот же результат. style.left=100, this.left-parent.left = 102 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2008, 18:10 |
|
||
|
Философский вопрос про свойства
|
|||
|---|---|---|---|
|
#18+
Учитывай бордюры и все будет ок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2008, 18:48 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=35707637&tid=1455426]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
189ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 546ms |

| 0 / 0 |
