Как полностью удалить границы из HTML-таблицы


145

Моя цель - создать HTML-страницу, похожую на «фоторамку». Другими словами, я хочу создать пустую страницу, окруженную 4 картинками.

Это мой код:

<table>
    <tr>
        <td class="bTop" colspan="3">
        </td>
    </tr>
    <tr>
        <td class="bLeft">
        </td>
        <td class="middle">
        </td>
        <td class="bRight">
        </td>
    </tr>
    <tr>
        <td class="bBottom" colspan="3">
        </td>
    </tr>                                                    
</table>

А классы CSS следующие:

.bTop
{
    width: 960px;
    height: 111px;
    background-image: url('../Images/BackTop.jpg');
}
.bLeft
{
    width: 212px;
    height: 280px;
    background-image: url('../Images/BackLeft.jpg');    

}

.middle
{
    width: 536px;
    height: 280px;
}

.bRight
{
    width: 212px;
    height: 280px;
    background-image: url('../Images/BackRight.jpg');    
}

.bBottom
{        
    width: 960px;
    height: 111px;
    background-image: url('../Images/BackBottom.jpg');       
}

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

Ответы:


186
<table cellspacing="0" cellpadding="0">

И в css:

table {border: none;}

РЕДАКТИРОВАТЬ: как отмечалось в iGEL, это решение официально устарело (хотя все еще работает), поэтому, если вы начинаете с нуля, вам следует использовать решение jnpcl's border-collapse.

На самом деле мне пока совсем не нравится это изменение (не так часто работаю с таблицами). Это немного усложняет некоторые задачи. Например, если вы хотите разместить две разные границы в одном месте (визуально), при этом одна будет TOP для одной строки, а вторая - BOTTOM для другой строки. Они схлопнутся (= будет показан только один из них). Затем вы должны изучить, как вычисляется «приоритет» границы и какие стили границы «сильнее» (двойная или сплошная и т. Д.).

Мне понравилось вот что:

<table cellspacing="0" cellpadding="0">
  <tr>
    <td class="first">first row</td>
  </tr>
  <tr>
    <td class="second">second row</td>
  </tr>
</table>

----------

.first {border-bottom:1px solid #EEE;}
.second {border-top:1px solid #CCC;}

Теперь, с обрушением границы, это не сработает, поскольку всегда удаляется одна граница. Я должен сделать это как-то по-другому (есть еще варианты решения c). Одна из возможностей - использовать CSS3 с box-shadow:

<table class="tab">
  <tr>
    <td class="first">first row</td>
  </tr>
  <tr>
    <td class="second">second row</td>
  </tr>
</table>​​​

<style>
.tab {border-collapse:collapse;}
.tab .first {border-bottom:1px solid #EEE;}
.tab .second {border-top:1px solid #CCC;box-shadow: inset 0 1px 0 #CCC;}​
</style>

Вы также можете использовать что-то вроде стиля границы «канавка | гребень | вставка | начало» с одной границей. Но для меня это не оптимально, потому что я не могу контролировать оба цвета.

Может быть, есть какое-то простое и красивое решение для обрушения границ, но я его еще не видел и, честно говоря, не тратил на это много времени. Может, здесь кто-нибудь сможет показать мне / нам;)


7
cellspacing и cellpadding устарели с 1999 года, см. developer.mozilla.org/en-US/docs/HTML/Element/table - вам следует использовать решение @jnpcl.
iGEL

iGEL прав, я отредактировал свой ответ. Честно говоря, я был удивлен, что он так давно устарел, и я все еще использовал его без проблем :)
Damb


21

Мне нужно было сделать что-то подобное, чтобы полностью удалить границы таблицы и всех ячеек. Это вообще не требует изменения HTML, что было полезно в моем случае.

table, tr, td {
    border: none;
}

3
Пробовал все предложения до этого момента и, наконец, border: noneобратился к tdубежденному Джекилу, чтобы он сделал стол без полей:<td markdown="span" style="padding: 0.5vw; border: none; max-width:100%; max-height:10%; background: transparent;">
Avio

16

В среде начальной загрузки ни один из лучших ответов не помог, но применение следующего удалило все границы:

.noBorder {
    border:none !important;
}

Применяется как:

<td class="noBorder">

1
Это предложение сработало для меня в Wordpress. Мне было трудно добиться, чтобы граница не применялась.
robbpriestley

9

В среде начальной загрузки вот мое решение:

    <table style="border-collapse: collapse; border: none;">
        <tr style="border: none;">
            <td style="border: none;">
            </td>
        </tr>
    </table>    

4

Вот что решило для меня проблему:

Добавьте в свой HTML-тег tr:

style="border-collapse: collapse; border: none;"

Это удалило все границы, которые отображались в строке таблицы.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.