Насколько семантична ваша разметка XHTML/CSS?

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

/**** Aligns ****/
.right_align  { text-align: right; }
.left_align   { text-align: left; }
.center_align { text-align: center; }

Что, технически, нет-нет. Но когда вы просто хотите поместить какой-то текст в таблицу, как я должен сходить с ума от семантической разметки?


person Kyle West    schedule 15.11.2008    source источник


Ответы (6)


Почему вы хотите выровнять текст?

Ответом на вопрос является имя идентификатора или класса, который вам нужен для вашего селектора. Вы хотите выровнять его правильно, потому что это цена?

table .price {
  text-align: right
}

Просто спросите себя, почему вы хотите применить тот или иной стиль, и все станет ясно.

Я, вероятно, переусердствовал, но мой последний рабочий проект был почти на 100% семантическим — все, что мне было нужно, но не семантическое (скажем, div-заполнитель, без которого я не мог обойтись для требования макета), я добавлял динамически с помощью jQuery.

person alex    schedule 15.11.2008
comment
Если вы добавите его динамически, не означает ли это, что ваш сайт не будет правильно отображаться без Javascript, что сделает его менее доступным, вопреки духу того, почему мы используем семантическую разметку? - person Jeremy; 16.11.2008
comment
Хорошая точка зрения. Я не проводил столько тестов, сколько должен, но я почти уверен, что сайт был вполне доступен без JS. И в ситуации без CSS, без JS он был почти на 100% пригоден для использования. - person alex; 16.11.2008
comment
Ваш ответ очень хорош, но я думаю, что всегда очень легко возразить кому-то, кто говорит, что мой последний веб-проект на 100% семантичен. Или довольно близко. Можно увидеть код одной из ваших 100% семантических страниц? Могла родиться очень интересная дискуссия о семантике. - person alexmeia; 16.11.2008
comment
Лучше: откройте новый вопрос, в котором вы размещаете 100% семантическую страницу и спросите: вы можете найти здесь что-то не семантическое? Мы хорошо видим, что понятие семантики не является цифровым. - person alexmeia; 16.11.2008
comment
В чем разница между 100% семантикой и семантикой? Я знаю, это просто семантика... - person Rimian; 30.03.2010
comment
Хорошо, ребята, я имею в виду, что это было настолько семантически, насколько это возможно :-p С тех пор я отказался от использования Javascript для целей, о которых я упоминал в своем посте :-p - person alex; 30.03.2010

Если вам нужна тесная связь между ячейками таблицы и выравниванием, вы можете просто назначить атрибут style="text-align:right" непосредственно тегу. Нет причин использовать дополнительный уровень косвенности через класс, если вы все равно не используете его для уровня абстракции.

person JacquesB    schedule 15.11.2008

Я пытаюсь понять, почему мне нужен столбец, выровненный по правому краю в таблице. Например, если столбец содержит суммы в валюте, я бы использовал стиль с именем валюта вместо right_align.

person g .    schedule 15.11.2008

Семантическая разметка — замечательная цель, но в реальном мире иногда приходится идти на компромиссы. В некоторых случаях единственный разумный способ что-то сделать — это нарушить семантику и просто добавить right_align.

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

У меня были случаи, когда клиенты хотели иметь возможность динамически контролировать, какие столбцы отображаются в сетке данных. Невозможно заранее узнать, какой тип данных они собираются показывать. Если им нужен способ центрирования или выравнивания по правому краю динамически сгенерированного столбца, лучше иметь классы выравнивания по центру и правому краю, доступные для использования, чем заставлять их везде вставлять атрибуты style.

person Jeromy Irvine    schedule 15.11.2008
comment
Как и Джереми Кит, я бы назвал себя пограничным семантически психотиком. Но я проголосовал за этот ответ, потому что согласен с тем, что люди, вероятно, неправильно понимают суть. - person Andy Ford; 16.11.2008
comment
Спасибо, Энди, я ценю это. Я склонен быть довольно упрямым, когда дело доходит до семантической разметки, но я слишком много раз страдал от ошибки клиента, чтобы слишком рьяно придерживаться этой линии. :) - person Jeromy Irvine; 16.11.2008

100% семантическая разметка — глупая цель. Ваш графический дизайнер скажет: «Давайте выровняем это по правому краю», и причиной будет «потому что так хорошо выглядит». Что вы должны сделать, добавить в div класс «looksgoodthatway»? Просто правильно выровняйте его и продолжайте свою жизнь! :)

person Ned Batchelder    schedule 15.11.2008
comment
Позже дизайнер решает, что было бы неплохо, если бы выровненная штуковина имела еще и фоновое изображение. Изменишь ли ты тогда название класса? - person JacquesB; 16.11.2008

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

Я использую следующие обозначения

matcher,¶
matcher¶
{¶
··attribute:·property;¶
}¶

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

Это связано с тем, что DIFF SCM ориентирован на строки, и если у вас есть весь контент в одной строке, у вас есть 2 варианта: один полный набор шлангов или другой.

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

Например, обратите внимание на опечатки:

matcher 
matcher, 
{
    attribute property 
  attribute
}

В этом случае код, который просто проверяет соответствие пробелов и разделителей, также обнаруживает ошибки в коде!

person Kent Fredric    schedule 15.11.2008
comment
Оба очень хороших момента, но не совсем то, о чем спрашивал плакат. - person Ola Tuvesson; 19.11.2008