Неправильное употребление атрибута класса CSS или действительный шаблон разработки?

Вы можете проверить этот пример , где NavLink стилизованы под гламур, но Link также может быть стилизован. Нажмите работает.

Просто убедитесь, что ваш код соответствует коду в примере. (проверьте версии и т. д.)

6
задан Ash 10 February 2009 в 15:58
поделиться

10 ответов

"Класс" является на самом деле частью данных документа (и надо надеяться семантически релевантный) не стиль или дизайн его.

Поэтому это должно хорошо использовать для обоих.

23
ответ дан 8 December 2019 в 02:11
поделиться
  1. Это - совершенно допустимый подход, чтобы сделать так.
  2. Атрибуты класса не определяют поведение - JS делает это через селекторы CSS (спасибо jQuery).
  3. Атрибуты класса не определяют визуальные стили - правила CSS делают это.
6
ответ дан 8 December 2019 в 02:11
поделиться

Я думаю, что это perfctly допустимый.

Единственное правило, которого я пытаюсь придерживаться, состоит в том, что имена классов должны иметь семантическое значение. Никакая потребность в них, чтобы иметь любого не связала CSS или JavaScript, если Вы не хотите также. Просто сделайте имя класса описательным из содержания.

Плохие имена классов (согласно моему правилу):

<span class="brightRedBold">Wear Protective Gloves</span>
<a class = "openInNewWindow" ...>

По моему мнению они настолько же плохо как пишут встроенные стили и JavaScript

Хорошие имена классов:

<span class="urgentWarning">Wear Protective Gloves</span>
<a class = "offSiteLink" ...>

Можно присоединить любые стили и поведения, которые Вы хотите к тем классам и придумываете намного более последовательный и удобный в сопровождении дизайн. Попытайтесь определить разговорный стиль для "brightRed", например.

4
ответ дан 8 December 2019 в 02:11
поделиться

Я не думаю, что существует что-то не так с ним. Для сейфа можно всегда удостоверяться, что классы, которые Вы используете для поведения, являются отдельными от классов, которые Вы используете для презентации.

В его корне сила jQuery является своим использованием синтаксиса селектора CSS для управления DOM. Тот синтаксис был предназначен для CSS, для презентации, в начале. Однако использование его для определения поведения (выбираете ли Вы классы или не) оказалось действительно мощной техникой. Кто мог возразить против этого?

3
ответ дан 8 December 2019 в 02:11
поделиться

Я пытаюсь использовать идентификаторы везде, где возможный и избегают классов. Но это вовсе не значит его плохое использование их, вполне обратное. Но я верю, используете ли Вы идентификаторы, Ваш в некотором смысле принудительный использовать очень структурированную и значимую семантическую разметку. Если Вы выкладываете классы каждый раз, Вам нужен элемент для рассмотрения определенного пути - вероятно, выполнение его неправильно.

Это - вполне спорная тема, таким образом, это, что я бросаю в панорамирование.

3
ответ дан 8 December 2019 в 02:11
поделиться

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

1
ответ дан 8 December 2019 в 02:11
поделиться

Это зависит от того, что Вы подразумеваете под 'поведением'. Например, если Ваше поведение является действительно просто необычным эффектом моделирования, я мог бы позволить ему скользить как просто больше расширенного стиля.

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

1
ответ дан 8 December 2019 в 02:11
поделиться

Это - совершенно звуковой подход, и очень для чего должен использоваться атрибут класса.

Я сказал бы, что, если класс только используется jQuery а не CSS, хорошо иметь четкое соглашение о присвоении имен, которое указывает на использование - если бы не себя, затем по крайней мере, для кого-либо еще, кто может работать с Вашим кодом, видеть Класс, на который не ссылаются в CSS, и затем удалите его :)

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

класс = "подсказка" - класс подсказки = "подсказка открывается" - подсказка в отображенном состоянии

Таким образом, можно обобщить соглашение о присвоении имен для поведений легко (и потенциально код JS для них также).

Кроме того, при помощи CSS для определения презентации различных состояний код JS намного более изящен чем при управлении всем этим через JS., например:

$ ('div.toolTip') .addClass ('открытый');

вместо

$ ('div.toolTip') .css ({дисплей: 'блок'... и т.д. и т.д.});

PS. Я не думаю, что это - место для вхождения в Класс по сравнению с вопросом об идентификаторе, который действительно является другими дебатами!

2
ответ дан 8 December 2019 в 02:11
поделиться

Я продолжаю думать об этом. Прямо сейчас я думаю, что несколько классов являются все еще лучшим подходом и как люди сказали, весьма корректный. Но это делает для грязного DOM, если ничто иное, когда у Вас есть сто элементов как:

<div class="draggable sortable droppable list-item editable text">text</div>

Существуют некоторые вещи, как флаги, можно присвоить с данными () метод в jQuery. Я хотел бы видеть, что данные jQuery () развиваются в инструмент как то, как мы используем классы.

1
ответ дан 8 December 2019 в 02:11
поделиться

Как конвенция мне нравится использовать префикс на моих классах так, чтобы я знал, что класс в файле CSS связывается с кодом JavaScript. Например, с помощью префикса "Js":

.JsButton {...}.JsToggleElement {...}

Другая конвенция состояла бы в том, чтобы просто обычно использовать только строчные буквы для классов CSS, и идентификаторы (остерегайтесь этого, некоторые браузеры чувствительны к регистру!), и использование CamelCasing для связанных с JavaScript классов.

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

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

mySuperObject =
{
    CSS_TOGGLE: 'JsToggle',
    CSS_HIDE:   'JsHide',

    initialize:function()
    {
        var elems = SomeJsLib.getElementsByClassname(document, 'a', this.CSS_TOGGLE);
        ...
1
ответ дан 8 December 2019 в 02:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: