Jquery изменить css свойство: Получение и установка CSS-свойств элементам в jQuery

Содержание

HTML DOM — Изменение CSS — Учебник JavaScript — Schoolsw3.com

schoolsw3.com

САМОСТОЯТЕЛЬНОЕ ОБУЧЕНИЕ ДЛЯ ВЕБ РАЗРАБОТЧИКОВ


❮ Назад Далее ❯


HTML DOM позволяет JavaScript изменять стиль элементов HTML.


Изменение стиля HTML

Чтобы изменить стиль элемента HTML, используйте этот синтаксис:

document.getElementById(id).style.property = new style

В следующем примере изменяется стиль <p> элемента:

Пример

<html>
<body>

<p>Привет Мир!</p>

<script>
document.getElementById(«p2»).style.color = «зеленый»;
</script>

<p>Параграф выше был изменен сценарием.</p>

</body>
</html>

Попробуйте сами »


Использование событий

HTML DOM позволяет выполнять код при возникновении события.

События генерируются браузером, когда «что-то происходит» с элементами HTML:

  • На элементе щелкают
  • Страница загружена
  • Поля ввода изменены

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

В этом примере изменяется стиль элемента HTML

id="id1", когда пользователь нажимает кнопку:

Пример

<!DOCTYPE html>
<html>
<body>

<h2>Мой заголовок 1</h2>

<button type=»button»
onclick=»document.getElementById(‘id1’).style.color = ‘red'»>
Щелкни меня!</button>

</body>
</html>

Попробуйте сами »


Больше примеров

Видимость Как сделать элемент невидимым. Вы хотите показать элемент или нет?


Справочник по объекту стиля HTML DOM

Все свойства стиля HTML DOM можно найти в нашем полном Справочнике по объектам стиля HTML DOM.


Проверьте себя с помощью упражнений

Упражнение:

Измените цвет текста <p> элемента на «red».

<p></p>
<script>
document.getElementById("demo") = "red";
</script>


❮ Назад Далее ❯

ВЫБОР ЦВЕТА



ТОП Учебники
HTML Учебник
CSS Учебник
JavaScript Учебник
КАК Учебник
SQL Учебник
Python Учебник
W3.CSS Учебник
Bootstrap Учебник
PHP Учебник
Java Учебник
C++ Учебник
jQuery Учебник
ТОП Справочники
HTML Справочник
CSS Справочник
JavaScript Справочник
SQL Справочник
Python Справочник
W3.CSS Справочник
Bootstrap Справочник
PHP Справочник
HTML Цвета
Java Справочник
Angular Справочник
jQuery Справочник
ТОП Примеры
HTML Примеры
CSS Примеры
JavaScript Примеры
КАК Примеры
SQL Примеры
Python Примеры
W3.CSS Примеры
Bootstrap Примеры
PHP Примеры
Java Примеры
XML Примеры
jQuery Примеры

Форум | О SchoolsW3

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

Примеры в редакторе упрощают и улучшают чтение и базовое понимание. Учебники, ссылки, примеры постоянно пересматриваются, чтобы избежать ошибок, но не возможно гарантировать полную правильность всего содержания. Некоторые страницы сайта могут быть не переведены на РУССКИЙ язык, можно отправить страницу как ошибку, так же можете самостоятельно заняться переводом. Используя данный сайт, вы соглашаетесь прочитать и принять Условия к использованию, Cookies и политика конфиденциальности.

Авторское право 1999- Все права защищены.
SchoolsW3 работает на площадке от SW3.CSS.

FAQ / Методология / БЭМ

Возникли вопросы по БЭМ? Мы поможем быстро найти ответы.

Почему БЭМ?

  • В чем отличие БЭМ от OOCSS, AMCSS, SMACSS, SUITCSS?

  • В чем разница между БЭМ и Web Components?

  • В чем разница между БЭМ и Bootstrap?

  • Полезен ли БЭМ в маленьких проектах?

Блоки и элементы

  • Когда создавать блок, когда — элемент?

  • Как изменить внешний вид блока?

  • Зачем в именах модификаторов и элементов указывать имя блока?

  • Зачем создавать отдельные директории и файлы для каждого блока и технологии?

  • Наследуют ли элементы блока его CSS-свойства?

  • Почему не стоит создавать блоки-обертки?

  • Почему не стоит создавать элементы элементов (block__elem1__elem2)?

Модификаторы и миксы

  • Когда создавать модификатор, когда — микс?

  • Когда создавать булевый модификатор, когда — модификатор «ключ-значение»?

  • Как выбрать имя модификатора?

  • Как сделать глобальные модификаторы для блоков?

  • Почему нельзя писать имя модификатора блока в имени элемента (block_mod__elem)?

CSS

  • Как адаптировать сайт к различным устройствам?

  • Можно ли совмещать теги и классы в селекторе?

  • Можно ли использовать вложенные селекторы?

  • Можно ли использовать комбинированные селекторы?

  • Можно ли использовать селекторы по пользовательским тегам?

  • Почему не стоит делать общий сброс стилей (reset)?

  • Почему не стоит писать block_mod вместо block block_mod?

  • В каких случаях следует создавать вспомогательные блоки?

  • Зачем внешнюю геометрию и позиционирование задавать через родительский блок?

JavaScript

  • Зачем нужен i-bem. js, если есть jQuery?

У меня другой вопрос

Если вы не нашли ответ на свой вопрос, свяжитесь с нами на форуме.

В чем отличие БЭМ от OOCSS, AMCSS, SMACSS, SUITCSS?

  • БЭМ работает не только с CSS, но и с JavaScript.

  • БЭМ больше схож с Web Components, чем с перечисленными решениями для CSS.

  • БЭМ предоставляет комплексное решение по созданию архитектуры проекта и помогает организовать процессы разработки.

    Подробнее читайте в разделе Применение методологии для решения задач веб-разработки.

В чем разница между БЭМ и Web Components?

Поддержка браузеров

  • Web Components не поддерживается в Safari, iOS Safari, Internet Explorer, Firefox.

  • БЭМ работает во всех браузерах.

Инкапсуляция

  • В Web Components реализована через Shadow DOM.

  • В БЭМ — с помощью элементов блока.

Работа шаблонов

  • В Web Components шаблоны всегда выполняются в браузере. Это может потребовать дополнительных решений проблем с индексацией.

  • В БЭМ генерация шаблона возможна на этапе разработки. Это позволяет отдавать готовый HTML. Шаблоны могут выполняться как в браузере, так и на сервере.

  • Web Components использует императивный принцип — интерполяцию строк.

  • БЭМ использует декларативный подход, который позволяет гибко управлять шаблонизацией и избегать повторений.

Вместо импорта HTML — сборка

  • Web Components использует импорт HTML, который работает непосредственно в браузере. Для объединения HTML-файлов используется инструмент Vulcanize.

  • В БЭМ используется сборка. Для объединения файлов используются сборщики: ENB, Gulp.

Вместо Custom Elements — абстракция над DOM-деревом

  • В Web Components используются Custom Elements. Такой подход позволяет разместить на одном DOM-узле только один компонент.

  • В БЭМ используется БЭМ-дерево. Такой подход позволяет размещать на одном DOM-узле несколько компонентов (БЭМ-сущностей).

    Подробнее читайте в разделе про миксы.

Полезен ли БЭМ в маленьких проектах?

Методология БЭМ предоставляет правила организации веб-проектов, независимо от их размера или количества разработчиков в команде. Даже если в вашей команде два человека и вы верстаете одностраничные сайты, БЭМ позволяет:

  • Повторно использовать верстку

    • Небольшие однотипные проекты могут иметь похожую структуру. Например, посадочные страницы (landing) — разные снаружи, одинаковые внутри. Для их создания можно использовать готовые шаблоны.

    • В пределах одной страницы используются одинаковые блоки: несколько кнопок, выпадающих списков или меню. Их можно взять из готовой библиотеки или реализовать свою библиотеку и использовать во всех проектах.

  • Быстро прототипировать верстку

    • Прототип сайта создается из блоков. Вместо верстки в БЭМ-проекте вы сразу проектируете интерфейс из готовых блоков.

  • Ускорить разработку

    • Уровни переопределения позволяют подключать библиотеки и доопределять блоки, не зависеть от обновлений библиотеки.

    • БЭМ-проект можно быстро начать с шаблонного проекта project-stub или bem-express.

  • Не зависеть от конкретного разработчика

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

  • Ускорить рефакторинг

    • БЭМ-проект устроен таким образом, что изменения в одном блоке можно применить ко всем блокам в проекте. При этом нет необходимости знать все возможные случаи использования этого блока.

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

  • Ускорить и упростить смену дизайна за счет уровней переопределения.

  • Минифицировать CSS/JS даже в одностраничном проекте.

В чем разница между БЭМ и Bootstrap?

Bootstrap — это свободный набор сверстанных блоков для создания сайтов и веб-приложений.

БЭМ — это методология, позволяющая:

  • создавать архитектуру проекта;

  • разрабатывать веб-приложения независимыми блоками;

  • упрощать поддержку проектов.

Также существует ряд библиотек с открытым исходным кодом:

  • bem-components — библиотека блоков, содержащая контролы форм и другие базовые компоненты веб-интерфейса;

  • bem-core — библиотека блоков, предоставляющая специализированный JavaScript-фреймворк для веб-разработки.

  • bem-history — БЭМ-обертка над History API.

Когда создавать блок, когда — элемент?

Методология БЭМ не устанавливает строгих правил создания блоков и элементов. Многое зависит от конкретных реализаций и личных предпочтений разработчика. Выбирайте то, что подходит именно вам, учитывая рекомендации.

Как изменить внешний вид блока?

Внешний вид блока можно изменить при помощи модификаторов или миксов.

Используйте модификаторы

Если существует вероятность переиспользовать блок в данном оформлении.

Используйте миксы

Если блок имеет специфичное оформление только для данного окружения и не будет переиспользован на проекте.

Подробнее про применение миксов и модификаторов читайте в разделе Когда создавать модификатор, когда — микс?.

Зачем в именах модификаторов и элементов указывать имя блока?

Имя блока в именах модификаторов и элементов:

  • Обеспечивает пространство имен.

    Это позволяет ограничить влияние элементов и модификаторов одного блока на другой.

    Пример

    <!-- Модификаторы `button_size_m` и `select_size_m` не будут влиять друг на друга. -->
    <div>...</div>
    <div>.
    ..</div>
  • Позволяет использовать миксы.

    При использовании миксов необходимо явно указывать пространство имен для модификаторов, чтобы было ясно к какой из сущностей на данном DOM-узле относится модификатор.

    Пример

    <!-- Имя модификатора `button_size_m` позволяет определить,
    что модификатор относится к кнопке, а не к миксу — блоку `dropdown`. -->
    <div>...</div>
    
  • Облегчает поиск в коде.

    Уникальные имена облегчают поиск сущностей в коде и файловой структуре.

Зачем создавать отдельные директории и файлы для каждого блока и технологии?

Для удобства разработки и поддержки проекта файловую структуру БЭМ-проекта разделяют на вложенные директории и файлы.

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

  • Flat

  • Flex

Наследуют ли элементы блока его CSS-свойства?

Да. Механизм наследования CSS-свойств в БЭМ ничем не отличается от привычного наследования.

Чтобы одинаково оформить все элементы блока, целесообразно задать CSS-правила непосредственно блоку.

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

Почему не стоит создавать блоки-обертки?

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

Подробнее читайте в разделе HTML по БЭМ.

Почему не стоит создавать элементы элементов (block__elem1__elem2)?

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

Подробнее читайте в разделе Быстрый старт.

Когда создавать модификатор, когда — микс?

Создавайте модификатор

Если нужная вам реализация может использоваться повторно и не зависит от реализации других компонентов страницы. Например, блок select имеет модификаторы: hovered, pressed, disabled, focused, opened.

Создавайте микс

Если нужная вам реализация требуется только для данного окружения и в данном виде точно не будет переиспользована на проекте.

Например, в большинстве случаев создается микс, если:

  • реализуется определенная бизнес-логика проекта;

  • задается внешняя геометрия для данного окружения.

Когда создавать булевый модификатор, когда — модификатор «ключ-значение»?

Создавайте булевый модификатор

Если важно только наличие или отсутствие модификатора у блока, а его значение несущественно. Например, модификатор, описывающий состояние «отключен»: disabled.

Пример

<div>...</div>

Создавайте модификатор вида «ключ-значение»

Если состояний у блока может быть несколько. Например, для описания размеров блока можно использовать модификатор size с допустимыми значениями s, m и l.

Пример

<div>...</div>
<div>...</div>

Как выбрать имя модификатора?

Выбирайте имена модификаторов, опираясь на семантику, а не на описываемые им CSS-свойства.

Пример

<!-- Неудачное имя модификатора -->
<button>...</button>
<!-- Удачное имя модификатора -->
<button>...</button>

Имя модификатора button_background_yellow неудачное, потому что:

  • При изменении фона с желтого (yellow), например, на красный (red) придется менять не только CSS-код, но и название селектора, шаблоны и, вполне вероятно, JavaScript-код.

  • При добавлении других CSS-свойств, например, border, line-height, имя модификатора перестанет соответствовать его содержанию.

Как сделать глобальные модификаторы для блоков?

В БЭМ отсутствует понятие глобальных модификаторов, так как имя любого модификатора содержит имя блока или элемента.

Если требуется вынести CSS-свойство за пределы одного блока и применять его к разным БЭМ-сущностям в проекте, необходимо создавать отдельный блок, реализованный в технологии CSS. После чего совместить реализацию разных блоков с помощью миксов.

Подробнее читайте в разделе Стилизация групп блоков.

Почему нельзя писать имя модификатора блока в имени элемента (block_mod__elem)?

Элемент — составная часть блока, а не модификатора блока. Таким образом, только имя блока может задавать пространство имен для элементов.

Это важно, потому что:

  • Блок может иметь много модификаторов.

    Пример

    <div>
        <div>...</div>
    </div>
    
  • Модификатор определяет состояние блока/элемента, которое может быть изменено во время выполнения скрипта JavaScript.

Как адаптировать сайт к различным устройствам?

Существует несколько способов изменять разметку страницы на основе ширины окна браузера:

  • используя Media Queries;

  • переключая модификаторы.

В обоих случаях необходимо определить контрольные точки (breakpoints), условия, при которых раскладка сайта меняется с одной на другую.

Media Queries

Файловая структура:

common.blocks/ button/ button.css # CSS-реализация кнопки

CSS-реализация:

@media (max-width: 767px) {
    .button {
          left: 0;
    }
}
@media (max-width: 479px) {
    .button {
        right: 0;
    }
}

Примечание Имена блоков должны быть достаточно общими, для того чтобы его можно было использовать более чем с одной целью. Не стоит называть блок sidebar-left, если при изменении ширины экрана, его позиция изменится на right.

Переключение модификатора

Файловая структура:

common. blocks/
    button/
        _position/
            button_position_left.css
            button_position_right.css
        button.js                         # JS-реализация кнопки

button_position_left.css:

.button_position_left {
    left: 0;
}

button_position_right.css:

.button_position_right {
    right: 0;
}

Изменение CSS-классов на DOM-узле происходит при помощи JavaScript.

Подробнее читайте в разделе Переключение модификаторов.

Можно ли совмещать теги и классы в селекторе?

Совмещение тега и класса в селекторе повышает специфичность CSS-правил. Методология БЭМ не рекомендует совмещать теги и классы в селекторе.

Подробнее читайте в разделе Совмещение тега и класса в селекторе.

Можно ли использовать вложенные селекторы?

Вложенные селекторы увеличивают связанность кода и делают его повторное использование невозможным. Методология БЭМ допускает использование таких селекторов, но рекомендует свести их к минимуму.

Подробнее читайте в разделе Вложенные селекторы.

Можно ли использовать комбинированные селекторы?

Комбинированные селекторы имеют более высокую специфичность CSS-правил, чем одиночные. Успешность переопределения таких селекторов сильно привязана к порядку их объявления. Методология БЭМ не рекомендует использовать комбинированные селекторы.

Подробнее читайте в разделе Комбинированные селекторы.

Можно ли использовать селекторы по пользовательским тегам?

В HTML блоки могут выражаться с помощью пользовательских HTML-элементов (Custom Elements) с целью:

  • улучшить структуру веб-страницы и добавить смысловое значение заключенному в них содержимому;

  • использовать селекторы по пользовательским тегам вместо селекторов по классам;

  • связать с HTML-элементом дополнительные данные, с которыми потом будет работать JavaScript.

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

Пример

HTML-реализация:

<icon-twitter>...</icon-twitter>

CSS-реализация:

icon-twitter {}
.icon_social_twitter {}

В таком подходе существует ряд ограничений:

  • невозможно использовать миксы;

  • не любой блок можно выразить пользовательским HTML-элементом. Например, для всех ссылок необходим тег <a>, а для полей — <input>.

Почему не стоит делать общий сброс стилей (reset)?

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

Общий сброс стилей по сути реализуется с помощью глобальных CSS-правил, которые в большинстве случаев пишутся к селекторам на тег, что нежелательно делать в БЭМ-проекте.

Почему не стоит писать block_mod вместо block block_mod?

Если оставить только класс модификатора без указания класса самого блока/элемента, то все базовые CSS-свойства блока/элемента необходимо будет определить в модификаторе.

Модификатор определяет состояние блока/элемента, которое может быть изменено во время выполнения скрипта JavaScript. Таким образом, копировать базовые CSS-свойства блока придется во все его модификаторы.

Пример

<div>
    <div>...</div>
</div>

Примечание. Совмещение нескольких модификаторов на одном и том же DOM-узле приведет к дублированию кода, реализующего базовую функциональность (логику и стили) блока.

В каких случаях следует создавать вспомогательные блоки?

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

Примером вспомогательного блока в bem-core может служить блок clearfix, а в bem-components — z-index-group.

Зачем внешнюю геометрию и позиционирование задавать через родительский блок?

Чтобы компонент оставался независимым, CSS-свойства, которые помешают его переиспользовать в другом окружении (например, margin и position), задают через родительский блок.

Подробнее читайте в разделе Внешняя геометрия и позиционирование

Зачем нужен i-bem.js, если есть jQuery?

i-bem.js не предназначен для замены фреймворка общего назначения, такого как jQuery.

i-bem.js позволяет:

  • разрабатывать веб-интерфейс в терминах блоков, элементов, модификаторов;

  • интегрировать JavaScript-код с шаблонами и CSS-правилами в стиле БЭМ;

  • описывать логику работы блока как набор состояний.

Как изменить CSS с помощью jQuery

1 ответ на этот вопрос.

0 голосов

Связанные вопросы в JQuery

Отредактируйте файл SVG, добавьте fill=»currentColor» в … ПОДРОБНЕЕ

ответил 1 июня 2022 г. в JQuery к Эдурека • 13 630 баллов • 15 206 просмотров

  • jquerycssvg

Привет, Добавьте псевдоним в конфигурацию веб-пакета: решать: { … ПОДРОБНЕЕ

ответил 28 апр. 2020 г. в JQuery к Нирой • 82 840 баллов • 6481 просмотр

  • HTML
  • CSS
  • JavaScript
  • ларавель
  • угловой

Привет @картик, Предполагая, что у вас есть кнопка с …

ПОДРОБНЕЕ

ответил 10 сент. 2020 г. в JQuery к Нирой • 82 840 баллов • 3321 просмотр

  • HTML
  • CSS
  • JavaScript
  • ларавель
  • PHP

Привет @картик, Вы можете удалить существующие опции… ПОДРОБНЕЕ

ответил 25 нояб. 2020 г. в JQuery к Нирой • 82 840 баллов • 4,192 просмотра

  • HTML
  • CSS
  • JavaScript
  • ларавель
  • PHP

Привет, jQuery — это быстрый и лаконичный JavaScript … ПОДРОБНЕЕ

ответил 14 февраля 2020 г. в JQuery к картик • 37 510 баллов • 633 просмотра

  • HTML
  • CSS
  • JavaScript
  • jquery
  • угловой

Привет, Используйте следующий тег script в своем . .. ПОДРОБНЕЕ

ответил 28 апр. 2020 г. в JQuery к Нирой • 82 840 баллов • 11 755 просмотров

  • HTML
  • CSS
  • JavaScript
  • PHP
  • jquery

Привет @картик, Вы указали неверный заказ на … ПОДРОБНЕЕ

ответил 28 апр. 2020 г. в JQuery к Нирой • 82 840 баллов • 19 785 просмотров

  • HTML
  • CSS
  • JavaScript
  • jquery
  • PHP
  • ларавель

Привет @картик, Установите параметр запуска всплывающего окна на наведение вместо … ПОДРОБНЕЕ

ответил 12 мая 2020 г. в JQuery к Нирой • 82 840 баллов • 2195 просмотров

  • HTML
  • CSS
  • JavaScript
  • ларавель
  • PHP
  • jquery

Вы можете получить вычисленное значение … ПОДРОБНЕЕ

ответил 14 июня 2022 г.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *