Дисплей: блок не работает в Chrome или Safari
Мне просто нужно отображать ячейки строки таблицы по вертикали. Это отлично работает в FF, но не в Chrome или Safari на Ipad.
Пример ниже показывает, как ожидалось, в FF, причем каждая ячейка строки находится под друг другом, но в Chrome, похоже, игнорирует отображение: блок вообще.
В чем проблема - или есть лучший способ сделать это.
(Причина этого заключается в том, что im использует @media в CSS для визуализации таблицы по-разному для небольшого экрана)
для более наглядного примера:
Нормальная таблица может быть
DATA1 | DATA2 | DATA3
но с отображением: block, оно должно быть
DATA1
DATA2
DATA3
Большое спасибо
<html>
<head>
<style>
table,
thead,
tr,
td
{
display:block;
}
table,tr
{
border : 1px dotted red;
}
td
{
border:1px dashed blue;
}
thead
{
display:none;
}
</style>
</head>
<body>
<table>
<thead>
<tr>
<td>Heading 1</td>
<td>Heading 2</td>
<td>Heading 3</td>
</tr>
</thead>
<tbody>
<tr>
<td>Data 1</td>
<td>Data 2</td>
<td>Data 3</td>
</tr>
<tr>
<td>Data 1</td>
<td>Data 2</td>
<td>Data 3</td>
</tr>
<tr>
<td>Data 1</td>
<td>Data 2</td>
<td>Data 3</td>
</tr>
</tbody>
</table>
</body>
</html>
Ответы
Ответ 1
ИЗМЕНИТЬ 2:
Я думаю, что я решил вашу проблему. Webkit переопределяет display: block;
и вычисляет его как display: table-cell;
в td, если для html не объявлено <!DOCTYPE>
.
Чтобы исправить это, я рекомендую вам установить <!DOCTYPE html>
до <html>
вверху вашего html.
Причина, по которой jsfiddle будет работать, заключается в том, что на сайте уже объявлен <!DOCTYPE>
.
Попробуйте это и сообщите мне, исправляет ли ваша проблема. Если нет, попробую найти другой ответ.
Ответ 2
Таблица, разбитая в Chrome или Safari
Многие случаи встречаются без табуляции.
display:block;
display:"";
или
display:block;
display:table-row;
*display:block;
Ответ 3
Я сделал трюк с использованием th вместо td.
И взлом css, который применяется только к сафари (не webkit вообще).
HTML:
<table>
<tr>
<th>Cell 1</th>
<th>Cell 2</th>
</tr>
</table>
CSS
table {
width: 100%;
text-align: left;
}
/* Safari 7.1+ */
_::-webkit-full-page-media, _:future, :root .safari_only {
.safari-fix table tr {
display: block;
width: 100%;
}
}
/* Safari 10.1+ */
@media not all and (min-resolution:.001dpcm) {
@media {
.safari-fix table tr {
display: block;
width: 100%;
}
}
}
table th {
width: 100%;
display: block;
}
Вот мой jsfiddle