Компьютерный форум NoWa.cc

Компьютерный форум NoWa.cc (https://nowa.cc/index.php)
-   Java Script (https://nowa.cc/forumdisplay.php?f=310)
-   -   Определение ширины элемента (https://nowa.cc/showthread.php?t=125156)

doroshenkoes 26.10.2007 11:41

Определение ширины элемента
 
Друзья, помогите!

Как средствами js определить ширину элемента, у которого не задан ни .width, ни .style.width?

Заранее всем огромное спасибо!

Добавлено через 44 минуты
Да, еще вопрос:

Определил свойства стиля в таблице стилей документа. Изменять их средствами js - без проблем, но вот обратиться к их начальным значениям (которые лежат в таблице стилей) не могу. js дает пустую строку. Обратиться получается только к тем свойствам, которые прописаны непосредственно в теге.
Вопрос: как их достать из css-ки?

chatlano 30.10.2007 01:28

Ответ: Определение ширины элемента
 
ширина если не задана то зависит от ширины родительского элемента и так вплоть до body ширина которого будет зависить от ширины окна браузера. ну и мэрдженги с пэдингами надо учесть. А зачем тебе нужна ширина?

doroshenkoes 30.10.2007 10:05

Ответ: Определение ширины элемента
 
chatlano, спасибо за внимание к теме.
Ширина (и высота тож) нужна т.к. необходимо было реализовать "таскание" мышью абсолютно позиционированного элемента в родительском.

Ответ на вопрос нашел. Если кому интересно:

В IE доступ к стилям из css-ки реализуется через свойство элемента element.currentStyle.свойство (width, height, итд). Но это не вычисляемое свойство, т.е. если к примеру width = auto, то element.currentStyle.width тоже будет auto. Чтобы вычислить реальные габариты блока, необходимо их вычислить с помощью метода getBoundingClientRect(). Он возвращает объект с четырьмя свойствами: right, left, top, bottom. Это расстояние в пикселях относительно ... относительно не знаю чего. Но если найти разность м/д, например, Left и right, то как раз получится реальная ширина в px.

В FireFox все гораздо проще и красивее. Для доступа к реальным свойствам объекта используется метод объекта document:
document.defaultView.getComputedStyle(element, pseudo_class).
Второй аттрибут нужен, если для элемента задано несколько псевдоклассов. На выходе вся таблица Менделеева (т.е. стилей) и именно фактическая (это прежде всего касается размеров элемента).

Если кому пригодится, буду рад :roll:

czukowski 30.10.2007 12:27

Ответ: Определение ширины элемента
 
doroshenkoes, это все хорошо, но хотелось бы чего-то унифицированного... Я в последнее время приглядываюсь к mootools, жду, когда выпустят версию 1.2, обещается очень много вкусностей :)

chatlano 31.10.2007 16:23

Ответ: Определение ширины элемента
 
Цитата:

Сообщение от doroshenkoes (Сообщение 1229218)

Ответ на вопрос нашел. Если кому интересно:

В IE доступ к стилям из css-ки реализуется через свойство элемента element.currentStyle.свойство (width, height, итд). Но это не вычисляемое свойство, т.е. если к примеру width = auto, то element.currentStyle.width тоже будет auto. Чтобы вычислить реальные габариты блока, необходимо их вычислить с помощью метода getBoundingClientRect(). Он возвращает объект с четырьмя свойствами: right, left, top, bottom. Это расстояние в пикселях относительно ... относительно не знаю чего.

Думаю что это расстояние от родительского элемента который relative или absolute спозиционированн. Если такого нет то от body

apapacy 06.11.2007 20:04

Ответ: Определение ширины элемента
 
есть еще удобные свойства element.offset***
element.offsetWidth и т.д.

doroshenkoes 29.01.2008 19:19

Ответ: Определение ширины элемента
 
Цитата:

Сообщение от doroshenkoes (Сообщение 1229218)
В FireFox все гораздо проще и красивее. Для доступа к реальным свойствам объекта используется метод объекта document:
document.defaultView.getComputedStyle(element, pseudo_class).
Второй аттрибут нужен, если для элемента задано несколько псевдоклассов. На выходе вся таблица Менделеева (т.е. стилей) и именно фактическая (это прежде всего касается размеров элемента).

Здесь я немножко облажался. Выходной объект метода getComputedStyle() аналогичен свойству currentStyle в IE. Счастья нет :cry:

Если кто-нибудь знает, как замутить в FF фишку, аналогичную getBoundingClientRect() в IE, пишите, буду очень признателен!


Текущее время: 15:20. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2026, vBulletin Solutions, Inc. Перевод: zCarot
Copyright ©2004 - 2026 NoWa.cc

Время генерации страницы 0.02367 секунды с 9 запросами