Jump to content
  • 0

«Резина» и таблицы


Nanto
 Share

Question

Много гуглил - инфы практичеки по этой теме нет...

Такая проблема:

сделано горизонтальное меню (панель навигации) через таблицу. Вроде всё нормально... Но обнаруживается паскудная особенность - при растягивании окна браузера, таблица соответственно тоже тянется. Но тянется она «пропорционально» - т.е. контент ячеек (текстовые ссылки навигации) неизменен и наращивание размера происходит за счёт... Не знаю даже чего... Паддингов ячеек, наверное же? Так вот эти паддинги высчитываются пропорционально длине ячейки (читай - содержимого ячейки). Смотрится несколько убого. Длинная строка (например, «Главное меню») имеет огромные отступы!.. А «FAQ», допустим, ужат до нельзя. Можно ли управлять «растягиванием»? Чтобы браузер добавлял одинаковые отступы?

P.S. Вопрос касается именно таблиц! Можно было бы сделать и через список, но на то свои причины... Да и кстати, это вообще актуальная проблема для всего css - я так и не встречал внятных решений для "резинового горизонтального меню" (ну есть там костыли через "<ul>, float и table-cell"), чтобы тянулись только внутренние промежутки. А казалось бы куда уж насущнее!


<table width="100%" bgcolor="#fa8e47" border="1">
<tr>
<td align="center"><a href="#">Главное меню</a></td>
<td align="center"><a href="#">Второстепенное меню</a></td>
<td align="center"><a href="#">Третьестепенное меню</a></td>
<td align="center"><a href="#">FAQ</a></td>
</tr>
</table>

Edited by Nanto
Link to comment
Share on other sites

12 answers to this question

Recommended Posts

  • 0

Блин, хотел же дописать!

В оригинале 7 ячеек!

Так что боюсь, браузеры конструкцию типа "width: 14,2857(142857)%" не осилят... Или они умеют "умно" округлять относительные величины?

Edited by Nanto
Link to comment
Share on other sites

  • 0

Блин, хотел же дописать!

В оригинале 7 ячеек!

Так что боюсь, браузеры конструкцию типа "width: 14,2857(142857)%" не осилят... Или они умеют "умно" округлять относительные величины?

Да, все кроме Оперы <_<

Сделайте

table{
table-layout:fixed;
width:100%;
}

Link to comment
Share on other sites

  • 0

Блин, хотел же дописать!

В оригинале 7 ячеек!

Так что боюсь, браузеры конструкцию типа "width: 14,2857(142857)%" не осилят... Или они умеют "умно" округлять относительные величины?

Да, все кроме Оперы <_<

Сделайте

table{
table-layout:fixed;
width:100%;
}

Ага, спасибо! Не знал про это свойство... А при этом надо выставлять длину ячеек? И в каком формате? 14% или 14.3%?

P.S. Но проблема уже не актуальна (хотя сам вопрос вполне) - при равной ширине ячеек и заданном кегле и гарнитуре текст не влезает в эти семь ячеек... Будем их резать пропорционально!

Link to comment
Share on other sites

  • 0

Блин, хотел же дописать!

В оригинале 7 ячеек!

Так что боюсь, браузеры конструкцию типа "width: 14,2857(142857)%" не осилят... Или они умеют "умно" округлять относительные величины?

Да, все кроме Оперы <_<

Сделайте

table{
table-layout:fixed;
width:100%;
}

Ага, спасибо! Не знал про это свойство... А при этом надо выставлять длину ячеек? И в каком формате? 14% или 14.3%?

P.S. Но проблема уже не актуальна (хотя сам вопрос вполне) - при равной ширине ячеек и заданном кегле и гарнитуре текст не влезает в эти семь ячеек... Будем их резать пропорционально!

Да, с этим свойством надо аккуратно обращаться. Могут быть проблемы, если текст не входит по размерам.

Link to comment
Share on other sites

  • 0

Не... Я в своё время повозился с такой же проблемой и списками... Само меню на списках сделать не проблема. Там начинается гемморой, когда эти блоки надо оформлять... На всяких там подсветках ховера и активных пунктах - другое оформление (размеры пункта меню увеличиваются и т.д.). Не помню точно в чём проблема, но вроде как "inline-block" мешал...

Link to comment
Share on other sites

  • 0

Если размеры шрифта увеличиваются, то да, расстояния будут некрасиво дергаться. Но сам по себе inline-block подсветкам ховера и прочим выделениям не только не мешает, но даже помогает :). Проблема данного решения может быть в отступе на высоту строки из-за псевдоэлемента, который помогает задействовать justify, но это тоже относительно несложно приводится к общему знаменателю и фиксится.

Впрочем, я там привел два варианта — у хардкорно-табличного, по идее, нет и этих проблем... :)

Link to comment
Share on other sites

  • 0

Если размеры шрифта увеличиваются, то да, расстояния будут некрасиво дергаться. Но сам по себе inline-block подсветкам ховера и прочим выделениям не только не мешает, но даже помогает :). Проблема данного решения может быть в отступе на высоту строки из-за псевдоэлемента, который помогает задействовать justify, но это тоже относительно несложно приводится к общему знаменателю и фиксится.

Впрочем, я там привел два варианта — у хардкорно-табличного, по идее, нет и этих проблем... :)

Нет, всё замечательно - спасибо за примеры. Ваш вариант реализации списка мне тоже ещё пригодится. Просто и так уже сделано таблицей, и как писал выше, выравнивание оказалось неактуально - не лезут эти семь пунктов при заданной гарнитуре и кегле в 1024px... Это уже проблемы дизайнера, который не смог посчитать кол-во пунктов!

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