2012-01-25 3 views
2

Я пишу веб-страницу, основанную на чужой таблице стилей. Таблица стилей включает в себя следующее:Табличка с таблицей стилей, запрещающая работу таблицы

table { 
    border-collapse: collapse; 
} 

th, td { 
    padding: 0; 
} 

Теперь я хочу создать таблицу с ненулевым заполнением ячейки. Но у меня возникли проблемы с переопределением этой таблицы стилей:

<table cellpadding="10"> 
    <tr> 
    <td padding="10"> 
     Foo 
    </td> 
    ... 
    ... 
    </tr> 
</table> 

и ни одна из указанных работ не работает; заполнение ячейки остается плотным нолем.

Как переопределить таблицу стилей (не используя другую таблицу стилей)?

+0

@Walkerneo - Просто сделал, не работает. –

+0

Можете ли вы вставить стиль inline, чтобы у вас было - '' – simnom

+0

@simnom - ах, когда я делаю это на теге td, он работает. –

ответ

13

Вы можете сделать в онлайн-стиль:

<td style="padding: 10px"> 

или назначить класс в table и создать для него правило:

<table class="table"> 
    <tr> 
    <td> 
     Foo 
    </td> 
    </tr> 
</table> 

и CSS для этого:

table td { 
    padding: 10px; 
} 
1

Вы можете использовать встроенные стили (т.е. стили, объявленные в элементе), встроенные таблицы стилей (т.е. стили, объявленные на одной странице, но не непосредственно по элементам) или внешние таблицы стилей. К сожалению, стили CSS переопределяют атрибуты в большинстве случаев (я считаю, что атрибуты, такие как вы используете здесь, устарели, что означает, в основном, использовать таблицы стилей).

4

попробуйте более конкретно в вашем селекторе, например

table td { 
    padding:10px; 
} 

выше перекроет

th, td { 
    padding: 0; 
} 

Узнайте больше для CSS Специфичность here.

1

Создайте новый класс для таблицы и примените его только к таблицам, которые вы хотите иметь в этом стиле.

table { 
    border-collapse: collapse; 
} 

th, td { 
    padding: 0; 
} 

table.newStyle { padding:10px; } 


<table class="newStyle"> 
    <tr> 
    <td padding="10"> 
     Foo 
    </td> 
    ... 
    ... 
    </tr> 
</table> 
+0

Такая же идея, как @ZoltanToth, но его решение более изящно, поэтому вам нужно только изменить класс на столе, а не на каждый '' тег –

3

Просто встраивать необходимые стили:

<table style="border-collapse: separate; border-spacing: 10px;"> 
... 
</table> 

Если вы сделаете это, вы не нуждаетесь в padding="10" на td либо. См. http://jsbin.com/exovat/edit#html для рабочего примера.

Альтернативой встраиванию стилей является доступ к вашей собственной таблице стилей, которая загружается после их таблицы стилей. После этого вы можете установить идентификатор на столе, как <table id="foo">, а затем просто переопределить их стили в пользовательских стилях, как это:

table#foo { 
    border-collapse: separate; 
    border-spacing: 10px; 
} 

[Примечание: Свойство border-spacing CSS не работает с IE7 или ниже; если вам нужны эти браузеры для поддержки, вам лучше использовать какой-то хакерский метод]

+0

Приятная идея, но она получается уродливой, и текст по-прежнему раздавлен вплоть до границы ... –

+0

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

Смежные вопросы