|   |   | 
| 
 | Как обойти поведение тега "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) ну, это соответствует спецификации     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |