2011-02-10 3 views
1

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

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

Вот пример того, что у меня есть ...

table.mytblname2 td.stuff { width: 10%; } 
table.mytblname2 td.this { width: 10%; } 
table.mytblname2 td.that { width: 10%; } 
table.mytblname2 td.something { width: 70%; } 

table.mytblname3 td.anothercol { width: 25%; } 
table.mytblname3 td.stuff { width: 25%; } 
table.mytblname3 td.foo { width: 20%; } 
table.mytblname3 td.bar { width: 20%; } 
table.mytblname3 td.something { width: 10%; } 

Как я вижу это, класс = "anothercol" и стиль = "ширина: 20%" использовать точно такое же количество поэтому я потенциально использую больше полосы пропускания, взбалтывая свой файл CSS в этом конкретном сценарии.

Это что-то, что можно улучшить? Как?

Приложение использует ASP.NET MVC 2, и мне нужно, чтобы он был совместим с несколькими браузерами вплоть до IE6 и не делал его нечитаемым, когда пользователи отключены JavaScript.

UPDATE:

Вот подход, который я в конечном итоге принимает (на основе ответов от ddagradi и Джейсона).

table.data { width: 100%; ... etc ... } 
table.data td, table.data th { padding: 4px; border: ... etc ... } 

table.data th.w10 { width: 10%; } 
table.data th.w20 { width: 20%; } 
table.data th.w30 { width: 30%; } 
table.data th.w40 { width: 40%; } 
... etc ... 

<table class="data"> 
    <thead> 
    <tr> 
     <th class="w20">Date</th> 
     <th class="w40">Name</th> 
     <th class="w40">Description</th> 
    </tr> 
    </thead> 
    <tbody> 
    ... 
    </tbody> 
</table> 

Мой CSS-файл МНОГО очиститель, и я могу сказать в HTML, что такое ширина. Я управляю общим стилем td/th через «table.data td» и «table.data th». Спасибо всем!

ответ

1

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

Что касается использования встроенного CSS, считается, что это плохая форма для смешивания контента и стилей, и вы действительно должны хранить все свои стили в таблицах стилей. Если вы чувствуете, что ваш CSS становится раздутым, попытаться выяснить, какие стили могут быть сжаты, потому что они такие же, как:

td.foo, td.bar { width: 40%; } 

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

+0

Все ответы были хорошие, но ваш был более многословен - спасибо! – Mayo

+0

Спасибо! Надеюсь, что остальная часть CSS идет гладко. – Dominic

1

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

.stuff, .this, .that { width: 10%; } 
+0

Я действительно считал это - хотел посмотреть, считают ли другие, что это может сработать. :) – Mayo

+0

Одна из лучших частей CSS - это возможность определять стили для нескольких селекторов одновременно. Его следует широко использовать :) Также, как сказал Майлс, вы должны использовать Less.js, а не для борьбы с раздуванием, но чтобы вы были более выразительны с вашим CSS - посмотрите http://lesscss.org/ – Dominic

+0

этот метод хорошо подходит для уменьшения раздувания, но в меньшей степени для ремонтопригодности, хотя легко перемещать один класс в другой список, который имеет процент, который вы хотите, или просто создать новый процент. – Jason

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