Установить границу для таблицы tr, работает во всем, кроме IE 6 и 7

Я установил границу для таблицы event_calendar tr, чтобы она была красной, она работает во всем, кроме IE 6 и 7. Что не так с моим CSS?

table#event_calendar tr {
    border:1px solid red;
}

<div class="content-body">
<table id="event_calendar">
    <tr class="calendarHeader">
        <th><div class="calendarMonthLinks"><a href="http://webdev.herkimer.edu/calendar/2009/03/">&lt;&lt;</a></div></th>
        <th colspan="5"><h1>April 2009</h1></th>
        <th><div class="calendarMonthLinks"><a class="calendarMonthLinks" href="http://webdev.herkimer.edu/calendar/2009/05/">&gt;&gt;</a></div></th>
    </tr>
    <tr>
        <td class="calendarDayHeading">Sunday</td>
        <td class="calendarDayHeading">Monday</td>
        <td class="calendarDayHeading">Tuesday</td>
        <td class="calendarDayHeading">Wednesday</td>
        <td class="calendarDayHeading">Thursday</td>
        <td class="calendarDayHeading">Friday</td>
        <td class="calendarDayHeading">Saturday</td>
    </tr>
</table>
</div>

4 ответа

Решение

IE не учитывает свойство border для тегов . Однако есть обходные пути, помещая верхнюю и нижнюю границу вокруг каждой ячейки и используя "border-collapse: collapse;" так что между клетками нет места. Я буду ссылаться на этот ресурс здесь о точном методе, но он будет по существу похож на это для вас (я сам не проверял его, поэтому я не уверен, что это точно, но я думаю, что вы можете от него отказаться).)

table#event_calendar {
    border-collapse: collapse;
    border-right: 1px solid red;
    border-left: 1px solid red;
}

table#event_calendar td, table#event_calendar th {
    border-top: 1px solid red;
    border-bottom: 1px solid red;
}

Ваш CSS достаточно разумный, но IE просто не делает границ на элементах tr. Если вы используете этот стиль, вы должны получить желаемый результат:

table#event_calendar {
    border-top:1px solid red;
    border-right:1px solid red;
    border-left:1px solid red;
    border-collapse:collapse;
}

table#event_calendar td, table#event_calendar th {
    border-bottom:1px solid red;

}

Установка границы на тд - самое простое решение. Но если вы действительно хотите сделать границы <tr>, вы всегда можете установить:

tr { display:block; border-bottom:1px dotted #F00; }

Делая это, вы теряете общую ширину между <td>, Если вы хотите, чтобы все они были равны по ширине, установите для дисплея значение <td> в inline-block и установить некоторую ширину:

td { display:inline-block; width:20%; }

Это помогает, когда вы хотите нарисовать границу на <td> и на <tr>,

CSS сгенерированный контент, как tr:before{} или же tr:after{} всегда может помочь.

Измените свой CSS-селектор на "table # event_calendar tr td", и он должен работать.

Другие вопросы по тегам