Создание таблицы с тремя столбцами только с помощью CSS? (Нет элемента таблицы) - PullRequest
3 голосов
/ 13 августа 2010

Я создаю шаблоны для проекта Django, и мне нужно создать таблицу из трех столбцов в HTML, используя только CSS, а не элемент <table>.

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

Раньше я взламывал быстрый / грязный шаблон с использованием структуры Less (http://lessframework.com/).

            {% for category in article_list_categorised %}
                    <h2 class="first">{{ category.grouper }}</h2>
                            {% for item in category.list %}
                                    <h3 class="two first">{{ item.firms.all|join:", " }}</h3>
                                    <h4 class="two">{{ item.subject }}</h4>
                                    <p class="seven">
                                            {{ item.abstract }}
                                    </p>
                                    <h4 class="one">{{ item.source_publication }}</h4>
                                    <h4 class="one">{{ item.publication_date }}</h4>
                                    <h4 class="one">Page: {{ item.page_number }}</h4>
                            {% endfor %}
            {% endfor %}

            <footer>
                    <p class="four off-four">
                            {% now "l, jS F Y" %}
                    </p>
            </footer>

. На экране это дает таблицу из трех столбцов, содержащую список статей).Для каждой статьи (строки) имеем:

  1. Первый столбец содержит название фирмы
  2. Второй столбец содержит тему и реферат статьи
  3. Третий столбец содержитИсточник публикации, дата публикации и номер страницы.

И при отображении в браузере BlackbBerry он разбивает столбцы на последовательные абзацы друг на друга.

СейчасЯ хочу отойти от использования Less и сделать разметку / CSS с нуля.

Я обнаружил еще один вопрос StackOverflow, задающий что-то похожее:

Как создать три столбца в css

и совет оттуда в основном использовать <ul> и <li>. Я взломал что-то вроде этого, две строки, три столбца:

        <ul>
            <li> <!-- First row -->
                <ul>
                    <li>Deutsche Bank, Goldman Sachs JBWere</li>
                    <li>Costs</li>
                    <li>
                        <p>AAP</p>
                        <p>June 28, 2010</p>
                        <p>Page: 3</p>
                    </li>
                </ul>
            </li> <!-- End of first row -->
            <li> <!-- Second row -->
                <ul>
                    <li>Deutsche Bank</li>
                    <li>Plans</li>
                    <li>
                        <p>Bloomberg</p>
                        <p>June 29, 2010</p>
                        <p>Page: 1</p>
                    </li>
                </ul>
            </li> <!-- End of Second row -->
        </ul>

Myвопрос в том,или, может быть, есть какая-то более упорядоченная иерархия, к которой я мог бы обратиться, или какие-либо теги, которые я могу исключить из вышеперечисленного?

Кроме того, в статье, упомянутой в предыдущем вопросе, говорится о трех столбцах с одной строкой.Мне нужно три столбца, с новой строкой для каждой статьи.

Какой хороший способ CSS-стилизации выше, чтобы дать три столбца, каждый из которых установлен в новой строке, и при этом отображать их как последовательные абзацына КПК?

Ответы [ 3 ]

3 голосов
/ 13 августа 2010

Использование неупорядоченного списка не является методом BAD, и выгода этого в том, что устройства или браузеры с отключенным CSS (да, вы будете удивлены) будут изящно превращаться в четкий список. Если вы хотите, чтобы вышеперечисленное отображалось в макете из 3 столбцов с каждой строкой в ​​новой «строке», я бы попробовал что-то подобное для вашей CSS:

Сначала дайте вашему ul атрибут ID, поэтому в нашем случае мы назовем его <ul id="fakeTable">, а затем мы можем стилизовать наши элементы li, чтобы они действовали как ячейки таблицы:

#fakeTable, #faketable li{
  list-style-type:none; //no bullets etc
  margin:0;
  padding:0;
  }

#fakeTable{
  width:800px; //you could set it to any width really, just an example
  }

#fakeTable li{
  display:block;
  float:left;
  clear:none;
  width:200px;
  padding:0 11px 0 11px;
  }
  • Теперь при условии, что ваш <ul> имеет ширину 800 пикселей, элементы <li> будут перенесены на следующую строку с 4 по 6, с 7 по 9 и т. Д., Так как больше нет места для всплытия 4-го в каждом ряду .

  • Если у вас нет заданной ширины, преобразуйте ширину в%, вы можете установить ширину <li> равной 33% - без заполнения <li>, конечно, - что даст вам ширину 99% для 3 <li> элементов, поэтому для 4-го места нет места, и он будет перенесен на следующую строку!

0 голосов
/ 13 августа 2010

Создать многостолбцовый макет с помощью div очень просто, но вы должны обратить внимание на следующее:

  • Сумма ширины столбца элемента (включая поля и отступы) должна быть <100% (или ширинаосновного столбца в пикселях). </li>
  • Использование float: left (или right) для обеспечения параллельного отображения столбца
  • Использование прозрачного элемента для обеспечения атрибута margin следующих элементов

Пример:

  <div id="main">
    <div class="col 1st-col">
    </div>
    <div class="col 2nd-col">
    </div>
    ...
    <div class="clr"></div>
  </div>

.col {float: left;} .1st-col {width: 30%;margin-left: 1%} ....

.clr {background: url ('empty.gif');} / * empty.gif - изображение в формате gif (прозрачное 1xx 1px) * /

Это, безусловно, работает на любом браузере.Div .clr, чтобы исправить высоту div.main в FF, Chrome, IE6.Атрибут display: inline-block не работает в IE.

0 голосов
/ 13 августа 2010

Я бы пошел на 3 деления, каждый из которых содержит один столбец, дал бы им минимальную ширину и максимальную ширину и display: inline-block. Если экран достаточно большой, чтобы разместить их рядом друг с другом, они будут расположены в виде 3 столбцов, в противном случае они будут складываться. Вам понадобятся некоторые дополнительные хаки для IE 6 (возможно, и для 7), потому что он не поддерживает inline-block.

...