Делаем «пустые» ячейки кликабельными в HTML-таблицах - PullRequest
1 голос
/ 13 июля 2009

Я хотел бы сделать все ячейки таблицы HTML активируемыми, то есть ссылка из тега привязки активна из любой точки ячейки. Загвоздка в том, что в клетках нет содержимого. Мы просто используем таблицу HTML для визуального представления величин путем окрашивания фона каждой ячейки. Ячейки, содержащие теги привязки, но без содержимого между тегами привязки.

Ниже приведены три примера таблиц. В первой таблице измерения для ячеек не определены. Во второй таблице определены минимальные размеры. В третьей таблице ширина и высота определены явно. В первой ячейке первой строки каждой таблицы находится простой символ точки. Обратите внимание, что в первой и второй таблицах кликабельна только эта ячейка. Мы хотели бы избежать явной установки высоты и ширины, и поэтому, если бы мы могли изменить одну из первых двух таблиц, чтобы она соответствовала кликабельному поведению третьей, это было бы фантастически. Мы можем поместить неразрывный пробел ( ) в теги привязки, но есть ли другое, более элегантное решение?

<html>
<head>
  <style>
    td.min {min-width: 1px; min-height: 1px;}
    td.defined {width: 50px; height: 50px;}
    td a.fullcell {width: 100%; height: 100%; display: block;}
  </style>
</head>
<body>
  <h1>No dimension defined</h1>
  <table border="1">
    <tr>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
    <tr>
      <td>A</td>
      <td bgcolor="#ffbbbb"><a class="fullcell" href="#">.</a></td>
      <td bgcolor="#bbffbb"><a class="fullcell" href="#"></a></td>
    </tr>
    <tr>
      <td>B</td>
      <td bgcolor="#bbffbb"><a class="fullcell" href="#"></a></td>
      <td bgcolor="#ffbbff"><a class="fullcell" href="#"></a></td>
    </tr>
  </table>
  <h1>Min-dimension defined</h1>
  <table border="1">
    <tr>
      <td class="min">1</td>
      <td class="min">2</td>
      <td class="min">3</td>
    </tr>
    <tr>
      <td class="min">A</td>
      <td class="min" bgcolor="#ffbbbb"><a class="fullcell" href="#">.</a></td>
      <td class="min" bgcolor="#bbffbb"><a class="fullcell" href="#"></a></td>
    </tr>
    <tr>
      <td class="min">B</td>
      <td class="min" bgcolor="#bbffbb"><a class="fullcell" href="#"></a></td>
      <td class="min" bgcolor="#ffbbff"><a class="fullcell" href="#"></a></td>
    </tr>
  </table>
  <h1>Dimensions defined</h1>
  <table border="1">
    <tr>
      <td class="defined">1</td>
      <td class="defined">2</td>
      <td class="defined">3</td>
    </tr>
    <tr>
      <td class="defined">A</td>
      <td class="defined" bgcolor="#ffbbbb"><a class="fullcell" href="#">.</a></td>
      <td class="defined" bgcolor="#bbffbb"><a class="fullcell" href="#"></a></td>
    </tr>
    <tr>
      <td class="defined">B</td>
      <td class="defined" bgcolor="#bbffbb"><a class="fullcell" href="#"></a></td>
      <td class="defined" bgcolor="#ffbbff"><a class="fullcell" href="#"></a></td>
    </tr>
  </table>
</body>
</html>

Ответы [ 2 ]

6 голосов
/ 13 июля 2009

CSS:

table { empty-cells: show; }

, но это не поддерживается в IE . &nbsp; по-прежнему является лучшим выбором для обратной совместимости.

5 голосов
/ 13 июля 2009

Вы можете найти интересную статью (частично) об этой проблеме здесь .

Я бы лично пошел по маршруту & nbsp; : он запускает относительно согласованное поведение (в разных браузерах) и довольно часто используется в наши дни.

Другой вопрос: действительно ли вам нужны таблицы для разметки (это табличные данные)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...