Почему Safari игнорирует атрибуты высоты строки таблицы CSS (tr) после перерисовки?
-
06-07-2019 - |
Вопрос
Я пытаюсь применить css-стиль к html-таблице, созданной GWT (Google Web Toolkit), в Safari.В частности, я не могу заставить Safari учитывать атрибут высоты строки таблицы после того, как я запускаю любую перерисовку таблицы.
Следующий базовый пример иллюстрирует проблему:
<html>
<head>
<style type="text/css">
tr {
height: 50px;
font-weight: bold; /* added to prove that other style rules are re-applied when enabling css again */
}
</style>
</head>
<body>
<table border="1px">
<tr>
<td>one</td>
<td>two</td>
<td>three</td>
</tr>
</table>
</body>
</html>
Если я открою эту страницу в Safari, она сначала отобразится правильно.Если затем я выберу «отключить стили» в меню «Разработка», а затем сразу же снова включу их, правило высоты игнорируется, и высота строки таблицы рассчитывается так, как если бы для нее было установлено значение «авто».
Именно это происходит, когда строки/ячейки программно добавляются или удаляются в моей GWT FlexTable.
Кто-нибудь знает, что вызывает такое поведение и существует ли обходной путь, который не требует установки фиксированной высоты для всей таблицы?
Подробности:Запуск Safari версии 4.0.3 (5531.9) на Mac OSX Leopard
Проблема также возникает при использовании браузера в режиме хостинга GWT (который, по сути, представляет собой Safari при запуске на Mac).
Решение
TR
теги не имеют атрибута высоты в спецификациях W3C.Вам следует установить высоту TD
вместо этого содержат теги, которые он содержит.
Другие советы
WebKit оптимизирован по производительности и иногда отказывается перерисовывать определенные области, если считает, что в этом нет необходимости.Возможно, вы сможете обойти это, вызвав полную перерисовку, например.изменение размера окна на 1 пиксель и обратно на 1 пиксель (должен быть какой-то более разумный способ).