Разделить строки таблицы HTML без заголовков на 50 % влево и 50 % вправо

У меня есть 20 таких строк в стандартной html-таблице (table>tbody>tr>td) без заголовка. текущая ситуация

<table>
    <tbody>
        <tr>
            <td>1</td>
        </tr>
        <tr>
            <td>2</td>
        </tr>
        <tr>
            <td>3</td>
        </tr>
        <tr>
            <td>4</td>
        </tr>
        <tr>
            <td>5</td>
        </tr>
        <tr>
            <td>6</td>
        </tr>
        <tr>
            <td>7</td>
        </tr>
        <tr>
            <td>8</td>
        </tr>
        <tr>
            <td>9</td>
        </tr>
        <tr>
            <td>10</td>
        </tr>
        <tr>
            <td>11</td>
        </tr>
        <tr>
            <td>12</td>
        </tr>
        <tr>
            <td>13</td>
        </tr>
        <tr>
            <td>14</td>
        </tr>
        <tr>
            <td>15</td>
        </tr>
        <tr>
            <td>16</td>
        </tr>
        <tr>
            <td>17</td>
        </tr>
        <tr>
            <td>18</td>
        </tr>
        <tr>
            <td>19</td>
        </tr>
        <tr>
            <td>20</td>
        </tr>
    </tbody>
</table>

Я хотел бы отобразить это так: желаемый результат

Когда я использую flexbox, он сортирует 1,2, следующую строку 3,4 и т. д.

Я нашел множество результатов о том, как делать другие вещи, но не это. Я помню, что это можно было сделать без JavaScript и без изменения HTML - и это была чистая CSS-фишка длиной в пару строк, но я больше не могу найти этот документ. Также искал в stackoverflow, но нигде не нашел. Если кто-нибудь может направить меня в правильное русло - спасибо!

Трудно сказать без дополнительного контекста, но это не похоже на табличную информацию. Таблица может быть неправильным способом разметки этого контента.

Sean 19.08.2024 02:09

Думаю, я могу с этим согласиться: современные способы используют элементы div/sections/etc, чтобы сделать их более отзывчивыми. Но у меня есть этот стол, так что придется с ним разобраться. + добавьте несколько точек останова, и мобильные устройства получат длинный список, а экраны большего размера получат 50/50. Сообщения, которые я читаю, похоже, не сходятся во мнениях относительно того, что лучше для SEO и т. д. html.com/tables VS htmltables.io/blog/beginners-guide-to-html-tables и т. д. Но для в некоторых приложениях это простой выбор. Я также не согласен с проблемой обслуживания кода на этой странице, возможно, для огромных/сложных таблиц, но я просто отображаю некоторые основные данные в этой таблице.

Rob C 19.08.2024 04:46

Таблицы действительно следует использовать только тогда, когда контент семантически табличный, например, когда он имеет заголовки строк или столбцов и имеет наибольший смысл (с точки зрения информации) в виде сетки. В противном случае следует использовать другие элементы, даже если они все еще представлены в виде сетки с помощью CSS.

Sean 19.08.2024 15:17
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
3
3
63
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Хитрость заключается в том, чтобы убедиться, что width равен 50% и вам нужно тяготеть влево, например

    tr {
       float: left;
       width: 50%;
    }

    tr {
       float: left;
       width: 50%;
    }
<table>
    <tbody>
        <tr>
            <td>1</td>
        </tr>
        <tr>
            <td>2</td>
        </tr>
        <tr>
            <td>3</td>
        </tr>
        <tr>
            <td>4</td>
        </tr>
        <tr>
            <td>5</td>
        </tr>
        <tr>
            <td>6</td>
        </tr>
        <tr>
            <td>7</td>
        </tr>
        <tr>
            <td>8</td>
        </tr>
        <tr>
            <td>9</td>
        </tr>
        <tr>
            <td>10</td>
        </tr>
        <tr>
            <td>11</td>
        </tr>
        <tr>
            <td>12</td>
        </tr>
        <tr>
            <td>13</td>
        </tr>
        <tr>
            <td>14</td>
        </tr>
        <tr>
            <td>15</td>
        </tr>
        <tr>
            <td>16</td>
        </tr>
        <tr>
            <td>17</td>
        </tr>
        <tr>
            <td>18</td>
        </tr>
        <tr>
            <td>19</td>
        </tr>
        <tr>
            <td>20</td>
        </tr>
    </tbody>
</table>

Я надеялся сделать это без плавания, насколько я помню, в этом не было необходимости. Но я протестирую обязательно. Спасибо!

Rob C 19.08.2024 02:35
Ответ принят как подходящий

Вот что-то близкое к этому, используя столбцы CSS и параметры display, отличные от исходных (табличных):

table {
  display: block;
}
tbody {
  display: block;
  width: 120px;
  column-count: 2;
  column-gap: 0;
}
tr {
  display: block;
  width: 60px;
  text-align: center;
  border: 1px solid #ccc;
}
td {
  display: inline;
}
<table>
  <tbody>
    <tr>
      <td>1</td>
    </tr>
    <tr>
      <td>2</td>
    </tr>
    <tr>
      <td>3</td>
    </tr>
    <tr>
      <td>4</td>
    </tr>
    <tr>
      <td>5</td>
    </tr>
    <tr>
      <td>6</td>
    </tr>
    <tr>
      <td>7</td>
    </tr>
    <tr>
      <td>8</td>
    </tr>
    <tr>
      <td>9</td>
    </tr>
    <tr>
      <td>10</td>
    </tr>
    <tr>
      <td>11</td>
    </tr>
    <tr>
      <td>12</td>
    </tr>
    <tr>
      <td>13</td>
    </tr>
    <tr>
      <td>14</td>
    </tr>
    <tr>
      <td>15</td>
    </tr>
    <tr>
      <td>16</td>
    </tr>
    <tr>
      <td>17</td>
    </tr>
    <tr>
      <td>18</td>
    </tr>
    <tr>
      <td>19</td>
    </tr>
    <tr>
      <td>20</td>
    </tr>
  </tbody>
</table>

Спасибо, это было то, что я искал. Вы также можете создать div-оболочку и установить количество столбцов: 2; на этом или на теле (я узнал это только во время тестирования). Есть какая-нибудь документация, где я могу это найти? Тогда я отмечу это как ответ.

Rob C 19.08.2024 02:53

документация о том, что вы имеете в виду? По сути, используя эти настройки display, я просто отключаю автоматическое отображение всех этих элементов в таблице и использую счетчик столбцов, чтобы разместить ее в двух столбцах. Документацию по столбцам CSS можно найти здесь: Developer.mozilla.org/en-US/docs/Web/CSS/columns (также обратите внимание на ссылки на другие параметры столбцов в левой части этой страницы).

Johannes 19.08.2024 11:06

CSS-сетка также может выполнить эту работу

table,
tbody {
  display: grid;
  grid-auto-flow: dense;
  justify-content: start;
}
table tr {
  grid-column: 1;
}
table tr:nth-child(n + 11) {
  grid-column: 2;
}

/* styling */
tr {
  display: grid;
  place-content: center;
  padding: 2px 5px;
  background:  #f2f2f2;
  border:1px solid;
}
<table>
  <tbody>
    <tr>
      <td>1</td>
    </tr>
    <tr>
      <td>2</td>
    </tr>
    <tr>
      <td>3</td>
    </tr>
    <tr>
      <td>4</td>
    </tr>
    <tr>
      <td>5</td>
    </tr>
    <tr>
      <td>6</td>
    </tr>
    <tr>
      <td>7</td>
    </tr>
    <tr>
      <td>8</td>
    </tr>
    <tr>
      <td>9</td>
    </tr>
    <tr>
      <td>10</td>
    </tr>
    <tr>
      <td>11</td>
    </tr>
    <tr>
      <td>12</td>
    </tr>
    <tr>
      <td>13</td>
    </tr>
    <tr>
      <td>14</td>
    </tr>
    <tr>
      <td>15</td>
    </tr>
    <tr>
      <td>16</td>
    </tr>
    <tr>
      <td>17</td>
    </tr>
    <tr>
      <td>18</td>
    </tr>
    <tr>
      <td>19</td>
    </tr>
    <tr>
      <td>20</td>
    </tr>
  </tbody>
</table>

ОП хотел первые 10 в левом столбце. n + 20, кажется, этого не достигает, но сложно придумать, как настроить его, чтобы получить результат.

ralph.m 19.08.2024 03:14

@ralph.m uodated

Temani Afif 19.08.2024 03:19

Это также очень интересный вариант, возможно, даже лучший, поскольку вам не нужно изменять спецификации таблицы (установить блок/встроенный блок в table/tbody/tr/td). Я протестирую это завтра/послезавтра и проверю некоторые документы, посмотрю, что лучше, а также поддержку браузера/защищенность от будущего. подлежит уточнению

Rob C 19.08.2024 04:33

@TemaniAfif — Ах, красиво. Я пробовал это безуспешно, но забыл про dense.

ralph.m 19.08.2024 05:46

Другие вопросы по теме