[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ограничение видимости данных по ширине
sergeiss
Вот есть такой ДИВ: <div style="width:100%; overflow:scroll; height:800px">
В него вложена таблица, очень широкая.
Цель простая и понятная - ограничить растягивание страницы, чтобы всё (и не только вложенная таблица) убиралось по ширине.

В Опере эта хрень работает, ограничивает показ таблицы, добавляя полосы прокуртки. А в ИЭ нифига. Показывает всю таблицу, во всю ее ширину. Хотя высота ограничивается нормально, и вертикальная прокрутка есть и в ИЭ, и в Опере.

Если ставлю width:500px, то всё работает. А проценты не хочет, зараза huh.gif

Кто что умное сказать может по этому поводу?



Спустя 16 минут, 49 секунд (5.08.2009 - 15:39) Nikitian написал(а):
Вместо дива можно заюзать табличку (уж не знаю почему, но ие обожает таблички)
Примерно так:
HTML
<table width="100%">
<tr>
<td style="overflow:scroll;" width="99%">тут ваше всё</td>
<td>&nbsp;</td>
</tr>
</table>


не проверял, но по логике должно работать.

Спустя 17 минут, 35 секунд (5.08.2009 - 15:56) sergeiss написал(а):
По логике я согласен, что должно... Но не работает, зараза! sad.gif

Спустя 1 час, 14 минут, 38 секунд (5.08.2009 - 17:11) Nikitian написал(а):
Так, стоп. Если у вас ширина поля под контент фиксированная, то указывайте её в пикселях, если нефиксированная, то как раз контентом и будет растягиваться..
Вам тут свойство max-width необходимо. А для совместимости со старьём гуглите так

Спустя 1 час, 15 минут, 11 секунд (5.08.2009 - 18:26) Sylex написал(а):
Цитата (Nikitian @ 5.08.2009 - 18:39)
уж не знаю почему, но ие обожает таблички

тож заметил такую штуку smile.gif

Спустя 1 час, 39 минут, 15 секунд (5.08.2009 - 20:05) ИНСИ написал(а):
sergeiss тоже самое было, решилось только тогда, когда просто поставил фиксированный размер =))

Спустя 1 час, 39 минут, 7 секунд (5.08.2009 - 21:44) sergeiss написал(а):
Насчет фиксированного размера я написал в самом начале, что с ним у меня всё получилось...
Ладно, спасибо smile.gif Бум искать обходные пути smile.gif Идея есть уже... Если получится - напишу.

Спустя 1 час, 40 минут, 27 секунд (5.08.2009 - 23:25) sergeiss написал(а):
Решение я нашел... Проверено в Опере 9.24 и в IE 6. Работает просто изумительно!!! Сама идея у меня была давно, только я забыл про нее, когда тему создавал. А потом, после всех ответов, вспомнил и реализовал.

Вот только надо ли его тут выкладывать, это решение? wink.gif А то опять накидают мне вагон ссылок и скажут, что я "изобрел велосипед"...

Спустя 7 минут, 23 секунды (5.08.2009 - 23:32) twin написал(а):
Цитата
А то опять накидают мне вагон ссылок и скажут, что я "изобрел велосипед".

А ты все равно его изобрел))) Неуж думаешь никто раньше не додумался?
Так что выкладывай смело, авось пригодится.
Будем другой раз сюда отправлять))

Спустя 9 минут, 11 секунд (5.08.2009 - 23:41) sergeiss написал(а):
twin ну ладно, уговорил, речистый...

Только сразу оговариваюсь, что приведенное решение "сыроватое", требует доводки. Чтобы учесть все нюансы, и чтобы быть универсальным.

В частном, тренировочном случае имеем следующее.
1. Описание событий для BODY
HTML
<body onresize="set_div_size()" onload="set_div_size()">

2. Функции
HTML
<script language="javascript" type="text/javascript">
function getClientWidth()
{
return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientWidth:document.body.clientWidth;
}

function getClientHeight()
{
return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientHeight:document.body.clientHeight;
}

function set_div_size()
{
document.getElementById( 'div001' ).style.width = (getClientWidth()-10)+'px';
}
</script>

Первые две не мои, взял в интернете. Последняя функция - моя, только тут надо 10 заменить (для универсальности) на размер правого и левого отступов BODY.

3. Тестовый DIV с вложенной широкой таблицей. Ширина определена, но она будет изменена автоматически, сразу же после загрузки скрипта. При отключенном JS ширина так и останется 400 точек.
HTML
<div id="div001" style="width:400px; overflow:scroll">
<table width="10000" border="1">
<tr><td>12345</td></tr>
</table>
</div>


PS. И что надо обязательно добавлять - делать какую-то "коллекцию" объектов, которые надо ресайзить подобным образом. Тогда это будет вообще супер-универсальное решение. Сделать это можно, только я такой задачи перед собой (сейчас) не ставил.


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.