Плохая ли форма использования атрибутов CLASS без соответствующего правила CSS?

Например, если я хотел бы выбрать некоторые элементы с определенным классом с помощью jQuery, и только по этой причине всегда ожидалось, что эти классы ДОЛЖНЫ быть определены в css?.

<div class="xyz">
something
</div>

<div class="xyz">
something else
</div>

//with example jQuery
$(".xyz").hide();

//is it wrong no element 'xyz' is defined in css?

Ответ 1

Использование классов CSS и - в зависимости от идентификаторов case (unique!!) отлично и часто единственное решение, позволяющее сохранить ваш HTML-код действительным при предоставлении дополнительных атрибутов, используемых скриптами.

При использовании нестандартных атрибутов часто работает нормально, это также предотвратит проверку вашего html-кода и может вызвать проблемы в будущем.

Однако в некоторых случаях могут быть и attriutes, которые также могут использоваться, например, rel для ссылок, которые часто используются для скриптов, которые изменяют поведение ссылок.

http://www.w3.org/TR/html401/struct/global.html#h-7.5.2 также упоминает, что класс является универсальным:

Атрибут class, с другой стороны вручную назначает одно или несколько имен классов к элементу; элемент может быть указан принадлежать этим классам. Класс имя может быть разделено несколькими элементами экземпляров. Атрибут class имеет несколько ролей в HTML:

  • В качестве селектора таблиц стилей (когда автор хочет присвоить информацию стилей набору элементов).
  • Для обработки общего назначения агентами пользователя.

Ответ 2

Это вполне приемлемо. Поскольку обработка клиентской стороны становится все более распространенной (через jQuery, ExtJS, Prototype и т.д.), Имеет смысл создать эффективный код, который может использовать мощную поддержку селектора, предоставляемую этими библиотеками.

Ответ 3

Атрибут class указывает classname для элемента.

Атрибут класса в основном используется для укажите класс в таблице стилей. Однако он также может использоваться JavaScript (через HTML DOM), чтобы сделать изменения элементов HTML с помощью указанный класс.

источник

это не плохая форма использования атрибутов класса без соответствующего правила css...

еще лучше использовать класс в качестве "держателя данных", чем любые другие атрибуты, такие как rel, title и т.д.

Ответ 4

Я так не думаю.

Вы не отделяете данные от презентации, если используете такие классы, как "правый", "розовый" и т.д.

Я использую классы для определения того, что материал находится внутри элемента.

<div class="product">

Я могу использовать его с CSS и JS, но иногда мне просто нравится иметь классы, чтобы я мог легко отлаживать.

Ответ 5

Я бы сказал, что все в порядке. Атрибут называется классом, а не cssstyleclass или что-то в этом роде. Имеет смысл определять элементы с чем-то общим с атрибутом класса.

Ответ 6

Это на самом деле очень хитрый. Сначала вы не задумываетесь об этом, но вы можете делать довольно красивые вещи с иерархиями классов.

Facebook, например, использует HTTP-заголовок User-Agent для установки определенных классов браузера в теге body. Он не использовался все время, но его можно использовать для написания CSS-браузера, и он превосходит многие другие алгоритмы, потому что он просто использует CSS, и вы в конечном итоге группируете специфические для браузера вещи вместе с общими правилами CSS, рекламируя местность в вашем CSS файлы. Это важно, когда вам нужно поддерживать файлы CSS в течение более длительного периода.

a { color: blue; }
.ie7 a { color: black; }

Бесполезно, как CSS "каскадирует" приведенное выше правило CSS для тега привязки будет более конкретным при визуализации с помощью Internet Explorer 7. Это будет через специфичность селектора заставляют метки привязки быть черными в IE7, без хакерских и неясных трюков CSS.

Как упоминалось другими, его также можно использовать с помощью JavaScript. Мне очень полезно использовать классы CSS в качестве логического флага. например Я могу использовать его для создания очень простого водяного знака.

<input type="text" value="watermark" class="watermark" />

$('input').focus(function(e) { 
    var target = $(this);
    if (target.hasClass('watermark')) {
        target.val('');
        target.removeClass('watermark');
    }
});

Этот фрагмент jQuery будет работать отлично, но что более тонкое здесь, у меня теперь есть две вещи. Логика и стиль одним выстрелом. Becuase водяной знак, используемый здесь как флаг, также может использоваться для применения определенного визуального стиля через CSS, в зависимости от состояния этого ввода. например Я бы не имел серого цвета курсивного шрифта, когда знак воды активен.

Есть еще много примеров, подобных этому, и я заставляю вас экспериментировать больше.

Ответ 7

Я не думаю, что это плохая практика. Если они вам нужны, вы должны их использовать. Это делает тональный смысл.

Если вы этого не хотите, возможно, у вас есть родительский элемент, который окружает все элементы, или вы можете найти что-то еще, что у них есть, и перевести это в селектор. $("div#somediv > div").hide() Но это будет стоить вам больше времени и думать, как будто вы просто даете им класс.