Заменить таблицу HTML на Div - PullRequest
55 голосов
/ 31 марта 2009

Хорошо, я пытаюсь принять идею, что таблицы html не должны использоваться, и что divs должен быть. Тем не менее, у меня часто есть код, похожий на следующий

<table>
    <tr>
        <td>First Name:</td>
        <td colspan="2"><input  id="txtFirstName"/></td>
    </tr>
    <tr>
        <td>Last Name:</td>
        <td colspan="2"><input  type="text" id="txtLastName"/></td>
    </tr>
    <tr>
        <td>Address:</td>
        <td>
            <select type="text" id="ddlState">
                <option value="NY">NY</option>
                <option value="CA">CA</option>
            </select>
        </td>
        <td>
            <select type="text" id="ddlCountry">
                <option value="NY">USA</option>
                <option value="CA">CAN</option>
            </select>
        </td>
    </tr>
</table>

Я хочу, чтобы метки были выровнены, и я хочу, чтобы элементы управления были выровнены. Как бы я сделал это без использования таблиц?

Ответы [ 6 ]

43 голосов
/ 31 марта 2009

Это должно сработать.

<style>
div.block{
  overflow:hidden;
}
div.block label{
  width:160px;
  display:block;
  float:left;
  text-align:left;
}
div.block .input{
  margin-left:4px;
  float:left;
}
</style>

<div class="block">
  <label>First field</label>
  <input class="input" type="text" id="txtFirstName"/>
</div>
<div class="block">
  <label>Second field</label>
  <input class="input" type="text" id="txtLastName"/>
</div>

Я надеюсь, что вы поняли.

25 голосов
/ 31 марта 2009

Обращаем ваше внимание, что хотя таблицы и не рекомендуется использовать в качестве основного средства верстки страниц, они по-прежнему имеют место . Таблицы могут и должны использоваться , когда и где это необходимо, и до тех пор, пока некоторые из наиболее популярных браузеров (ahem, IE, ahem) не станут более совместимыми со стандартами, таблицы будут иногда лучшим путем к решение.

10 голосов
/ 13 сентября 2012

Я искал простое решение и нашел этот код , который мне помог. right div - это третий столбец, который я оставил для удобства чтения.

Вот HTML:

<div class="container">
  <div class="row">
    <div class="left">
      <p>PHONE & FAX:</p>
    </div>
    <div class="middle">
      <p>+43 99 554 28 53</p>
    </div>
    <div class="right"> </div>
  </div>
  <div class="row">
    <div class="left">
      <p>Cellphone Gert:</p>
    </div>
    <div class="middle">
      <p>+43 99 302 52 32</p>
    </div>
    <div class="right"> </div>
  </div>
  <div class="row">
    <div class="left">
      <p>Cellphone Petra:</p>
    </div>
    <div class="middle">
      <p>+43 99 739 38 84</p>
    </div>
    <div class="right"> </div>
  </div>
</div>

И CSS:

.container {
    display: table;
    }
.row  {
    display: table-row;
    }
.left, .right, .middle {
    display: table-cell;
    padding-right: 25px;
    }
.left p, .right p, .middle p {
    margin: 1px 1px;
   }
4 голосов
/ 31 марта 2009

Вы можете создавать простые плавающие формы, не теряя своего жидкого макета. Например:

<style type="text/css">
    .row { clear: left; padding: 6px; }
    .row label { float: left; width: 10em; }
    .row .field { display: block; margin-left: 10em; }
    .row .field input, .row .field select {
        width: 100%;
        box-sizing: border-box;
        -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -khtml-box-sizing: border-box;
    }
</style>

<div class="row">
    <label for="f-firstname">First name</label>
    <span class="field"><input name="firstname" id="f-firstname" value="Bob" /></span>
</div>
<div class="row">
    <label for="f-state">State</label>
    <span class="field"><select name="state" id="f-state">
        <option value="NY">NY</option>
    </select></span>
</div>

Это имеет тенденцию ломаться, хотя, когда у вас есть сложные макеты форм, где есть сетка из нескольких столбцов фиксированной и гибкой ширины. В этот момент вы должны решить, придерживаться ли div'ов и отказаться от жидкой компоновки, а просто поместить все в фиксированные позиции пикселей или позволить таблицам сделать это.

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

1 голос
/ 15 июля 2015

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

http://www.html -cleaner.com / функции / заменить в HTML-таблиц-теги-с-дивы /

И видео, которое объясняет это: https://www.youtube.com/watch?v=R1ArAee6wEQ

Я использую это ежедневно. Надеюсь, это поможет;)

1 голос
/ 31 марта 2009

В основном все сводится к использованию страницы фиксированной ширины и настройке ширины для этих меток и элементов управления. Это наиболее распространенный способ реализации макетов без таблиц.

Существует множество способов настройки ширины. Blueprint.css - очень популярная платформа CSS, которая может помочь вам настроить столбцы / ширину.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...