Chertenok.ru - все о программировании
Вход  |  Регистрация  |  Поиск 
Праздник
Сегодня :

День славянской письменности и культуры


ширина элементов


Новая тема  Ответить  Печать Предыдущая тема  Следующая тема
Автор Сообщение
Пол:Жен Kate
Постоянный участник


Возраст: 27
Знак зодиака: Стрелец
Зарегистрирован: 04.06.2007
Сообщения: 149

СообщениеВс, 19-Окт-2008 12:13    Заголовок сообщения: ширина элементов
Цитата

Как задать ширину блочного элемента (например div или td) размером в 100%, но не от окна браузера, а 100% от ширины его контента?
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж dogma
aka Достоевский


Возраст: 27
Знак зодиака: Телец
Зарегистрирован: 20.12.2004
Сообщения: 1702
Откуда: Холмск
СообщениеПн, 20-Окт-2008 1:04 
Цитата

вроде так:
css:
  1. width:auto

Или вычислить длину самой длинной строки и подставить ее вместо auto

_________________
Bonum initium est dimidium facti
SQL-задачи (on-line)
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Жен Kate
Постоянный участник


Возраст: 27
Знак зодиака: Стрелец
Зарегистрирован: 04.06.2007
Сообщения: 149

СообщениеВт, 21-Окт-2008 18:55 
Цитата

Т.е. смотри в элементарном случае что я имела:

...
<div style="width:100%;height:100">...</div>

<table cellpadding="0" cellspacing="0" border="0" style="width:100%>
<tr style="height:100">
<td style="200">
...
<td>
...
<td style="200">
...
</table>
...

здесь минимальная ширина таблицы (при которой в браузере появляется полоса горизонтальная прокрутки) = фиксированной ширине левой ячейка + ширина фиксированной правой ячейки (ну и плюс контент фиксированный средней ячейки, если имеется). Либо ширина браузера.
минимальная же ширина DIV = ширине браузера.
Т.е. ширина DIV не связана с шириной TABLE в данном случае, а значит, при уменьшении окна браузера до появления полосы прокрутки (т.е. когда ширина браузера меньше минимальной ширины таблицы), при перемещении полосы прокрутки мы видим, что DIV-элемент обрывается на ширине, равно ширине браузера, в то время, как таблица продолжается до минимальной своей ширины. В принципе это понятно почему (уже здесь же и описала), поэтому я и решила задать ширину DIV-элемента (который короче, чем таблица) как-нибудь в 100% от ширины самого широкого элемента контента, т.е. в 100% ширины контента. Попробовав поставить AUTO - эффект такой же как если бы поставила 100% (от ширины браузера). Т.е. также обрывается на ширине браузера.

Вычислять длину строки в эквиваленте к длине таблицы - это не совсем правильно мне кажется. Неужели нет другого выхода?

Добавлено спустя 12 минут 14 секунд:

Кстати, еще вопрос не совсем в тему.

Я сейчас перехожу с табличной верстки на блочную, с помощью DIV (не знаю для чего - всю жизнь верстала через TABLE все устраивало меня и всех, никогда не задумывалась об переходе, а тут пришли к нам долбанные аудиторы и заставили все интранет ресурсы переверстать на блочную верстку, видите ли "стандарты", ну я не об этом...).

Такой вопрос. Как мне реализовать следующую схему:
<div фиксированной длины в пикселях><div длина в оставшуюся длину браузера><div фиксированной длины в пикселях>
все это должно стоять в один ряд и быть одинаковой высоты.

К примеру аналогичная схема с использованием табличной верстки, привела в предыдущем сообщении (см. листинг начиная с таблицы).
попыталась сделать ту же самую схему с помощью DIV, т.е.
<div style="width:200;height:100;float:left">...</div>
<div>...</div>
<div style="width:200;float:right">...</div>

и получилась какая-то лажа.
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж dogma
aka Достоевский


Возраст: 27
Знак зодиака: Телец
Зарегистрирован: 20.12.2004
Сообщения: 1702
Откуда: Холмск
СообщениеСр, 22-Окт-2008 5:48 
Цитата

Если я тебя правильно понял то:
В первом случае тебе надо, что бы размер рамки div'а увеличивался с его содержимым; не увеличивался до ширины окна браузера. Для этого достаточно выставить свойство float.

Во втором случае попробуй так:
HTML:
  1.  
  2. <div style="width:200;height:100;float:left">...</div>
  3. <div style="height:100;float:left">...</div>
  4. <div style="width:200;height:100;float:left">...</div>
  5.  


Добавлено спустя 20 минут 2 секунды:

Можно сделать так:
Внуть блока добавить два других блока. Например так:
HTML:
  1.  
  2. <div class=box2 style="height:260">
  3. <div class=box style="width:222;height:260;float:left">Левый блок</div>
  4.  
  5.  
  6. <div class=box style="width:222;height:260;float:right">
  7. Правый блок
  8. </div>
  9.  
  10. Середина
  11. </div>


css:
  1.  
  2. div.box               {border:1px solid #000000;                                               
  3.                                                         margin:5px}
  4. div.box2             {border:1px solid #000000;                     
  5.                                                 margin:5px}     
  6.  

_________________
Bonum initium est dimidium facti
SQL-задачи (on-line)
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж Guffi
Энтузиаст


Возраст: 36
Знак зодиака: Близнецы
Зарегистрирован: 06.08.2004
Сообщения: 250
Откуда: Лангепас
СообщениеСр, 22-Окт-2008 6:27 
Цитата

Попробуй:
HTML:
  1. <div style="width:200;height:100;float:left">...</div>
  2. <div style="position: absolute">...</div>
  3. <div style="width:200;float:right">...</div>

Хотя так тоже глюков хватает, мне приходилось использовать кучу контейнеров "див в диве"

_________________
Не сами по себе мы хороши, а фону из говна благодаря
В начало
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Пол:Жен Kate
Постоянный участник


Возраст: 27
Знак зодиака: Стрелец
Зарегистрирован: 04.06.2007
Сообщения: 149

СообщениеСр, 22-Окт-2008 8:16 
Цитата

Спасибо dogma и guffi, но во всех 3х вариантах глюки - как минимум - перенос крайнего правого блока (и середины) при соотв. уменьшении окна браузера на новую нижную позицию.

Все что у меня получилось сделать в таком же стиле с помощью DIV - это вот такая схема: [слева блок фиксированной ширины][за ним следует блок длины во все оставшееся пространство браузера], т.е.:
HTML:
  1.  
  2. <div style="background-color:yellow;width:200;height:100;float:left;">...</div>
  3. <div style="background-color:blue;height:100;margin-left:200;">...</div>
  4.  


Так и при уменьшении окна ничего не переносится, но почему-то при максимальном уменьшении правый блок, корректно отображая свой контент, теряет свой background-color (т.е. отображаются 3 точки на белом уже фоне).

вложенность в DIV'ах, в отличие от табличной вложенности, не давала у меня ожидаемого эффекта, вложенными дивы вообще как будто не имеют отношения к тем в кого они вложены, как будто они все position:absolute.

Может я недостаточно разбираюсь в безтабличной верстке и возможно у меня за годы html-мышление сформировалось табличным, но мне что-то кажется, что верстке с помощью DIV не хватает возможностей табличной верстки, в частности гибкого расположения блоков в нужной конструкции в комбинации динамического и статического размеров. Нафига тогда "профессионалы" катят пустую бочку на тех кто верстает таблицами?
В начало
Посмотреть профиль Отправить личное сообщение
Пол:Муж dogma
aka Достоевский


Возраст: 27
Знак зодиака: Телец
Зарегистрирован: 20.12.2004
Сообщения: 1702
Откуда: Холмск
СообщениеСр, 22-Окт-2008 9:16 
Цитата

Со временем научишься
_________________
Bonum initium est dimidium facti
SQL-задачи (on-line)
В начало
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Страница 1 из 1
Перейти:  
Новая тема  Ответить  Печать

Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете присоединять файлы в этом форуме
Вы можете скачивать файлы в этом форуме
хостинг от .masterhost 
Rambler's Top100