Jump to content
  • 0

Ширина в теге <col>


Question

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

Подскажите, пожалуйста, а как установить для тега col значение ширины "auto", ну, например типа так: <col width="auto">, но, это не работает, это можно только через стили, то есть, дать класс тегу и через класс уже задавать, будет так:

<col class="aaa">

.aaa{width:auto;}

Это понятно, но, мне так не надо, мне надо именно в самом теге это задать без стилей!

Link to comment
Share on other sites

18 answers to this question

Recommended Posts

  • 0

Можно вот так

<col style="width: auto">

Честно, сейчас лень искать, но вроде бы auto это стандартное значение, которое и без стилей работает. Хотя, возможно, я не прав. Давно с таблицами не имел дела.

Link to comment
Share on other sites

  • 0
Можно вот так

<col style="width: auto">

Честно, сейчас лень искать, но вроде бы auto это стандартное значение, которое и без стилей работает. Хотя, возможно, я не прав. Давно с таблицами не имел дела.

Не, ну, это тот же стиль получается, только инлайновый, а мне надо именно без применения стилей типа так: <col width="auto">, можно же задавать конкретные значения ширины типа : <col width="40"> и т. п., вот, соответственно, должно быть и авто, но нигде по этому поводу ничего не сказано, в общем этот вопрос не освещён даже здесь:

http://htmlbook.ru/html/col/width

Link to comment
Share on other sites

  • 0

Начинающий ве стальщик!,

По умолчанию значение width и так имеет значение auto, т.е. его никак не нужно дополнительно задавать. Лучше расскажи подробнее, что ты хочешь получить, желательно с картинкой :)

<col width="*"> - попробуй этот вариант. Это возможно и есть авто

Если мне не изменяет память, это пропорциональное задание ширины. Ячейка в этом случае должна занять всё оставшееся пространство, при условии задания ширины таблицы.

Link to comment
Share on other sites

  • 0
Начинающий ве стальщик!,

По умолчанию значение width и так имеет значение auto, т.е. его никак не нужно дополнительно задавать. Лучше расскажи подробнее, что ты хочешь получить, желательно с картинкой :)

Если мне не изменяет память, это пропорциональное задание ширины. Ячейка в этом случае должна занять всё оставшееся пространство, при условии задания ширины таблицы.

Оксан, а ты не могла бы объяснить, как работает эта штуку со звёздочкой? А то я чё то так и не смог допереть.

Если можно, с примерчиками :)

Link to comment
Share on other sites

  • 0
Оксан, а ты не могла бы объяснить, как работает эта штуку со звёздочкой? А то я чё то так и не смог допереть.

Если можно, с примерчиками :)

О, точно, присоединяюсь! Действительно, толком неосвещено с этой звездой, то ли она авто, то ли не авто? Ждём разъяснения экспертов.

Начинающий ве стальщик!,

По умолчанию значение width и так имеет значение auto, т.е. его никак не нужно дополнительно задавать. Лучше расскажи подробнее, что ты хочешь получить, желательно с картинкой :)

ОК, постараюсь скрины сделать.

Link to comment
Share on other sites

  • 0
Оксан, а ты не могла бы объяснить, как работает эта штуку со звёздочкой? А то я чё то так и не смог допереть.

Если можно, с примерчиками :)

Попробую, но только завтра. Помню только как теоретически должна работать, с практической стороны тоже оказалось несколько вопросов, так что надо освежить знания :)

Link to comment
Share on other sites

  • 0
Попробую, но только завтра. Помню только как теоретически должна работать, с практической стороны тоже оказалось несколько вопросов, так что надо освежить знания :)

Спасибыы, буду ждать :)

Link to comment
Share on other sites

  • 0
Спасибыы, буду ждать :)

Хм, как оказалось пропроциональная ширина для табличных элеентов не работает вовсе (col и colgroup) :)

В теории это должно работать так.

Самая простая таблица:

<table width="300">
<col width="1*">
<col width="2*">
<tr>
<td>1</td>
<td>2</td>
</tr>
</table>

Здесь под первую колонку отводится одна часть всей ширины таблицы, на 2-ю две части. Итого имеем на всю ширину три части, т.е. первая колонка у нас должна занять 1/3 ширины (100 пикселей), вторая 2/3 ширины (200 пикселей).

Если ширина явно задана, то ширины колонок вычисляются сразу, если ширина не задана, то после генерации всей таблицы.

Если помимо пропрорциональных размеров заданы размеры в процентах или пикселах. То вначале назначается ширина этим колонкам, а потом оставшееся место распределяется между пропрорциоными. 0* - резервирует минимальное необходимое место для отображения содержимого ячейки. * - распределяет всё оставшееся.

Link to comment
Share on other sites

  • 0
Эх жаль, выходит этот приём не пашет?

Выходит, что нет. Более того, в процессе экспериментов удавалось даже поломать таблицу — некоторые ячейки просто схлопывались вне зависимости от содержимого.

Думаю это связано с тем, что у <col> ширина задается в формате multi-length, который поддерживает ширину в пикселях, процентах и относительную ширину, а у <td> ширина задается в length. Сами же ячейки лежат последними при генерации таблицы и стили ячеек перекрывают все остальные. <col> же, видимо, передает не вычисленное значение в пикселях или процентах, а как есть, из-за чего и возникает конфликт и ошибки. :)

Link to comment
Share on other sites

  • 0
Выходит, что нет. Более того, в процессе экспериментов удавалось даже поломать таблицу — некоторые ячейки просто схлопывались вне зависимости от содержимого.

Думаю это связано с тем, что у <col> ширина задается в формате multi-length, который поддерживает ширину в пикселях, процентах и относительную ширину, а у <td> ширина задается в length. Сами же ячейки лежат последними при генерации таблицы и стили ячеек перекрывают все остальные. <col> же, видимо, передает не вычисленное значение в пикселях или процентах, а как есть, из-за чего и возникает конфликт и ошибки. :)

Понял, спасибо тебе Оксан. А если не сложно, можешь объяснить мне эти две вещи multi-length и length :)

Link to comment
Share on other sites

  • 0
Понял, спасибо тебе Оксан. А если не сложно, можешь объяснить мне эти две вещи multi-length и length :)

В HTML определяет три типа длин, которые могут быть заданны в атрибутах.

1. Pixels — собственно пиксели. Должно быть выражено целым числом, единицы измерения не указываются.

2. Length — включает в себя подмножество Pixels, а также процентные значения. Т.е. это значение может быть выражено, как в пикселях, так и процентах.

3. MultiLength — содержит единицы длины, предусмотренные для Length (пиксели и проценты), а также относительные длины, выраженные в виде i*, где i — целое число.

Каждый атрибут элемента предусматривает в качестве допустимых значений свой тип длины.

Например:

IMG

width %Length; #IMPLIED -- override width --

Т.е. ширина для изображений может задаваться в пикселях или процентах.

TD

width = length [CN]

COL

width = multi-length [CN]

This attribute specifies a default width for each column spanned by the current COL element. It has the same meaning as the width attribute for the COLGROUP element and overrides it.

Тут уже значение width помимо процентов и пикселей может задаваться в пропорциональных значениях.

Или более конкретный и работающий пример

FRAMESET

rows = multi-length-list [CN]

This attribute specifies the layout of horizontal frames. It is a comma-separated list of pixels, percentages, and relative lengths. The default value is 100%, meaning one row.

cols = multi-length-list [CN]

This attribute specifies the layout of vertical frames. It is a comma-separated list of pixels, percentages, and relative lengths. The default value is 100%, meaning one column.

А вот, кстати, и просто пиксели

FRAME

marginwidth = pixels [CN]

This attribute specifies the amount of space to be left between the frame's contents in its left and right margins. The value must be greater than zero (pixels). The default value depends on the user agent.

marginheight = pixels [CN]

This attribute specifies the amount of space to be left between the frame's contents in its top and bottom margins. The value must be greater than zero (pixels). The default value depends on the user agent.

Link to comment
Share on other sites

  • 0

У меня по беглым опытам сложилось впечатление, что браузеры тупо игнорируют звездочку в записи i*, причем как для col, так и для td. Если видят целое число — интерпретируют как пиксели, что бы там дальше ни стояло. Отдельно взятую звездочку, что характерно, растягивают (тоже в обоих случаях), так что * и 1*, вопреки спеке, для них разные вещи, а вот 20 и 20* — одна.

Подозреваю, что разработчки браузеров не заморачивались с нюансами length/multi-length, а тупо сделали один алгоритм на все случаи, учитывающий самые распространенные ситуации из практики (поскольку <col width="2*"> в живой природе не встретишь, а вот всякого типа <td width="25px"> навалом)...

Link to comment
Share on other sites

  • 0
У меня по беглым опытам сложилось впечатление, что браузеры тупо игнорируют звездочку в записи i*, причем как для col, так и для td. Если видят целое число — интерпретируют как пиксели, что бы там дальше ни стояло. Отдельно взятую звездочку, что характерно, растягивают (тоже в обоих случаях), так что * и 1*, вопреки спеке, для них разные вещи, а вот 20 и 20* — одна.

Звездочку, имхо, они воспринимают как её отсутствие либо ошибку. По крайней пример из спеки отрабатывается не корректно. Колонки должны получиться равной ширины, а по факту ширина генерируется автоматически, как если бы ширина отсутствовала. А вот с числом видимо да, браузеры "исправляют" ошибку разработчика, как они поступают с px.

<colgroup width="*">
<col>
<col>
</colgroup>

Подозреваю, что разработчки браузеров не заморачивались с нюансами length/multi-length, а тупо сделали один алгоритм на все случаи, учитывающий самые распространенные ситуации из практики (поскольку <col width="2*"> в живой природе не встретишь, а вот всякого типа <td width="25px"> навалом)...

Ну потому и не встретишь, что браузеры не поддерживают подобную запись.Хотя что странно на сайте FF такая возможность заявлена... :)

Upd. Браузеры в принципе игнорируют любое значение после числа. Так что в любом случае будут пиксели.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy