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 22.12.2009 16:22

Спасибо всем за посильную помощь...
subzey, не запутаться бы мне в этих свойствах... Наверняка это не конечное решение на все случаи жизни, потому что элемент может иметь или не иметь полос прокрутки.

x-yuri 22.12.2009 17:47

Цитата:

Сообщение от paratrooper1981
Наверняка это не конечное решение на все случаи жизни, потому что элемент может иметь или не иметь полос прокрутки.

а если проверить?

PeaceCoder 22.12.2009 18:39

Цитата:

Сообщение от x-yuri
да тут по-моему все протупили, кроме subzey. Правда непонятно, зачем вычитать clientHeight, так что может и все

и он тоже протупил. т.к. scrollHeight некорректен для разных браузеров в частности в opera. будет выдвать на десяток точек или больше или меньше точно не помню. в MZ тоже бажит. про IE молчу.

x-yuri 22.12.2009 23:19

в тему вызывается subzey
а пока он вызывается... PeaceCoder, по поводу оперы есть 1) баг со scrollHeight, если есть полоса прокрутки. По поводу ie есть 2) баг для textarea. Они не относятся к данному случаю (не вижу смысла ставить overflow: hidden для textarea). Ты знаешь про еще какие-то?

subzey 23.12.2009 01:06

reporting in

subzey 23.12.2009 01:22

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<style type="text/css">
			#wrapper {
				height: 100px;
				width: 100px;
				overflow: hidden;
				border: dashed red 1px;
			}
			.innerwrap {
				overflow: hidden; /* фикс для нижнего маргина */
				zoom: 1; /* фикс всего и вся в ie6 */
			}
			.spacer {
				height: 150px;
				margin: 10px;
				background: navy;
			}
		</style>
	</head>
	<body>
		<div id="wrapper">
			<div class="innerwrap">
				<div class="spacer"></div>
				<div class="spacer"></div>
				<div class="spacer"></div>
				<!-- три по 150 и четыре по 10, итого 490 -->
			</div>
		</div>

		<script type="text/javascript">
			var o = document.getElementById("wrapper");
			alert(o.scrollHeight - o.clientHeight); /* должен вернуть 390 */
		</script>
	</body>
</html>

Протестил в IE6, O10.10, Fx3.5.

x-yuri 23.12.2009 01:59

subzey, это, конечно, не важно, но зачем ты clientHeight вычитаешь?

subzey 23.12.2009 02:16

Цитата:

Сообщение от x-yuri (Сообщение 38894)
subzey, это, конечно, не важно, но зачем ты clientHeight вычитаешь?

Невнимательно прочитал то, что требуется. :( Вычислял высоту скрытой части, а нужно — просто всей.

PeaceCoder 23.12.2009 11:32

Цитата:

Сообщение от x-yuri
баг со scrollHeight, если есть полоса прокрутки.

угу это я и имел ввиду. это я говорил в общем. в текущем случае да можно пользоваться.

paratrooper1981 23.12.2009 18:26

Спасибо всем за разъяснения. С кроссбраузерностью мне самому придётся разобраться.


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