Я сталкивался с этим вопросом и не видел ни одного ответа, который действительно решит проблему.
Проблема возникает из-за того, что IE7 не видит никакого внутреннего содержимого для ячейки; в терминах программирования ячейка получается как null
, и, как и большинство вещей, вы не можете ограничить null
или выполнить с ней какие-либо действия. Браузеру необходим элемент / объект, имеющий макет, чтобы применить границу / макет.
Даже пустые <div></div>
или <span></span>
не содержат содержимого, поэтому отображать нечего, что приводит к тому же null
случаю.
Однако вы можете заставить браузер думать, что в ячейке есть содержимое, предоставляя пустые свойства макета div/span
. Самый простой способ - применить стиль CSS zoom:1
.
<table>
<tr><td>Foo</td>
<td><span style="zoom:1;"></span></td></tr>
</table>
Этот обходной путь лучше, чем использование
, поскольку он не излишне портит программы чтения с экрана и не искажает значение ячейки. В более новом браузере вы можете использовать альтернативу empty-cell:<show|hide>
.
Примечание: вместо комментария Томалака, следует понимать, что hasLayout не имеет ничего общего с null
, это было просто сравнение того, как браузер взаимодействует и отображает hasLayout аналогично тому, как база данных или язык программирования взаимодействует с нулями. Это растяжка, но я подумал, что это может быть легче понять тем программистам, которые стали веб-дизайнерами.