|
Как обойти поведение тега "table"? | ☑ | ||
---|---|---|---|---|
0
Sabre
19.08.21
✎
14:27
|
Если активно использовать объединение ячеек, то строки таблицы могут "схлопнуться". Вот простейший пример, таблица на 2 колонки и 3 строки:
<table border="1" bordercolor="#999" cellspacing="0px" cellpadding="2px" width="100%"> <tbody> <tr> <td rowspan="2"> <div>R1C1:R2C1 (row 1)</div> </td> <td> <div>R1C2 (row 1)</div> </td> </tr> <tr> <td rowspan="2"> <div>R2C2:R3C2 (row 2)</div> </td> </tr> <tr> <td> <div>R3C1 (row 3 не должна быть здесь!)</div> </td> </tr> </tbody> </table> Если вставите этот кусок в браузер, увидите, что одной строки не хватает. Она исчезла из за "эффективной" оптимизации. Кому лень проверять, таблица на выглядит вот так: ----------------------------------------------------------------------------------------- | R1C1:R2C1 (row 1) | R1C2 (row 1) | ----------------------------------------------------------------------------------------- | R3C1 (row 3 не должна быть здесь!) | R2C2:R3C2 (row 2) | ----------------------------------------------------------------------------------------- Скорее всего, это никак не обойти, поэтому нужен аналог тега table. Какие есть варианты? Цель - показывать на сайте отчеты, те что Excel |
|||
1
polosov
19.08.21
✎
14:36
|
||||
2
Sabre
19.08.21
✎
14:44
|
(1) Даже близко не рядом к проблеме
|
|||
3
polosov
19.08.21
✎
14:47
|
(2) Ближе, чем ты думаешь.
|
|||
4
polosov
19.08.21
✎
14:52
|
(2) Я бы обратил внимание на свойство table-layout. Сайтошлепы меня поправят.
|
|||
5
Sabre
19.08.21
✎
15:02
|
Сохранил табличный документ в html средствами 1с и глянул под капот. Кое что поправил, чтобы видно было. Тоже не айс, но хотя бы работает:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 5.0 Transitional//EN"> <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=utf-8"> <TITLE></TITLE> <STYLE TYPE="text/css"> body { background: #ffffff; margin: 0; font-family: Arial; font-size: 8pt; font-style: normal; } tr.R0{ height: 25px; } tr.R0 td.R0C0{ text-align: center; vertical-align: middle; border-left: #000000 1px solid; border-top: #000000 1px solid; border-bottom: #000000 1px solid; border-right: #000000 1px solid; } table {table-layout: fixed; padding: 0px; padding-left: 2px; vertical-align:bottom; border-collapse:collapse;width: 100%; font-family: Arial; font-size: 8pt; font-style: normal; } td { padding: 0px; padding-left: 2px; overflow:hidden; } </STYLE> </HEAD> <BODY STYLE="background: #ffffff; margin: 0; font-family: Arial; font-size: 8pt; font-style: normal; "> <TABLE style="width:100%; height:0px; " CELLSPACING=0> <COL WIDTH=63> <COL WIDTH=63> <TR CLASS=R0> <TD CLASS="R0C0" ROWSPAN=2>1</TD> <TD CLASS="R0C0">2</TD> </TR> <TR CLASS=R0> <TD CLASS="R0C0" ROWSPAN=2>4</TD> <TD CLASS="R0C0">4-1</TD> </TR> <TR CLASS=R0> <TD CLASS="R0C0">3</TD> <TD CLASS="R0C0">3-1</TD> </TR> </TABLE> </BODY> </HTML> |
|||
6
Asmody
19.08.21
✎
15:15
|
Лучший способ обойти поведение тега <table> - не использовать тег <table>
https://replit.com/@Asmody/TrustingOrderlyFreesoftware#index.html |
|||
7
Вафель
19.08.21
✎
15:40
|
а почему во 2 строке только 1 колонка?
|
|||
8
Вафель
19.08.21
✎
15:43
|
ты так хотел?
|
|||
9
Вафель
19.08.21
✎
15:43
|
||||
10
Метрополь
19.08.21
✎
15:51
|
(0) Очень просто. Не используй тег table. Это считается дурным тоном. Так только школьники и студенты делают.
|
|||
11
Вафель
19.08.21
✎
15:53
|
(10) ... и миста
|
|||
12
polosov
19.08.21
✎
15:55
|
(10) Ну не нужны ему может быть разные масштабы. Просто чтобы у 2,5 сотрудников в хроме выводилась табличка.
|
|||
13
Garykom
гуру
19.08.21
✎
15:55
|
(0) нахрен тебе table?
используй div |
|||
14
Fragster
гуру
19.08.21
✎
15:56
|
(8) судя по всему - как-то так: https://i.imgur.com/FpfY2Ta.png
|
|||
15
Fragster
гуру
19.08.21
✎
16:02
|
(10) тег table нужен для отображения табличных данных. для лэйаута - он действительно не нужен
|
|||
16
ДенисЧ
19.08.21
✎
16:02
|
Зачем тебе table? Используй grid, на худой конец flex...
|
|||
17
Fragster
гуру
19.08.21
✎
16:04
|
елки иголки, сохранил эксель в html, открыл блокнотом...
|
|||
18
Fragster
гуру
19.08.21
✎
16:04
|
300 строк js из (14) и ни одного - html
|
|||
19
Вафель
19.08.21
✎
16:05
|
с гридом конечно все просто
grid-template-areas: "a b" "a c" "d c"; |
|||
20
Вафель
19.08.21
✎
16:08
|
(18) там же реакт какой или аналог
|
|||
21
Метрополь
19.08.21
✎
16:25
|
(11) На мисте использование табличной верстки сложилось исторически, и тянется с древних времен, как традиция. Может быть в этом что-то есть. Пусть будет, меня устраивает.
|
|||
22
Метрополь
19.08.21
✎
16:27
|
(15) Тег "table" не нужен ни для чего, от слова чего. Он устарел.
|
|||
23
Fragster
гуру
19.08.21
✎
16:38
|
(22) нет
|
|||
24
Fragster
гуру
19.08.21
✎
16:39
|
не хватает только высоты, если надо как в (14): https://jsfiddle.net/mq5L96bu/
|
|||
25
Вафель
19.08.21
✎
17:02
|
А если там не нужен BR ?
|
|||
26
Метрополь
19.08.21
✎
17:05
|
(23) Ты не шаришь.
|
|||
27
Fragster
гуру
19.08.21
✎
17:11
|
(26) ну ну
|
|||
28
Fragster
гуру
19.08.21
✎
17:12
|
(25) тогда увеличь высоту ячейки любым другим способом
|
|||
29
Fragster
гуру
19.08.21
✎
17:12
|
не понятно только - то ли это, что нужно автору
|
|||
30
Sabre
20.08.21
✎
06:05
|
(29) Мне нужно выводить плоские отчеты (список, кросс-таблица) в браузере. Поэтому ячейки таблицы должны быть фиксированными и предсказуемыми. Передаю таблицу в json, браузер показывает. Все счастливы.
|
|||
31
Sabre
20.08.21
✎
06:39
|
Сейчас на свежую голову покопался в этом, выяснил, что если с верхних строк до текущей строки таблицы "дотягиваются" объединенные ячейки, то они вставляются между ячейками текущей строки, выталкивая их вправо:
------------- | 1 | 2 | 3 | ---- ---- | 1 | | 2 | 3 | ------------- |
|||
32
Fragster
гуру
20.08.21
✎
10:28
|
(31) ну, это соответствует спецификации
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |