Выше код таблицы. Хочу сделать так, чтоб дивами по бокам строго ограничевалась минимальная ширина боковых столбцов. Для этого втулил по диву, выставил нужную минимальную ширину в 250 пикселей. Но столбцы, где эти дивы находятся могут вытягиваться по ширине, если монитор широкий.
Так же сделал минимальную ширину самой таблицы, для этого вставил <hr> - гориз. разделитель (РИС 3), указал ее ширину в 990 пх (пробовал вставлять и дивы, и таблицы так же).
Средний столбец таблицы - не задан по ширине, то есть ДОЛЖен сжиматься пока позволяет <hr>. Но не так то было.. как видно на рисунке РИС 2, получаются непонятные отступы. Откуда они берутся - не знаю.
В итоге, таблица должна сжаться же до размера горизонтального разделителя <hr>, но изза этих боковых отступов ничег оне выходит, и средняя колонка таблицы не хо сжиматься.
Маюсь чтото, можно другие варианты пробовать, но чего не работает не понимаю.
Спустя 14 минут, 34 секунды (10.10.2009 - 00:59) sergeiss написал(а):
А с чего бы твоему hr сжиматься, если ты задал размер не в %, а фиксированный в пикселях?
Я вот сделал такой hr
Код |
<hr size="5" width="90%" align="center" > |
и вся твоя верхняя часть картинки тоже стала адекватная. А это же можно и в стиле задать - это тебе домашнее задание

PS. Если я, конечно, правильно понял вопрос...
Спустя 3 минуты, 14 секунд (10.10.2009 - 01:02) SunSet написал(а):
sergeiss
Нет, чуток не понял. Этот разделитель для того и вставлен, чтобы не пускать сжиматься менее чем на 990 пх. Он не должен быт ьв процентах.
Спустя 1 минута, 59 секунд (10.10.2009 - 01:04) SunSet написал(а):
sergeiss
Вот он 990 пх, и при стягивании окна браузера табличка сужается до вот этого момента, что на рисунке. ЕЕ как будто не пускают невидимые поля РИС2.
Средня колонка то не задана, и таблица вся не имеет жетского значения. Удерживать должны только те два дива и вот этот разделитель.
Спустя 7 минут, 55 секунд (10.10.2009 - 01:12) sergeiss написал(а):
В Опере и ИЭ разное поведение как для верхней части таблицы, так и для нижней.
Нижняя - ОК в Опере, но плохая (как у тебя) в ИЭ.
Верхняя - ОК в ИЭ, но плохая в Опере.
А вот такие установки
HTML |
<table width="97%" border="1" align="center" cellpadding="0" cellspacing="0"> <tr> <td width="18%" align="center" valign="top"><div style="width:100%; border: 1px solid black">ddddd</div></td> <td > </td> <td width="18%" align="center" valign="top"><div style="width:100%; border: 1px solid black">ddddd</div></td> </tr> <tr> <td colspan="3"><p> </p> <hr size="5" style="width:990px"> <p> </p></td> </tr> </table> |
дали кроссбраузерное решение

По крайней мере для Оперы 9.25 и ИЭ 6.0.
Всё красиво "плавает" и упирается в распорку, когда нужно.
Спустя 2 минуты, 26 секунд (10.10.2009 - 01:15) kirik написал(а):
SunSet
Тебе нужно чтобы крайние колонки были фиксированные, средняя растягивалась, но не стягивалась меньше чем на n-ное число пикселей?
Спустя 3 минуты, 57 секунд (10.10.2009 - 01:19) SunSet написал(а):
sergeissНе совсем то. Нижняя строка по твоему варианту теперь как и нужно отображается, а боковушки то мне нужно закрепить по 250 px.

Менюшки пострадают, а там нужна точная минимальная ширина.
kirikЧто нужно:
1. Боковухи - минимум 250 пх, но 18% сами столбцы боковые, чтоб для широкого монитора растягивались
2. Таблица сжималась до 990 пх минимум, но вытягивалась по ширине на 97%.
3. Средний столбец не имеет четкой ширины, то есть в зависимости от ширины окна браузера растягивается.
Спустя 1 минута, 21 секунда (10.10.2009 - 01:20) SunSet написал(а):
Кстати, это именно баг ИЕ. Потому что в опере все четко как и в моем первом примере отображается. Но не могу игнорировать это
Спустя 30 минут, 30 секунд (10.10.2009 - 01:50) kirik написал(а):
Цитата (SunSet @ 9.10.2009 - 17:20) |
Кстати, это именно баг ИЕ |
Удивительно!
Спустя 3 минуты, 34 секунды (10.10.2009 - 01:54) SunSet написал(а):
kirikПохоже, но не то. Мне нужно чтоб средняя же вытягивалась, а так контент, который внутри дива среднего столбца будет жесткой ширины.
Вот просмотри мой код, который в первом посте но в Опере. Там то что нужно. И посмотри в ИЕ 7, вот там не то что нужно
Спустя 2 минуты, 55 секунд (10.10.2009 - 01:57) SunSet написал(а):
Хотя щас.. соображу. МОжет твой вариант как-нить перекручу.
Спустя 1 минута, 1 секунда (10.10.2009 - 01:58) kirik написал(а):
Цитата (SunSet @ 9.10.2009 - 17:54) |
Мне нужно чтоб средняя же вытягивалась, а так контент, который внутри дива среднего столбца будет жесткой ширины. |
Дык ты не в див вставляй.. Яж там даже циферки поставил, куда текст вставлять

Обнови
страничку.
Спустя 8 минут, 15 секунд (10.10.2009 - 02:06) SunSet написал(а):
kirik
Немного перекрутил, стало больше походе на тот как нужно. Только как установить ширину таблицы в 97% чтоб по краям еще были небольшие отступы? А то чтото не применяется..
Спустя 2 минуты, 49 секунд (10.10.2009 - 02:09) SunSet написал(а):
Все, нашел что поправить. Правда сложно чето так

Изза такой фигни столько телодвижений делать. Спасиб
Спустя 2 минуты (10.10.2009 - 02:11) kirik написал(а):
Цитата (SunSet @ 9.10.2009 - 18:06) |
Только как установить ширину таблицы в 97% чтоб по краям еще были небольшие отступы? .... Все, нашел что поправить. |
Мне кажется лучше не ширину таблицы меньше делать, а padding для body указать. А то на маленьких мониторах эти 1.5% на сторону видно не будет, а на больших отступы будут большими.. Не труЪ
Спустя 4 минуты, 11 секунд (10.10.2009 - 02:15) SunSet написал(а):
kirikСлух, у тебя даже CSS трудный какойто вышел
Ладненько, буду крутить теперь. Но тот глюк можно занести в раздел "Необьяснимо, но факт"
Спустя 8 минут, 12 секунд (10.10.2009 - 02:23) SunSet написал(а):
kirikХотя погодь... это сейчас изобрели тут велосипед. Если по твоему образцу то можно просто в средний столбец вставить див с высотой в 0пх и шириной, например, в 400пх и будет то же что и на твоем варианте
У тебя же точно так же в каждой ячейке распорка.
Спустя 2 минуты, 5 секунд (10.10.2009 - 02:25) kirik написал(а):
SunSetНаверное, наверное

Там можно с min-width решить, вот только IE снова нифига не поймет.
Спустя 4 минуты, 17 секунд (10.10.2009 - 02:30) SunSet написал(а):
kirikВсе, щас сделал как хотел. Натолкнул меня на нужную мысль, сэнсей
Спустя 5 часов, 38 минут, 5 секунд (10.10.2009 - 08:08) sergeiss написал(а):
Я могу предложить еще один вариант, должен быть универсальным

Вроде как, кроссбраузерный.
Согласно этому варианту, для начала делаем функцию, которая выставляет нужные размеры для указанных в ней элементов. В зависимости от текущих размеров BODY.
Далее, эту функцию вызываем в 2-х местах: в событиях для BODY onload и onresize. Тогда пофиг все стайлы - сразу же после загрузки и при дальнейших изменениях размерах будет просто тупо выставлять нужные размеры.
Тут - широкое поле для деятельности

Я подзабыл... Но сам же эту штуковину тут, на форуме, предлагал

Вот код:
Код |
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'; }
|
И в ПХП:
PHP |
<body id="docbody" onresize="set_div_size()" onload="set_div_size()"> ... // ширина, указанная в ДИВе, просто игнорируется в итоге <div id="div001" style="width:400px; overflow:scroll"> // тут всякая фигня </div> |
Спустя 1 час, 8 минут, 18 секунд (10.10.2009 - 09:16) Семён написал(а):
Я может чего и не понял, но вот:

HTML |
<style type="text/css"> .container { color:#FFF; margin: 0 auto; width: 1000px; }
.col1 { float:left; background-color: red; width:20%; }
.col2 { float:left; background-color: black; width:60%; }
.col3 { float:left; background-color: red; width:20%; }
</style> <div class="container"> <div class="col1">Первый столбик</div> <div class="col2">Второй столбик</div> <div class="col3">Третий столбик</div> </div> |
Тело резиновое, поэтому если захочется изменить например на 800x600, в container меняешь атрибут width: на 800
Спустя 4 часа, 10 минут, 22 секунды (10.10.2009 - 13:26) SunSet написал(а):
СемёнНет, это не то что нужно было. Тут вся таблица фиксирована, а нужно было чтоб средняя растягивалась но была не менее опр. величины.
sergeiss Ну, такую мелочь как таблицку программировать - это уже явно кащунство))
Уже все сделал. Благодарю за варианты и помощь
Спустя 55 минут, 22 секунды (10.10.2009 - 14:22) Семён написал(а):
SunSet
Тогда тебе просто следовало в моём варианте изменить:
на
и у col1 и col3, поставить фиксированную ширину, при этом средняя колонка стала бы резиновой.
Спустя 4 минуты, 32 секунды (10.10.2009 - 14:26) SunSet написал(а):
СемёнНет, это тоже не подходящий вариант так как средняя ячейка будет сжиматься до полного нуля, а мне нужно чтобы все три имели свой минимум - боковые по 250, средняя, например, 500. Но и чтобы все они не были фиксированые, а вытягивались по ширине монитора.

Могу код выложить, для ясности как должно было быть.
Спустя 16 минут, 46 секунд (10.10.2009 - 14:43) sergeiss написал(а):
Цитата (SunSet @ 10.10.2009 - 15:26) |
Могу код выложить, для ясности как должно было быть. |
Ну так выкладывай

А мой вариант что не понравился? Он точно универсальный, и можно настроить выставление размеров и/или положений любого количества элементов страницы.
Спустя 7 минут, 27 секунд (10.10.2009 - 14:51) SunSet написал(а):
sergeissВот. Повторюсь, она работает так как надо, но может у когото альтернативные мысли возникнут

Только этот кусок кода лучше в чемто смотреть сразу, просто захламлен уже немного ненужным.
HTML |
<table width="88%" border="0" align="center" cellpadding="0" cellspacing="7" class="table"> <tr> <td colspan="3"><div align="justify" style="border:1px solid #000000; height:150px; padding-top:0px"></div></td> </tr> <tr> <td width="15%" rowspan="2" align="center" valign="top"><div style="height:26px; padding-top:5px; padding-left:5px;padding-right:5px;background-image:url(img/1.gif); background-position:top; background-repeat:repeat-x"> <div style="width:210px" align="center"> <img src="img/user.png" width="16" height="16"> Это важно знать</div> </div> <div align="justify" style="border:1px solid #CCCCCC; margin-bottom:7px; padding:5px">эээээ </div> </td> <td align="center" valign="top" bgcolor="#99FFFF"><div style="border:1px solid black">ээээээ</div></td> <td width="15%" rowspan="2" align="center" valign="top"><div style="height:26px; padding-top:5px; padding-left:5px;padding-right:5px;background-image:url(img/1.gif); background-position:top; background-repeat:repeat-x"> <div style="width:210px" align="center"> <img src="img/user.png" width="16" height="16"> Это важно знать</div> </div> <div align="justify" style="border:1px solid #CCCCCC; margin-bottom:7px; padding:5px">ээээээ </div> </td> </tr> <tr> <td align="center" valign="top"><div style="height:0px; width:520px"></div></td> </tr> <tr> <td colspan="3" align="center" valign="top"> </td> </tr> </table> |
Спустя 2 часа, 51 минута, 55 секунд (10.10.2009 - 17:43) sergeiss написал(а):
Ты знаешь, что мне не нравится в твоем коде? Некая хитрая смесь форматирования и таблицами, и стилями одновременно.
Спустя 6 минут, 37 секунд (10.10.2009 - 17:49) SunSet написал(а):
sergeiss
CSS юзаю там где стандартными свойствами не сделать. Каркас будет таблицей, а вставки дивами. Но это ж дело вкуса, тут не в том была проблема.
Спустя 3 минуты, 59 секунд (10.10.2009 - 17:53) sergeiss написал(а):
А ты обрати все-таки внимание на мой код

Там предлагается кроссбраузерное решение, позволяющее выставлять место и размеры любых объектов на странице вне зависимости от ее размеров. Алгоритм задается и очень легко контролируется программером, т.е. тобой.
Из CSS можно использовать только оформление, но ничего, связанного с положением.
И таблиц не нужно...
Короче говоря, получается "красивее". Именно для "резинового" дизайна, который ты можешь сам полностью контролировать.
Спустя 10 минут, 38 секунд (10.10.2009 - 18:04) SunSet написал(а):
sergeissБольшой плюс в твоем коде перекрывается точно таким же большим минусом - это JS. Как по мне, то не рационально использовать лишний кусок ЯС без надобности. Другое дело что без него нельзя было бы обойтись.
Всеравно что мне нужно реку переплыть, а тут предлогается боинг построить
Спустя 10 минут, 15 секунд (10.10.2009 - 18:14) sergeiss написал(а):
Не совсем так

Тебе для переплытия реки предлагается сделать надувную лодку, а ты мастрячишь обстоятельный, тяжелый плот. Я бы так это сравнил

К тому же, эту надувную лодчонку можно потом взять с собой и переиспользовать, а плот останется на этой переправе.
Спустя 4 минуты (10.10.2009 - 18:18) SunSet написал(а):
sergeissта ну?) По сути, для решения моей проблемы требовалось всего вставить пустой див, 0 пикселей в высоту и по ширине сколько нужно. И все. Эфект тот же самый что и должен был получится с горизонтальным разделителем.
Так что строчка кода для вставки дива как раз и есть та надувная лодка
_____________
... и помните! Каким бы ни был PHP, главное - чтобы он был защищенным! :) (PHP с Анфисой Чеховой)