Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сжимание таблиц. Как избежать?
 
 автор: Thamior   (08.06.2006 в 19:52)   письмо автору
 
 

Здравствуйте. Такой вопрос. Должна выводиться шибко длинная таблица, то есть такая, которую нужно скролить по горизонтали, чтобы посмотреть всю. Но браузер почему-то пытается втиснуть её в рамки одного скрола, при том, что я выставляю значения width в ячейках, он просто это игнорирует. Можно ли как-нибудь избежать такого поведения?
Заранее благодарен.

   
 
 автор: ec_stasis   (08.06.2006 в 20:01)   письмо автору
 
   для: Thamior   (08.06.2006 в 19:52)
 

А в таблице width пробовал выставлять?

   
 
 автор: 12345   (08.06.2006 в 20:05)   письмо автору
 
   для: ec_stasis   (08.06.2006 в 20:01)
 

Стандартно - рисунками-распорками; на стилях - table-layout:fixed

   
 
 автор: Thamior   (08.06.2006 в 20:07)   письмо автору
 
   для: 12345   (08.06.2006 в 20:05)
 

о, спасибо большое, как раз то что искал :)

   
 
 автор: Thamior   (08.06.2006 в 20:07)   письмо автору
 
   для: ec_stasis   (08.06.2006 в 20:01)
 

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

   
 
 автор: Thamior   (08.06.2006 в 20:27)   письмо автору
 
   для: Thamior   (08.06.2006 в 19:52)
 

К сожалению, названное свойство стиля таблицы отвечает немного не за это. table-layout: fixed просто ускоряет обработку таблиц за счёт того, что считает ширину ячеек исключительно по верхнему ряду. Выходит остаётся только картинками. Тогда прошу пожалуйста уточнить, какой тут формат лучше подойдёт, наверно gif, раз там есть прозрачные пиксели? И как их ставить, как background image? И откуда столько картинок взять для каждого поля, если они разной длины, генерировать мб в пхп? :) Пахнет большой головной болью :)

   
 
 автор: elenaki   (08.06.2006 в 21:31)   письмо автору
 
   для: Thamior   (08.06.2006 в 20:27)
 

не бакграундом, а <img src="1px.gif" width=1000 height=1>

1px.gif - это прозрачный гиф 1*1 пх. его растягиваете по горизонтали на сколько вам нужно , а по вертикали оставляете 1.

много картинок не нужно, достаточно одной.

   
 
 автор: 12345   (08.06.2006 в 21:31)   письмо автору
 
   для: Thamior   (08.06.2006 в 20:27)
 

Почему только? Если таблица без бордюров, то делаете верхнюю пустую строку высотой 1 пикс с указанными ширинами. Он и ускоряет, и фиксирует ширины, одно другому не мешает.

Распорки ставят одной и той же картинкой не в bg, конечно, но с разной явно указанной шириной и высотой, например, прозрачный гиф на 41 байт. Лучше ставить в отдельные ячейки, чтобы не мешались, но по дизайну не всегда возможно.

   
 
 автор: Thamior   (08.06.2006 в 22:02)   письмо автору
 
   для: 12345   (08.06.2006 в 21:31)
 

Эх, так если б фиксировал при том, когда вылезать за границы экрана должно. А так сужение продолжается. Проверял на самом не изощрённом примере:

<table border style="table-layout: fixed">
<tr>
<td width="70">&nbsp;</td>
<td width="70">&nbsp;</td>
<td width="70">&nbsp;</td>
...до упора...
<tr>
<table>

Похоже гиф единственный выход. Спасибо за помощь :)

   
 
 автор: RMW   (09.06.2006 в 00:11)   письмо автору
 
   для: Thamior   (08.06.2006 в 22:02)
 

А если скриптом как-нибудь эдак изощриться?

<html>
<head>
<script>
function f()
{
  var tdl = new Array();
  var mt = document.getElementById('MyTable');
  for(var i=0;i<mt.rows.length;i++)
  {
    var mr = mt.rows[i];
    var indx = 0;
    for(var j=0;j<mr.cells.length;j++)
    {
      indx += mr.cells[j].width-0;
    }
    tdl.push(indx);
  }

  var tbl;
  if(tdl.length>=2)tbl = Math.max.apply(null,tdl);
  else tbl = tdl[0];

  mt.width = tbl+'px';

}
</script>
</head>
<body onload="f()">

<table cellpadding="0" cellspacing="0" id="MyTable">
<tr>
<td width="70">&nbsp;</td> 
<td width="70">&nbsp;</td> 
<td width="70">&nbsp;</td> 
...до упора...
</tr>
</table>

</body>
</html>

   
 
 автор: Thamior   (09.06.2006 в 14:40)   письмо автору
 
   для: RMW   (09.06.2006 в 00:11)
 

Ага, можно и так, действительно. Или сделать через пхп генерацию этой таблицы, с той же вставкой width в тэг таблицы.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования