Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Высота скрытого содержания в теге, если для него установлено overflow:hiden; (https://javascript.ru/forum/misc/6751-vysota-skrytogo-soderzhaniya-v-tege-esli-dlya-nego-ustanovleno-overflow-hiden%3B.html)

paratrooper1981 19.12.2009 07:59

Высота скрытого содержания в теге, если для него установлено overflow:hiden;
 
Подскажите, пожалуйста, свойство для определения высоты содержимого тега, если оно частично скрыто при помощи overflow:hidden;

Код:

<div style="overflow:hidden; height:10px;" id="teg1">
текст текст текст
<p>
текст текст текст текст
</p>
<div><img src="image.gif" /></div>
</div>

Высота видимой части тега <div> с id="teg1" определяется как document.getElementById("teg1").offsetHeight. В данном примере она будет равна 10px. Хотя в теге содержится много текста и картинка, но offsetHeight возвратит размер видимой части тега. Но есть ещё скрытое содержание тега, скрываемое при помощи указания overflow:hidden;Как можно узнать высоту всего содержимого тега <div id="teg1">..</div>, даже если оно не отображается в браузере?

x-yuri 21.12.2009 16:05

почему бы не добавлять overflow: hidden после того, как выяснишь высоту?

PeaceCoder 21.12.2009 19:21

Цитата:

Сообщение от x-yuri
почему бы не добавлять overflow: hidden после того, как выяснишь высоту?

высоту не выяснить пока не применишь код в DOM.. а если применять без хиддена, то получится мерцание контента и т.п., я лично обхожу следующим образом, если элемент скрыт (display: none): visibility: hidden, display: fixed; узнаю высоту/ширину, восстанавливаю display, visibility;

x-yuri 21.12.2009 19:34

ну тогда уж display: none, узнаем высоту, а потом display: block; overflow: hidden. Хотя все равно контент будет перемещаться. display: fixed, кстати, не везде работает ;)

а вообще все от ситуации зависит, о чем, надеюсь ТС нам сообщит. Типа, "когда нужно узнать высоту?" и "критично ли изменение расположения элементов на странице?"

PeaceCoder 21.12.2009 20:13

Цитата:

Сообщение от x-yuri
у тогда уж display: none,

неузнаешь. при display: none элемент не имеет высоты и ширины.
Цитата:

Сообщение от x-yuri
display: fixed, кстати, не везде работает

не display, а position: fixed; перепутал. А на счет не все поддерживают - опять ие6 ? он с ие7 поддерживается.

B~Vladi 21.12.2009 22:51

Цитата:

Сообщение от PeaceCoder
неузнаешь. при display: none элемент не имеет высоты и ширины.

При visibility:hidden узнаешь.

PeaceCoder 21.12.2009 23:15

Цитата:

Сообщение от B~Vladi
При visibility:hidden узнаешь.

А я что написал в посте? выше этого ответа?

subzey 21.12.2009 23:40

var o = document.getElementById("teg1");
alert(/**/o.scrollHeight - o.clientHeight/**/)

B~Vladi 22.12.2009 00:32

Цитата:

Сообщение от PeaceCoder
А я что написал в посте? выше этого ответа?

Аха, туплю:)

x-yuri 22.12.2009 14:06

да тут по-моему все протупили, кроме subzey. Правда непонятно, зачем вычитать clientHeight, так что может и все :)

Цитата:

Сообщение от PeaceCoder
опять ие6 ?

естественно, неужели так сложно переместить элемент за верхний левый край?


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