powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Скроллируемый див. Как можно определить есть ли скролл или нет?
9 сообщений из 9, страница 1 из 1
Скроллируемый див. Как можно определить есть ли скролл или нет?
    #37321770
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Есть такой элемент:

Код: plaintext
1.
2.
<div id="container" style="overflow: auto;width: 100%; height: 100%; border: solid 0px white;">
    ....контент
</div>

Задача:

1) определить в рантайме - есть ли у div-а в настоящий момент scroll или нет
либо
2) корректно определить ширину div-а, с учетом ширины scrloll-а (или без него)

Иначе возникает проблема - если есть скролл, то контент скачет на небольшое значение влево/вправо. А так бы я сделал проверку скриптом - если есть скролл - то корректировал бы смещение контента на ширину скролла.
...
Рейтинг: 0 / 0
Скроллируемый див. Как можно определить есть ли скролл или нет?
    #37321771
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробовал определять ширину дива через jQuery("#container").width() - но он и при скролле и без скролла - возвращает одинаковое значение.
...
Рейтинг: 0 / 0
Скроллируемый див. Как можно определить есть ли скролл или нет?
    #37321867
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unicornmirage1) определить в рантайме - есть ли у div-а в настоящий момент scroll или нет
либо
2) корректно определить ширину div-а, с учетом ширины scrloll-а (или без него)
Типа намёк...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
<!DOCTYPE html>
<html>
<head>
<title>test</title>
<style type="text/css">
#container {
	width: 100px;
	height: 100px;
	overflow: auto;
}
#content {
	width: 200px;
	height: 200px;
}
</style>
<script type="text/javascript">
function Go() {
	var o=document.getElementById('container')
	alert(o.clientWidth+' '+o.offsetWidth+' '+o.scrollWidth)
}
</script>
</head>
<body>
<div id='container'>
	<div id='content'>content</div>
</div>
<input type='button' value='Go' onclick='Go()' />
</body>
</html>
...
Рейтинг: 0 / 0
Скроллируемый див. Как можно определить есть ли скролл или нет?
    #37322028
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

большое спасибо, это то, что нужно! :)
...
Рейтинг: 0 / 0
Скроллируемый див. Как можно определить есть ли скролл или нет?
    #37834082
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не работает, если размеры content не заданы или заданы в процентах. еще варианты есть?
...
Рейтинг: 0 / 0
Скроллируемый див. Как можно определить есть ли скролл или нет?
    #37834130
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korcar , т.е. примеров от тебя не ждать?
...
Рейтинг: 0 / 0
Скроллируемый див. Как можно определить есть ли скролл или нет?
    #37834275
Korcar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
та пример всё тот же, что и в топикстарте
див с оверфлоу авто, высота фиксирована, ширина меняется и контент тоже меняется. в связи с чем возникает ситуация, когда контент больше, чем ширина дива (не на много, но скролл горизонтальный появляется). вот как сделать, чтобы пару строк кода исправили эту ситуацию
krvsa , пример, приведенный работает, если у второго дива заранее заданы размеры в пикселях. если не заданы заранее (а они не заданы) или заданы в процентах, то o.clientWidth - видимая область минус ширина скроллбара, o.offsetWidth - видимая область, content.offsetWidth - так же только видимая область

Сделал увеличение ширины первого дива значением o.scrollWidth-o.offsetWidth, но чета ощущение, что это криво. Изящнее решения есть?
...
Рейтинг: 0 / 0
Скроллируемый див. Как можно определить есть ли скролл или нет?
    #37839611
The_ShadoW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так чего "не работает"-то?
Вам же привели пример.
Если у элемента offsetWidth меньше, чем scrollWidth -- это математический факт наличия скроллбара (при условии незапрещающего overflow).
...
Рейтинг: 0 / 0
Скроллируемый див. Как можно определить есть ли скролл или нет?
    #37839630
The_ShadoW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ширина скроллбара -- это, соответственно, offsetWidth - clientWidth когда известно, что скроллбар есть (вычитаем width для вертикального скролла, height для горизонтального).
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Скроллируемый див. Как можно определить есть ли скролл или нет?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]