Я должен избегать использования селекторов jQuery на классах CSS, которые определяются в таблицах стилей?

ваш код работает, но здесь, в коде, который вы указали, его цвет вы выбираете

 button{
    margin-top:5%;
   /*letter-spacing: 1px;*/
    line-height: 25px;
    font-size: 16px;
    background-color: transparent;
    border:none;
    text-transform: uppercase;
 }

 button:hover{
    color:red;
    cursor: pointer;
}
<div class="col-md-12">
    <div class="col-md-6 col-xs-12 career">
        <button>
            <strong>Student Exploring careers</strong>
        </button>
    </div>
</div>

8
задан Blegger 4 March 2009 в 22:49
поделиться

9 ответов

Я думаю, что Ваша проблема чисто концептуальна. class атрибут в HTML не определяет класс CSS. Это определяет семантический класс элемента. Это именно так происходит, что CSS использует эти классы для применения стилей (почти таким же способом, как селекторы jQuery используют их для применения другой функциональности). Нет ничего препятствующего тому, чтобы Вы имели классы, которые не определяются в таблице стилей, или которые не имеют никакой информации о стилях вообще. По сути, все классы нужно считать частью кода, не моделированием. Код диктует классы, CSS просто осуществляет контрейлерные перевозки на семантической разметке для применения стилей. Таким образом CSS никогда не должен диктовать имена классов, и никакой разработчик никогда не должен изменять имена классов. Я понимаю, что на первый взгляд это, вероятно, очень походит на другие ответы, которые (очень правильно) советуют Вам "использовать семантические имена", но здесь существует тонкое концептуальное различие: классы являются ведущими устройствами, стили CSS являются ведомыми устройствами.

Ссылки: этот веб-сайт высказывает мое мнение вполне ясно; w3schools также упоминает это кратко.

5
ответ дан 5 December 2019 в 10:44
поделиться

Имя класса CSS должно описать функцию элемента, не стиль, что это относится к нему. Если у Вас есть боковая панель, которая пускается в ход налево, назовите боковую панель класса, не leftFloat. Таким образом, можно поместить стиль боковой панели в классе боковой панели в CSS и применить любые функции jQuery, в которых Вы нуждаетесь.

Отредактированный для разъяснения одного из комментариев: Вам не придется переименовать классы или идентификатор элементов. Если у Вас есть боковая панель, то, возможно, она изменяется, чтобы быть панелью инструментов или главной навигацией. Имеет значение, что это все еще называют боковой панелью? Пользователь никогда не замечает. Или Вы могли дать всему действительно абстрактные имена, как панель навигации и основное содержание.

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

8
ответ дан 5 December 2019 в 10:44
поделиться

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

Если Вы волнуетесь по поводу разработчиков, повреждающих сценарий путем переименования классов, то просто добавляют примечание к CSS, что они должны искать ссылки jQuery при изменении имен классов.

1
ответ дан 5 December 2019 в 10:44
поделиться

Хорошо уважать разделение проблем. Но чтобы это работало, элементы нужно назвать семантически ролью, которую они играют на странице.

Хороший:

<div id="nav">...</div>
<div id="sidebar">...</div>
<ul class="productsList">
  <li>...</li>
</ul>

Плохо:

<span class="Verdana11">...</span>
<div class="blueBox">...</div>
<ul class="bulletedList">
  <li>...</li>
</ul>

И т.д. Заметьте, что элементы называют, на основе какой функции элемент выполняет на странице. Стили изменятся - можно рассчитывать на него. Но роли не были должны (запрет модернизации сайта, который обязательно означает, что Вы будете повторно кодировать так или иначе). Таким образом, боковая панель всегда будет боковой панелью независимо от того, изменяется ли размер шрифта или удалена ли граница в какой-то момент по линии.

Поскольку Вы пишете свои сценарии, необходимо быть нацелены на элементы на основе имен классов, которые не изменятся. Это только возможно, если Вы назвали свои элементы семантически - и Ваши co-разработчики должны делать то же.

4
ответ дан 5 December 2019 в 10:44
поделиться

Я склонен соглашаться с Вами: лучше разделить “визуальные” классы от “функциональных” классов.

Но могут быть некоторые случаи, где имя класса делает это очевидным, что класс имеет некоторые функциональные эффекты. Например, .input-отредактированный класс может быть установлен jQuery и разработан с CSS одновременно.

0
ответ дан 5 December 2019 в 10:44
поделиться

Попытайтесь использовать более варьировавшиеся селекторы также. Если разметка не собирается изменяться очень, но Ваши имена классов могли бы, попытаться использовать селекторы класса как можно меньше. Если Ваши классы не собираются изменяться очень, но Ваша разметка будет, использовать больше классов. Действительно, Ваши селекторы jQuery должны быть столь же семантическими как что-либо еще, что Вы пишете. Количества удобочитаемости.

0
ответ дан 5 December 2019 в 10:44
поделиться

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

Я думаю, что было бы лучше поместить классы, которые только используются сценарием в отдельной таблице стилей. Включайте это через JS (поскольку это не нужно, если JS не доступен). Примером был бы ".hover" или ".current", очевидно, только если это сделано через сценарии, например, эффекты на элементы блочного уровня. На встроенных элементах Вы, вероятно, просто использовали бы CSS псевдо класс.

Как разработчик HTML/CSS я мог бы иногда окаймлять, когда люди говорят, "О, уже существует класс CSS, я могу просто сцепиться в на тот", но полностью в порядке. После того, как весь атрибут класса не эксклюзивен к CSS. Это - HTML-атрибут. Относительно страха перед удалением правил CSS, которые все еще используются в JS, позволяет быть честным: С CSS на больших сайтах Вы никогда не можете быть полностью уверены, было это, используется, неважно, если в JS или HTML.

0
ответ дан 5 December 2019 в 10:44
поделиться

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

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

Классы существуют для добавления информации к элементам HTML. Действительно ли это - сообщение печати? Действительно ли это - виджет? Это отключено? HTML не имеет никакого способа указать, что эти свойства сохраняют с классами. Некоторым классам связали информацию о стилях с ними (сообщения печати должны иметь свои заголовки, опубликовать даты и подписи, приятно отформатированные), некоторым связали функциональность с ними (виджетам нужно инициализированный), и другие имеют и (элементы становятся отключенными программно и должны быть скрыты или "исчезли").

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

0
ответ дан 5 December 2019 в 10:44
поделиться

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

Вообразить

<div class=css-class>
  <div class=script-class>
    <address> <!--for semantic "this is my homepage"-->

разве это не достаточно ужасно? Одно отделение немного лучше. Один адрес немного еще лучше. Один класс немного еще лучше.

Проблема "они изменяются, классы" решен комментариями, тестами и тщательным редактированием.

-2
ответ дан 5 December 2019 в 10:44
поделиться
Другие вопросы по тегам:

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