Подтвердить что ты не робот

Создание DIVs действует как таблица с использованием CSS

Хорошо, при разработке сайта я наткнулся на мысль... У меня есть несколько частей моего сайта, которые лучше подходят для работы в качестве таблицы, но не являются табличными данными. По какой-то причине это действительно заставляет меня использовать таблицу для чего-то, что не является таблицей. Поэтому я отметил параметры отображения CSS, но я не могу заставить его работать правильно. Вот что я пытаюсь. В чем проблема?

<div class="table">
  <div class="tr">
    <div class="td">Row 1, Cell 1</div>
    <div class="td">Row 1, Cell 2</div>
    <div class="td">Row 1, Cell 3</div>
  </div>
  <div class="tr">
    <div class="td">Row 2, Cell 1</div>
    <div class="td">Row 2, Cell 2</div>
    <div class="td">Row 2, Cell 3</div>
  </div>
</div>

Вот как выглядит CSS.

div.table {border: 1px solid black; display: table; }
div.tr {border: 1px solid black; display: table-row; }
div.td {border: 1px solid black; display: table-cell; }

Я хотел бы, чтобы страница выглядела так, как будто была использована таблица, но все "ячейки" переходят в новую строку. Любые мысли?

4b9b3361

Ответ 1

Странно: то, что вы цитируете, выглядит прекрасно и должно работать. Вы уверены, что нет переопределения display: block !important где-то?

Но, как мое мнение, я собираюсь сказать, что для любви к Богу просто используйте стол.:)

Серьезно. Основной аргумент не использовать таблицы в таких ситуациях состоит в том, что они не являются правильным элементом семантически. Но, глядя на этот суп-суп, вы должны признать, что <table> - это более предпочтительная конструкция, даже если это не точно табличные данные, которые вы показываете.

Ответ 2

Я знаю, что это старый пост, но так как никто на самом деле не исправил вашу проблему с DIV, я подумал, что я бы ушел.

Ваша проблема проста... ваши элементы ячейки являются div и поэтому отображаются: block, используют пробелы вместо них для ячеек таблицы (или добавляют отображение: inline к CSS.cell).

<div class="table">
  <div class="tr">
    <span class="td">Row 1, Cell 1</span>
    <span class="td">Row 1, Cell 2</span>
    <span class="td">Row 1, Cell 3</span>
  </div>
  <div class="tr">
    <span class="td">Row 2, Cell 1</span>
    <span class="td">Row 2, Cell 2</span>
    <span class="td">Row 2, Cell 3</span>
  </div>
</div>

Ответ 3

Возможно, проблема с браузером? Ваш код работает для меня в Chrome. См. Здесь: http://jsfiddle.net/xVTkP/

Что вы используете?

(но серьезно, как говорят другие, используйте таблицу)

Ответ 4

Наступает момент, когда вам нужно спросить себя: "Это действительно стоит?" Это одна из тех ситуаций, когда это не так.

Ответ 5

Какой браузер вы используете? Эти значения полностью не реализованы во всех браузерах. Тем не менее, , что точка пытается подражать таблицам с divs + CSS? Почему бы просто не использовать таблицу?

Создатели HTML обычно избегают использования таблиц для данных, которые не являются табличными из-за раннего (где-то за последние 10 лет? не помню) люфта, вызванного чрезмерным использованием таблиц в качестве элементов макета. Подумайте: вложенные таблицы в вложенных таблицах, пустые ячейки только для заполнения и т.д. Получить с ней. Используйте элемент, который выполняет задание.

Лично я считаю, что table, table-row, table-cell и т.д. должны были быть исключены из спецификации CSS display.

Ответ 6

<body>
    <div style="display: table;">
        <div style="display: table-row;">
            <div style="display: table-cell;">Row 1, Cell 1</div>
            <div style="display: table-cell;">Row 1, Cell 1</div>
            <div style="display: table-cell;">Row 1, Cell 1</div>
        </div>
        <div style="display: table-row;">
            <div style="display: table-cell;">Row 2, Cell 1</div>
            <div style="display: table-cell;">Row 2, Cell 1</div>
            <div style="display: table-cell;">Row 2, Cell 1</div>
        </div>
    </div>
</body>