Ячейки таблицы HTML не выравниваются должным образом - PullRequest
0 голосов
/ 09 февраля 2012

Я не могу понять, почему эта таблица не выравнивается должным образом. В первом ряду 9 картинок, во втором - 3 картинки. По какой-то причине эта таблица выходит за рамки необходимого и создает зазоры между изображениями. Ширина таблицы равна 990, а сумма значений ширины всех изображений для каждой строки также равна 990 (здесь я не учитываю ширину границы, я просто включил ее, чтобы показать, где разделяются ячейки. Разрыв между изображениями настолько велик). что это нельзя объяснить шириной границы).

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<body bgcolor="#008000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" >
<table id="Table_01" width="990" border="1" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td colspan="1"><img src="images/index_02.jpg" width="90" height="52" /></td>
            <td colspan="1"><img src="images/index_03.jpg" width="102" height="52" /></td>
            <td colspan="1"><img src="images/index_04.jpg" width="112" height="52" /></td>
            <td colspan="2"><img src="images/index_05.jpg" width="120" height="52" /></td>
            <td colspan="1"><img src="images/index_07.jpg" width="120" height="52" /></td>
            <td colspan="2"><img src="images/index_06.jpg" width="112" height="52" /></td>
            <td colspan="1"><img src="images/index_07.jpg" width="120" height="52" /></td>
            <td colspan="1"><img src="images/index_08.jpg" width="134" height="52" /></td>
            <td colspan="1"><img src="images/index_09.jpg" width="80" height="52" /></td>
        </tr>
        <tr>
            <td colspan="4"><img src="images/index_11.jpg" width="346"/></td>
            <td colspan="3"><img src="images/index_12.jpg" width="308"/></td>
            <td colspan="4"><img src="images/index_13.jpg" width="336"/></td>
        </tr>
    </tbody>
</table>
</body>
</html>

Вот как это выглядит. Я сделал цвет фона страницы зеленым, чтобы его можно было легко отделить от изображений:

Ответы [ 5 ]

1 голос
/ 09 февраля 2012

Вот моя версия:

css

body { font-size:10pt; font-family:Verdana; }
.header ul li { background: url('tab-left.png') bottom left no-repeat; float:left; list-style:none; }
.header ul li a { background: url('tab-right.png') bottom right no-repeat; color:#fff; display:block; padding:10px 26px; text-decoration:none; }
.header ul li a:hover { text-decoration:underline; }

.sub-header { clear:both; }
.sub-header li { background: url('...'); }
.sub-header li a { background: url('...'); font-size:12pt; text-transform:uppercase; }

html

<div class="header">
    <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">About Us</a></li>
        <li><a href="#">Clients</a></li>
        <li><a href="#">Contact</a></li>
        <li><a href="#">Coordinates</a></li>
        <li><a href="#">Corporate Portfolio</a></li>
    </ul>
    <ul class="sub-header">
        <li><a href="#">Need Staff?</a></li>
        <li><a href="#">Looking for a job?</a></li>
        <li><a href="#">Something....</a></li>
    </ul>
</div>

images

enter image description here и enter image description here

результат

enter image description here

0 голосов
/ 10 февраля 2012

Не разбивайте 2-е tr на 3 td с.

Просто сделайте 1 td во втором tr и сделайте его td colspan='9'

Я бы также порекомендовал даже не делать 9 td с в 1-м <tr>, потому что это избыточно (изображения будут «раздвигать» границы таблицы, чтобы соответствовать их спецификациям, независимо от настроек td высота / ширина .

0 голосов
/ 10 февраля 2012

Определенно идут версии CSS, которые люди опубликовали. Пожалуйста, не увековечивайте HTML 1995 года ....

Однако, чтобы ответить на исходный вопрос, сложите ширину, которую вы указали.

<td colspan="1"><img src="images/index_02.jpg" width="90" height="52" /></td>
<td colspan="1"><img src="images/index_03.jpg" width="102" height="52" /></td>
<td colspan="1"><img src="images/index_04.jpg" width="112" height="52" /></td>
<td colspan="2"><img src="images/index_05.jpg" width="120" height="52" /></td>

Эти столбцы соответствуют группе colspan=4 с заданной шириной 346. Вы бы разбили последний столбец, так как у него было двоеточие 2. Моя голова уже болит.

Вторая группа состоит из 3 столбцов:

<td colspan="1"><img src="images/index_07.jpg" width="120" height="52" /></td>
<td colspan="2"><img src="images/index_06.jpg" width="112" height="52" /></td>

Которые составляют до 232 пикселей. Следующая соответствующая строка - colspan=3, суммирующая до 308. С 308! = 232 у вас будут пробелы.

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

0 голосов
/ 09 февраля 2012

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

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

Далее идет навигация. У вас есть куча вкладок. Эти вкладки включают часть фона, когда они должны быть только самими изображениями. Навигация - это список веб-страниц, поэтому по сути вы должны использовать неупорядоченный список, потому что они не в определенном порядке. дисплей выбора css: встроенный; сообщает элементу списка, что нужно изменить тип отображения, чтобы все изображения плавали рядом друг с другом, а не выводились в списке друг от друга. в классе .nav поле указывает центрировать его, а ширина говорит само за себя.

<head>
    <style type="text/css">
        body { background-image: url('/images/background-image.png') repeat-y; }
        .nav { width: 800px; margin: 0 auto; }
        .nav li { display: inline }
    </style>
</head>
<body>
  <ul class="header-nav nav">
    <li><a href="#"><img></a></li>
    <li><a href="#"><img></a></li>
    <li><a href="#"><img></a></li>
    <li><a href="#"><img></a></li>
    <li><a href="#"><img></a></li>
    <li><a href="#"><img></a></li>
  </ul>

  <ul class="other-nav nav">
    <li><a href="#"><img></a></li>
    <li><a href="#"><img></a></li>
    <li><a href="#"><img></a></li>
  </ul>
</body>

Чтобы исправить вышесказанное, вам нужно удалить все кольспаны из первого ряда. Они бесполезны, тогда у них колспаны во 2-м ряду равны не больше и не меньше, чем в 1-м ряду. После этого проблема заключается в том, что ваши изображения не складываются математически, поэтому это будет неправильно. Вам действительно нужно переписать ваши изображения.

0 голосов
/ 09 февраля 2012

Попробуйте создать файл css, содержащий следующий код и связать его с таблицей.

#table {
  border-collapse: collapse;
  border-spacing: 0;
}

Это должно сработать, чтобы избавиться от отступов и полей в вашей таблице

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