Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать текущую высоту (ширину) DIVa? 
:(
    Опции темы
Riccon
Дата 15.3.2005, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 5.5.2004

Репутация: нет
Всего: нет



Суть вот в чём.
Высота DIVa вариативна, и меняется в зависимотсти от количества в ней содержания.
В стилях высота не была указана, по этому имеем то, что имеем.

Можно ли узнать высоту дива еще как-то, кроме как, при использовании clientHeight?
И где можно про этот clientHeight почитать. Я не нашол smile

Ведёт он себя как-то странно:

Если я назначаю стилю высоту, полученную посредством clientHeight, то логично предположить, что оба значения будут одинаковыми. Так и есть. Но, если в стилях Div'a, есть бордюр, то разница в выстое, между obj.style.height и obj.clientHeight, будет в 2 пикселя(2 бордюра по одному пикселю) в пользу obj.style.height.


Код

    obj.style.height = obj.clientHeight;
    alert(obj.style.height+" = "+(obj.clientHeight));


Почему это? smile

Это сообщение отредактировал(а) Riccon - 15.3.2005, 14:19
PM MAIL   Вверх
Aliance
Дата 15.3.2005, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Код

function calс () {
 var elem = document.getElementById("qwer");
 var w = elem.offsetHeight;
 var h = elem.offsetWidth;
 alert(w+" * "+h);
}


Код

<body onload="calc();">

<div id="qwer">gvkljgfdb jgsofdgvkopvo;dh,jcjh;ohck;ohk</div>

PM MAIL WWW ICQ Skype   Вверх
Riccon
Дата 15.3.2005, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 5.5.2004

Репутация: нет
Всего: нет



О. спасибо! smile
А всё таки, что это за clientHeight?
PM MAIL   Вверх
Aliance
Дата 15.3.2005, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



MSDN smile

Это сообщение отредактировал(а) Aliance - 15.3.2005, 17:18
PM MAIL WWW ICQ Skype   Вверх
Sardar
Дата 16.3.2005, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Да, бордеры отрисовываются "наружу" от контейнера. Также полезно знать про scroll(Width|Height) которые дают абсолютные размеры содержимого, что необходимо при скролинге:

Код
<div id="test1" style="position: relative; overflow: hidden; width:50px; height: 40px;">
  <div id="test2">десь какой то большой контент</div>
</div>


Пример выше по разному работает в Мозилле и ИЕ. offset(Width|Height) для test1 даст его актуальные размеры на странице, а scroll(Width|Height) размеры содержимого. Теперь посмотрим на test2, offset(Width|Height) дают в ИЕ размеры содержимого слоя, а в мозилле размеры видимого пространства предка! То же самое и для scroll(Width|Height). Поэтому размер test2 можно узнать только опросив scroll(Width|Height) его предка. На мой взгляд это не логично smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
NAV
Дата 31.3.2005, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 31.7.2004

Репутация: нет
Всего: нет



Ходи по оффсетам родителей. Надежный способ. Я, к примеру, его использовал, чтобы при ресайзе окна всплывающая DIV-менюшка "бегала" за своей первоначальной точкой базирования smile

Код

function DL_GetElementLeft(eElement) {
    var nLeftPos = eElement.offsetLeft;          // initialize var to store calculations
    var eParElement = eElement.offsetParent;     // identify first offset parent element  
    while (eParElement != null) {                                            // move up through element hierarchy
        nLeftPos += eParElement.offsetLeft;      // appending left offset of each parent
        eParElement = eParElement.offsetParent;  // until no more offset parents exist
    }
    return nLeftPos;                             // return the number calculated
}

function DL_GetElementTop(eElement) {
    var nTopPos = eElement.offsetTop;            // initialize var to store calculations
    var eParElement = eElement.offsetParent;     // identify first offset parent element  
    while (eParElement != null) {                                            // move up through element hierarchy
        nTopPos += eParElement.offsetTop;        // appending top offset of each parent
        eParElement = eParElement.offsetParent;  // until no more offset parents exist
    }
    return nTopPos;                              // return the number calculated
}


P.S. Кстати, для вычислений высот и т.п. можно использовать специальные элементы-"измерители" smile К примеру, под DIV-ом разместил какой-то dummy с заданным ID, вычислил для него смещение и уже можешь найти высоту DIV

Это сообщение отредактировал(а) NAV - 31.3.2005, 11:43
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0784 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.