Сплит td в два

Я пытаюсь разбить TD (ячейку таблицы), чтобы выглядеть так, как если бы это были две ячейки. Проблема в том, что когда клетка растет в Height, я не могу заставить два div внутри занять всю доступную высоту. Поскольку эти ячейки могут динамически расти, я также не могу установить фиксированную высоту (что могло бы решить проблему).

Здесь мой код:

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>JS Bin</title>
<!--[if IE]>
  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<style>
  article, aside, figure, footer, header, hgroup, 
  menu, nav, section { display: block; }
  td { border: 1px solid black; width: 50px; text-align: center; margin:0; padding:0 }
  #span1 { background-color: #DDD; width: 25px; float: right; }
  #span2 { background-color: #EEE; width: 24px; float: left; }
  .t { border-top: 1px solid black; }
  .r { border-right: 1px solid black; height: 100%; }
</style>
</head>
<body>
  <table>
    <tbody>
      <tr>
        <td>1</td><td>2</td><td>3<div><div id="span1" class="t">1</div><div id="span2" class="t r">1</div></div></td><td>4</td>
      </tr>
      <tr>
        <td>1</td><td>2</td><td><div id="span1">3</div><div id="span2" class="r">3</div></td><td>4</td>
      </tr>
      <tr>
        <td>1</td><td>2 2 2 2 2 22 2 </td><td><div id="span1">3</div><div id="span2" class="r">3</div></td><td>4</td>
      </tr>
      <tr>
        <td>1</td><td>2</td><td><div id="span1">3</div><div id="span2" class="r">3</div></td><td>4</td>
      </tr>
      <tr>
        <td>1</td><td>2 2 2 2 2 2 2 2 </td><td><span style="line-height:2"><div id="span1">3</div><div id="span2" class="r">3</div></span></td><td>4</td>
      </tr>
    </tbody>
  </table>
</body>
</html>

Вот как это выглядит:

current table view

Я не хочу видеть эти белые пробелы в столбце 3.

Есть идеи, как это решить? Я некоторое время сражался с CSS, но пока не повезло...

Спасибо!.

Ответ 1

вам нужно установить высоту td height = 100% и .span1 установить высоту = 100%, тогда попробуйте это, вы можете получить ответ.

<html>
<head>
<meta charset=utf-8 />
<title>JS Bin</title>
<!--[if IE]>
  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<style>
  article, aside, figure, footer, header, hgroup, 
  menu, nav, section { display: block; }
  td { border: 1px solid black; width: 50px; text-align: center; margin:0; padding:0; height:100%; }
  #span1 { background-color: #DDD; width: 25px; float: right; height:100%; }
  #span2 { background-color: #EEE; width: 24px; float: left; }
  .t { border-top: 1px solid black; }
  .r { border-right: 1px solid black; height: 100%; }
</style>
</head>
<body>
  <table>
    <tbody>
      <tr>
        <td>1</td><td>2</td><td>3<div><div id="span1" class="t">1</div><div id="span2" class="t r">1</div></div></td><td>4</td>
      </tr>
      <tr>
        <td>1</td><td>2</td><td><div id="span1">3</div><div id="span2" class="r">3</div></td><td>4</td>
      </tr>
      <tr>
        <td>1</td><td>2 2 2 2 2 22 2 </td><td><div id="span1">3</div><div id="span2" class="r">3</div></td><td>4</td>
      </tr>
      <tr>
        <td>1</td><td>2</td><td><div id="span1">3</div><div id="span2" class="r">3</div></td><td>4</td>
      </tr>
      <tr>
        <td>1</td><td>2 2 2 2 2 2 2 2 </td><td><span style="line-height:2"><div id="span1">3</div><div id="span2" class="r">3</div></span></td><td>4</td>
      </tr>
    </tbody>
  </table>
</body>
</html>

Ответ 2

Попробуйте установить

display:inline-block

может также не понадобиться также добавить высоту 100%.

Также нет способа, которым вы могли бы просто добавить 2 td вместо того, чтобы пытаться имитировать 2??

Ответ 3

вы можете поместить таблицу внутри этой ячейки таблицы, затем эту внутреннюю таблицу вы можете делать, как хотите, например, td colspan="2" для верхней строки, а td td для нижней строки (это напоминает мне уродливые дни таблицы макет, но все, что работает для вас!)

Ответ 4

Я также искал способ разделить TD (Cell Data Cell). Прочитав много сообщений и после нескольких неудачных попыток, я, наконец, взломал его. Огромное спасибо всем, кто выложил ранее, так же как и ваш кредит, что я смог подключить точки.

Есть две вещи, которые вам нужно иметь в виду: влияние на строку заголовка и итоговый ряд данных. Я имею в виду, что ячейки в верхней строке [Affecting Header Row], которые используют "colspan" , непосредственно влияют на ячейки в строке под ними [Resulting Data Row]. Например, если моя результирующая строка (2-я строка) должна содержать разделенные TD, то на нее влияет строка, которая использует "colspan" в своих TDs (1st Row). Но если следующая строка (3-я строка) не должна быть затронута "colspan" из 1-го ряда, ячейки в следующей строке (3-я строка) должны иметь те же атрибуты "colspan" , что и ячейки в 1-й строке, это предотвращает их от раздробления и заставляет их "зависеть" от обычного разрыва.

На изображении [щелкните ссылку, чтобы увидеть изображение], у меня есть только 2 столбца [2-й и 4-й столбцы], которые разбивают TDs под ними. В 1-й строке я использую "colspan" , чтобы повлиять на строки ниже. Тем не менее, я не хочу разделять 2-й и 3-й строки, поэтому они имеют одинаковые "колпаны" в качестве первой строки. Я хочу разделить ячейки в 4-й и 5-й строках [во 2-м и 4-м столбцах, конечно,], поэтому для этого они не содержат атрибутов "colspan" , что делает их затронутыми строками над ними, которые используют ' Объединение столбцов. 6-я строка не затрагивается "colspans" из предыдущих строк, потому что она содержит те же атрибуты "colspan" , что и первые 3 строки. 7-я и последняя строка содержит разделенные TD, потому что они, как и строки 4 и 5, не содержат "colspans". Это может показаться запутанным, но если вы посмотрите на изображение и попробуете исходный код, я думаю, вы будете очень довольны. Надеюсь, это поможет.

https://www.flickr.com/photos/[email protected]/sets/72157651047314439/

<table border="1px solid" cellspacing="5" bordercolor="#000000" width="959" cellpadding="5">
  <tr align="justify" valign="top">
    <td valign="middle" bgcolor="#FFFFFF" width="210"><h4 style="color:#000000" align="center">Nothing Special Here</h4></td>
    <td colspan="2" valign="middle" bgcolor="#6E7F8B"><h4 style="color:#FFFFFF" align="center">Colspan=&quot;2&quot;</h4></td>
    <td valign="middle" bgcolor="#6E7F8B" width="191"><h4 style="color:#FFFFFF" align="center">No Colspan Here</h4></td>
    <td colspan="2" valign="middle" bgcolor="#6E7F8B"><h4 style="color:#FFFFFF" align="center">Colspan=&quot;2&quot;</h4></td>
  </tr>
  <tr class="gray1" valign="top" align="justify">
    <td valign="middle"><p align="justify">Nothing Special Here</p></td>
    <td colspan="2" valign="middle"><p align="center">Colspan=&quot;2&quot;</p></td>
    <td width="191" valign="middle"><p align="center">No Colspan Here</p></td>
    <td colspan="2" valign="middle"><p align="center">Colspan=&quot;2&quot;</p></td>
  </tr>
  <tr class="gray1" valign="top" align="justify">
    <td valign="middle"><p align="justify">Nothing Special Here</p></td>
    <td colspan="2" valign="middle"><p align="center">Colspan=&quot;2&quot;</p></td>
    <td width="191" valign="middle"><p align="center">No Colspan Here</p></td>
    <td colspan="2" valign="middle"><p align="center">Colspan=&quot;2&quot;</p></td>
  </tr>
  <tr class="gray1" valign="top" align="justify">
    <td valign="middle"><p align="justify">Nothing Special Here</p></td>
    <td width="129" valign="middle"><p align="center">Nothing Special</p></td>
    <td width="120" valign="middle"><p align="center">Nothing Special</p></td>
    <td width="191" valign="middle"><p align="center">Nothing Special</p></td>
    <td width="99" valign="middle"><p align="center">Nothing Special</p></td>
    <td width="101" valign="middle"><p align="center">Nothing Special</p></td>
  </tr>
  <tr class="gray1" valign="top" align="justify">
    <td valign="middle"><p align="justify">Nothing Special Here</p></td>
    <td valign="middle"><p align="center">Nothing Special</p></td>
    <td valign="middle"><p align="center">Nothing Special</p></td>
    <td valign="middle"><p align="center">Nothing Special</p></td>
    <td valign="middle"><p align="center">Nothing Special</p></td>
    <td width="101" valign="middle"><p align="center">Nothing Special</p></td>
  </tr>  
  <tr class="gray1" valign="top" align="justify">
    <td valign="middle"><p align="justify">Nothing Special Here</p></td>
    <td colspan="2" valign="middle"><p align="center">Colspan=&quot;2&quot;</p></td>
    <td valign="middle"><p align="center">No Colspan Here</p></td>
    <td colspan="2" valign="middle"><p align="center">Colspan=&quot;2&quot;</p></td>
  </tr>  
  <tr class="gray1" valign="top" align="justify">
    <td valign="middle"><p align="justify">Nothing Special Here</p></td>
    <td valign="middle"><p align="center">Nothing Special</p></td>
    <td valign="middle"><p align="center">Nothing Special</p></td>
    <td valign="middle"><p align="center">Nothing Special</p></td>
    <td valign="middle"><p align="center">Nothing Special</p></td>
    <td valign="middle"><p align="center">Nothing Special</p></td>        
  </tr>  
</table>