Js как изменить стиль у класса

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

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

Управление классом (классами) элемента

Первый способ взаимодействия с классами элементов сводится к использованию DOM-свойства className. Данное свойство является отражением атрибута class в DOM. DOM-свойство className не было названо class из-за того, что раньше в JavaScript зарезервированные слова нельзя было использовать в качестве названия свойств объектов. Если вы не знаете, что такое DOM-свойства и чем они отличаются от атрибутов, то прочитать про это можете в этой статье.

Пример, в котором выполним различные операции над классом элемента используя DOM-свойство className:

<p id="alert">...</p>

<script>
var elem = document.querySelector('#alert');
// добавим класс к элементу
elem.className = 'alert'; // "alert"
// изменим класс у элемента
elem.className = 'alert-warning'; // "alert-warning"
// получим значение класса и сохраним его в className
var classElem = elem.className; // "alert-warning"
// удалим класс у элемента
elem.className = ""; // ""
</script>

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

Пример, в котором выполним действия как вышеприведённом коде, но с использованием методов для управления атрибутами:

<p id="alert">...</p>

<script>
var elem = document.querySelector('#alert');
// добавим класс к элементу
elem.setAttribute('class', 'alert');
// изменим класс у элемента
elem.setAttribute('class', 'alert-warning');
// получим значение класса и сохраним его в className
var classElem = elem.getAttribute('class'); // "alert-warning"
// удалим класс у элемента
elem.removeAttribute('class');
</script>

DOM-свойство className и атрибут class всегда синхронизуются между собой, это значит, что при изменении одного меняется и другое.

Но у элемента может быть не один класс, а несколько. В этом случае работать с ними как со строкой не очень удобно.

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

Пример, в котором проверим наличие у элемента класса content__show:

<div id="content" class="content content__show">...</div>

<script>
  var elem = document.querySelector('#content');
  if ((' ' + elem.className + ' ').indexOf(' content__show ') > -1) {
    // у элемента есть класс content__show
  } else {
    // у элемента класса content__show нет
  }
</script>

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

Свойство classList

Свойство classList представляет собой специальный объект (DOMTokenList), который содержит методы для выполнения различных операций над классами элемента.

Методы classList:

  • .add( className1[,className2,...] ) — добавляет один или несколько указанных классов к элементу. Если у элемента уже есть данный класс, то он к нему добавлен не будет.
  • .remove( className1[,className2,... ] ) — удаляет один или несколько указанных классов у элемента. Если у элемента нет класса, который вы хотите удалить, то никаких действий произведено не будет.
  • .contains( className ) – проверяет наличие класса у элемента; в качестве ответа возвращает true или false.
  • .toggle( className [,flag] ) — переключает указанное имя класса у элемента, т.е. если у элемента есть данный класс, то убирает его; в противном случае добавляет. Второй параметр (flag) необязательный. По умолчанию он имеет значение undefined. Если ему установить значение true или false, то он будет работать как метод add или remove, т.е. либо добавлять класс к элементу, либо удалять его у него.

Пример, в котором показано как можно выполнять различные действия, связанные с классами элемента с использованием методов classList:

// получим элемент c id="sidebar"
const sideBar = document.querySelector('#sidebar');

// переключим класс hidden-xs у элемента, т.е. если он есть он у элемента, то удалим его; а если данного класса нет, то добавим его к нему
sideBar.classList.toogle('hidden-xs');
// добавим три дополнительных класса
sideBar.classList.add('col-xs-6', 'col-sm-4', 'col-md-3');
// удалим класс hidden-xs
sideBar.classList.remove('hidden-xs');
// проверим есть ли класс hidden-lg у элемента и если есть, то добавим к нему ещё один hidden-md
if (sideBar.classList.contains('hidden-lg')) {
  sideBar.classList.add('hidden-md');
}

Объект classList является псевдомассивом, т.е. его можно перебрать как массив.

Пример, в котором переберём все классы classList:

<div class="content col-12 col-sm-8 col-md-6">...</div>

<script>
var content = document.querySelector('.content');

// Вариант №1. С помощью цикла for
// classList.length - количество классов у элемента
// отсчёт классов в classList ведётся с 0
for (var i = 0, length = content.classList.length; i < length; i++) {
  // i - индекс класса в classList
  // выведем класс в консоль
  console.log(content.classList[i]);
  // или так (с помощью метода item)
  console.log(content.classList.item(i));  
}
// если мы хотим получить класс по его индексу, а указали в качестве значения индекса число, которое больше, чем (количества элементов - 1) в classList (т.к. отсчет ведётся с 0), то в этом случае получим в качестве результата undefined
console.log(content.classList[7]); // undefined

// Вариант №2. С помощью цикла for..of
for (let className of content.classList) {
  // выведем класс в консоль
  console.log(className);
}
</script>

Свойство classList поддерживается всеми современными браузерами. Если нужна поддержка совсем старых браузеров (например, Internet Explorer 8, 9), то в этом случае можно воспользоваться каким-нибудь полифиллом.

Стили элемента

В DOM у каждого элемента есть свойство style, с помощью которого мы можем управлять его стилями. Значение данного свойства — это объект, который доступен только для чтения. Установка стилей элементу в этом случае осуществляется посредством добавления к нему соответствующих свойств.

Пример, как можно к элементу добавить стили через DOM-свойство style:

<div class="square">Квадрат</div>

<script>
const square = document.querySelector('.square');
square.style.width = '170px';
square.style.height = '170px';
square.style.backgroundColor = 'green';
</script>

Имена свойств объекта style обычно совпадают с названиями CSS-свойств. Исключение составляют только те CSS-свойства, в которых используется дефис. Например, background-color. В этом случае дефис и следующая за ним буква заменяется на прописную. Например, CSS-свойство background-color для объекта style будет указывать как backgroundColor. А, например, CSS-свойство с браузерным префиксом -webkit-border-radius — как WebkitBorderRadius.

Удаление стилей

Например, установим body некоторый цвет фона:

document.body.style.backgroundColor = '#eee';

Если теперь данный стиль нужно убрать, то чтобы это выполнить мы должны просто присвоить ему пустую строку:

document.body.style.backgroundColor = '';

Примеры использования DOM-свойства style для установки стилей элементам.

<p id="introtext" style="font-weigth: bold;">...</p>
<p>...</p>
<p>...</p>

<script>
// установим элементу с id = "introtext" с использованием style красный цвет текста 
document.querySelector('#introtext').style.color = 'red';

// установим всем элементам p на странице с использованием style зелёный цвет текста
var paragraphs = document.querySelectorAll("p");
for (var i = 0, length = paragraphs.length; i < length; i++) { 
  paragraphs[i].style.backgroundColor = 'green';
}

// выведем в консоль все CSS свойства элемента с идентификатором "introtext"
var styleElem = document.querySelector('#introtext').style;
for (var i = 0, length = styleElem.length; i < length; i++) { 
  console.log(styleElem[i]);
}
</script>

Свойство cssText

Кроме индивидуального установления стилей элементу мы можем установить их сразу с помощью специального свойства style.cssText. Осуществляется это посредством присваивания этому свойству строки, состоящей из набора стилей, разделённых между собой с помощью точки с запятой. Т.е. выполняется это аналогично тому, как мы устанавливаем стили в HTML-атрибуте style.

Пример, в котором установим стили "font-size:40px; color:blue;" элементам с классом intro:

<p class="intro">...</p>

<script>
  //получим все элементы с классом intro
  const introList = document.querySelectorAll('.intro');

  //установим "font-size:40px; color:blue;" всем элементам в introList
  for (let i = 0, length = introList.length; i < length; i++) {
    introList[i].style.cssText = 'font-size:40px; color:blue;';
  }
</script>

При установке стилей с помощью свойства style.cssText нужно быть осторожным. Эти связано с тем, что при установке это свойство удаляет все стили, которые есть у элемента. Т.е. те, которые мы установили ему с помощью атрибута style и в соответствующем ему DOM-свойстве.

Выполнить операцию, аналогичную той которую выполняет свойство style.cssText, можно ещё через метод setAttribute.

Например:

<p class="info">...</p>

<script>
//получим первый элемент с классом info
const info = document.querySelector('.info');

//установим ему стиль "margin: 10px; padding: 10px; border: 1px solid green;"
info.setAttribute('style', 'margin: 10px; padding: 10px; border: 1px solid green;');
</script>

Задания

1. Написать скрипт, используя classList, для установления элементу с классом text трех классов: size-40, color-red и bg-yellow:

<!-- СSS -->
<style> 
  .size-40 {
    font-size: 40px;
  }
  .color-red {
    color: red;
  }
  .bg-yellow {
    background: yellow;
  }
</style>

<!-- HTML -->
<p class="text">Некоторый текст...</p>

2. Написать код для установления стиля "width: 180px; height: 180px;" всем элементам на странице с классом, начинающимся со слов block-.

На чтение 10 мин. Опубликовано 22.02.2021

Javascript не только предназначен для создания функциональности на странице. Благодаря наличию Documnt Object Model (DOM) и Browser Object Model (BOM), язык может взаимодействовать с разметкой, стилями и браузером. DOM является древовидной структурой, основой которой является объект Window.

Элементы HTML разметки представляются в DOM как набор объектов в определенной иерархии. Каждый HTML элемент представлен в виде объекта со своими свойствами и методами. Поэтому, посредством JS, можно обращаться к элементам разметки и манипулировать с их свойствами.

Свойства HTML элементов выражены в CSS стилях. Однако JS не может изменять стили, заключенные в теге <style>, а также во внешних файлах CSS. Когда посредством JS изменяется или добавляется новое свойство CSS для элемента, то интерпретатор формирует его как атрибут «style». Это можно наглядно увидеть в инструментах разработчика Chrome или в Firebug браузера Firefox.

Иерархия DOM

Объекты в иерархии DOM распределены в следующей последовательности:

  1. Window;
  2. Document;
  3. Element;

Теперь подробнее о каждом из них:

  1. Window. Это главный объект всего браузера. Он содержит свойства-объекты управления окном и элементами разметки. Одним из его свойств-объектов управления экраном браузера является Document, который содержит в себе свойство-объект Element.
  2. Document. Управляет всеми элементами разметки он содержит в себе необходимый набор свойств для обращения к элементам HTML, а также свойства для управления окном.
  3. Element. Содержит свойства и методы, которые позволяют манипулировать элементами и стилями.

Поиск нужного элемента

Прежде чем присвоить элементу какой-либо стиль, нужно сначала обратиться к объекту этого элемента, через объект Document. Выглядит это следующим образом: Document.Element(метод обращения к элементу).style.property = value

Подробнее об этой конструкции:

  1. Document — обращаемся к объекту страницы;
  2. Element — полученный HTML-элемент в ходе вызова одного из методов Document.
  3. style — объект, содержащий свойства CSS объекта Element.
  4. property — CSS свойство, а также свойство объекта style.
  5. value — значение CSS свойства, которое может быть как числовым, так и строковым.

Аналогичным способом мы можем прочитать значение любого CSS свойства. Однако это возможно только в том случае, если у элемента стоит атрибут style. Рассмотрим на примере обращение к элементу посредством метода «getElementById(name)»

Пример:

<p id = «paragraph» class = «parag1»>Параграф<p>

var p = document.getElementById(«paragraph»); // сохранили в переменную элемент с id = paragraph.
p.style.fontSize = «3em»; // изменим стиль параграфа, увеличив его шрифт до 3em

Если открыть инструменты разработчика в браузере, параграф будет с атрибутом style: <p id = «paragraph» class = «parag1» style = «font-size: 3em»>Параграф<p>

Методы поиска элемента

Есть несколько методов объекта document для поиска определенного элемента по классу, по айди или имени тега:

  • getElementById(id) — поиск элемента по id, возвращается один элемент с соответствующим айди;
  • getElementsByClassName(class) — возвращает список элементов под указанным классом, обращение к любому из них осуществляется по индексу [index];
  • getElementsByTagName(tag) — метод аналогичен предыдущему, только поиск осуществляется по имени тега;
  • getElementsByName(name) — возвращает список элементов с указанным именем в атрибуте;
  • querySelector(selector) — возвращает первый элемент с указанным в параметре селектором из тега style или внешнего файла CSS;
  • querySelectorAll(selector) — метод аналогичен предыдущему, но возвращает не один элемент, а их список;
  • body — обращение к тегу body;
  • forms — обращение к формам, сохраняется список имеющихся форм, к отдельной можно обратиться по индексу;
  • images — возвращает все имеющиеся изображения на страницы в теге img, обращение к отдельному осуществляется по индексу.

Пример:

<p id = «paragraph» class = «parag1»>Параграф<p>
<form>
<input type = «text»>
<input type = «submit»>
</form>
<img src = «cat.jpg»>

// Получаем объекты этих элементов
var p = document.getElementById(«paragraph»); // получаем параграф по айди
var f = document.forms; // получили список форм, состоящий из одной
var i = document.images; // получение всех изображений

//Добавим полученным элементам стили
p.style.backgroundColor = «red»;
f.style.borderRadius = «20px»;
i.style.float = «left»;
i.style.margin = «50px»;

Отличия имен свойств в CSS и JavaScript

В CSS имена свойств пишутся через дефис, к примеру: font-size, background-image, border-width и другие. Сейчас рассматриваются именно те свойства, которые пишутся через дефис. В JavaScript свойства пишутся слитно, но с большой буквы: fontSize, backgroundImage, borderWidth. Данное правило не относится к свойствам CSS, состоящим из одного слова: width, position, margun и другие указываются в JavaScript с тем-же синтаксисом.

Как изменить свойства элемента через тег style или внешний файл

Представим, что у нас есть внешний CSS файл со свойствами для тегов определенного класса:

.paragraph{
font-size: 20px;
background-color: yellow;
border: 1px solid black;
}

Теперь в том-же файле определим стиль, для несуществующего элемента:

.chageParagraph{
font-size: 3em;
}

В HTML у нас есть элемент для которого были написаны эти стили:

<p class = «paragraph»>Параграф<p>

Чтобы определить параграфу стили из внешнего файла, нужно сменить имя его класса. Мы определили стили для несуществующего класса. Его мы и поставим нашему параграфу:

var p = document.getElementById(«paragraph»); // Сохранили объект параграфа в переменную
p.class = «changeParagraph»; // Замена имени класса параграфа

Теперь наш параграф получил новый класс «chageParagraph». Как видно для данного класса определены лишь стили по увеличению размера шрифта. Соответственно, фоновый цвет стал по умолчанию, и рамка исчезла. Вернуть обратно прежний стиль можно прежним образом, через установку старого имени класса. Такой подход часто применяют в событиях при добавлении интерактивности странице.

Свойства и методы которые позволяют изменять классы и id элементов

Рассмотрим несколько полезных свойств и методов, которые удобно применять для значения атрибутов class и id:

  1. id = value — сменяет значение id;
  2. className = value — возвращает или устанавливает новое имя атрибута class;
  3. class = value — аналогично предыдущему;
  4. setAttribute(name, value) — метод позволяет установить класс или айди элементу, а также сменить значение имеющегося;

Другие примеры установки различных стилей

Рассмотрим несколько примеров для установки стилей для различных элементов через JavaScript:

  • object.style.animation = «name duration timingFunction delay iterationCount direction fillMode playState» создание анимации для объекта.
  • object.style.background = «color image repeat attachment position size origin clip» — установка свойств для фона.
  • object.style.border = «width style color» — установка стилей для границ элемента.
  • object.style.columns = «auto|column-width column-count» — установка свойств для колонок.
  • object.style.font = «font-style font-variant font-weight font-size/line-height — короткий способ установки нужных свойств для шрифта.
  • object.style.opacity — добавление элементу прозрачности.
  • object.style.outline = «width style color» — установка внешней границы для элемента.

Объект classList

ClassList хранит объект всех классов определенных элементов. Он обладает своими методами и свойствами для манипуляций с классами. Рассмотрим несколько примеров:

  • document.getElementById(«myDIV»).classList — получение объекта classList, который является списком классов с айди myDiv.
  • document.getElementById(«myDIV»).classList.add(«mystyle», «anotherClass», «thirdClass») — здесь определенному элементу было установлено три класса с именами, указанными в параметрах.
  • document.getElementById(«myDIV»).classList.remove(«mystyle») — здесь элементу удалили класс с именем, указанным в параметре метода remove.
  • document.getElementById(«myDIV»).classList.remove(«mystyle», «anotherClass», «thirdClass») — аналогично предыдущему примеру, однако здесь удаляется сразу несколько классов.
  • document.getElementById(«myDIV»).classList.length — получение длины списка классов.
  • document.getElementById(«myDIV»).classList.item(0) — получения первого элемента с классом из списка.
  • document.getElementById(«myDIV»).classList.contains(«mystyle») — проверяем, есть ли такой класс.
  • document.getElementById(«myDropdown»).classList.toggle(«show») — установка атрибута класса и его значения.

Другие примеры

Пример 1: Добавление надписи посредством нажатия на кнопку

<p id=»demo»>Click the button to change the text in this paragraph.</p>

<button onclick=»myFunction()»>Try it</button>

<script>
function myFunction() {
document.getElementById(«demo»).innerHTML = «Hello World»;
}
</script>

Пример 2: Смена цвета текста параграфа

<p id=»demo»>Click the button to change the color of this paragraph.</p>

<button onclick=»myFunction()»>Try it</button>

<script>
function myFunction() {
var x = document.getElementById(«demo»);
x.style.color = «red»;
}
</script>

Пример 3: Смена фонового цвета среднего параграфа

<div class=»example»>
<p>P element in first div with class=»example». Div’s index is 0.</p>
</div>

<div class=»example color»>
<p>P element in first div with class=»example color». Div’s index is 0.</p>
</div>

<div class=»example color»>
<p>P element in second div with class=»example color». Div’s index is 1.</p>
</div>

<p>Click the button to change the background color of the first div element with the classes «example» and «color».</p>

<button onclick=»myFunction()»>Try it</button>

<script>
function myFunction() {
var x = document.getElementsByClassName(«example color»);
x[0].style.backgroundColor = «red»;
}
</script>

Пример 4: Смена фона для всех элементов списка

<p>This is a p element</p>

<p>This is also a p element.</p>

<p>This is also a p element — Click the button to change the background color of all p elements in this document.</p>

<button onclick=»myFunction()»>Try it</button>

<script>
function myFunction() {
var x = document.getElementsByTagName(«P»);
var i;
for (i = 0; i < x.length; i++) {
x[i].style.backgroundColor = «red»;
}
}
</script>

Пример 5: Получение всех параметров документа

<p>An unordered list:</p>
<ul>
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ul>

<p>Click the button to display the innerHTML of the UL element (index 3).</p>

<button onclick=»myFunction()»>Try it</button>

<p id=»demo»></p>

<script>
function myFunction() {
var x = document.getElementsByTagName(«*»);
document.getElementById(«demo»).innerHTML = x[3].innerHTML;
}
</script>

Обратите внимание, здесь все элементы помещены в список через параметр «*». Обращение к любому из них также осуществляется через индекс.

Итого

Современный JavaScript не является удобным инструментом для манипуляций со стилями. доя этого есть ряд других инструментов, к примеру JQuery. Однако каждый разработчик должен знать как управлять стилями нативным языком.

В этом руководстве мы расскажем, как модифицировать DOM, изменяя стили, классы HTML-элементов с помощью JavaScript. Это даст лучшее понимание того, как управлять основными элементами в DOM.

  • Обзор выбора элементов
  • Изменение стилей
  • Заключение

Библиотека jQuery упростила процесс выбора одного или нескольких элементов и применения изменений ко всем одновременно.

Напомним, что document.querySelector() и document.getElementById() — это методы, которые используются для доступа к одному элементу. Используя div с атрибутом id, мы можем получить доступ к этому элементу.

<div id="demo-id">Demo ID</div>

Метод querySelector() является более надежным. Он позволяет выбрать элемент на странице с помощью любого типа селектора.

// Оба метода возвращают единственный элемент
const demoId = document.querySelector('#demo-id');

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

// Изменяем текст одного элемента
demoId.textContent = 'Demo ID text updated.';

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

<div class="demo-class">Demo Class 1</div>
<div class="demo-class">Demo Class 2</div>

Мы будем использовать метод querySelectorAll() для захвата всех элементов с классом demo-class. А также forEach() для их перебора и изменения.

Также к определенному элементу можно получить доступ с помощью querySelectorAll():

// Получаем NodeList всех элементов .demo
const demoClasses = document.querySelectorAll('.demo-class');

// Изменяем текст нескольких элементов с помощью цикла
demoClasses.forEach(element => {
  element.textContent = 'All demo classes updated.';
});

// Получаем доступ к первому элементу в NodeList
demoClasses[0];

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

Примечание: Методы getElementsByClassName() и getElementsByTagName() возвращают наборы элементов HTML, не имеющие доступа к методу forEach(). Он использует querySelectorAll(). В этих случаях необходимо применять стандартный цикл for для перебора набора.

Изменение атрибутов

Атрибуты — это значения, которые содержат дополнительную информацию об HTML-элементах. Чаще всего они состоят из пары имя / значение и могут применяться в зависимости от элемента. Полный список HTML- атрибутов смотрите в списке атрибутов .

К пользовательским элементам, которые не являются частью стандарта HTML, добавляется префикс data-.

В JavaScript доступно четыре метода изменения атрибутов элемента:

Метод Описание Пример
hasAttribute() Возвращает логическое значение true или false element.hasAttribute(‘href’);
getAttribute() Возвращает значение указанного атрибута или null element.getAttribute(‘href’);
setAttribute() Добавляет или обновляет значение указанного атрибута element.setAttribute(‘href’, ‘index.html’);
removeAttribute() Удаляет атрибут из элемента element.removeAttribute(‘href’);

Создадим новый HTML-файл с тегом <img>, использующим один атрибут. В нем мы будем ссылаться на изображение, доступное через URL-адрес.

<!DOCTYPE html>
<html lang="en">
<body>
    <img src="https://js-tutorials.nyc3.digitaloceanspaces.com/shark.png">
</body>
</html>

При загрузке созданной веб-страницы в браузере ее HTML-код будет выглядеть следующим образом:

Обзор выбора элементов

Теперь протестируем все методы для обработки атрибутов.

// Назначаем элемент изображения
const img = document.querySelector('img');

img.hasAttribute('src');                // возвращает true
img.getAttribute('src');                // возвращает "...shark.png"
img.removeAttribute('src');             // удаляет атрибут src и значение

Удалим атрибут src и значение, связанные с тегом <img>. Но можно сбросить этот атрибут и назначить ему другое изображение с помощью img.setAttribute():

img.setAttribute('src', 'https://js-tutorials.nyc3.digitaloceanspaces.com/octopus.png');

Обзор выбора элементов - 2

Также можно изменить атрибут напрямую, присвоив ему новое значение в качестве свойства элемента:

img.src = 'https://js-tutorials.nyc3.digitaloceanspaces.com/shark.png';

Любой атрибут может быть отредактирован так же, как и с помощью описанных выше методов.

Методы hasAttribute() и getAttribute() используются с условными операторами. Методы setAttribute() и removeAttribute() также применяются для изменения структуры DOM.

Изменение классов

Атрибут class соответствует селектору класса CSS. CSS-классы используются для применения стилей к нескольким элементам. В отличие от идентификаторов, которые могут существовать на веб-странице только в единственном экземпляре.

В JavaScript есть свойства className и classList, предназначенные для работы с атрибутом class.

Метод / Свойство Описание Пример
className Получает или задает значение класса element.className;
classList.add() Добавляет одно или несколько значений класса element.classList.add(‘active’);
classList.toggle() Включает или отключает класс element.classList.toggle(‘active’);
classList.contains() Проверяет, существует ли класс. element.classList.contains(‘active’);
classList.replace() Заменяет существующее значение класса новым. element.classList.replace(‘old’, ‘new’);
classList.remove() Удаляет значение класса. element.classList.remove(‘active’);

Создадим еще один HTML-файл для демонстрации перечисленных выше методов.

<!DOCTYPE html>
<html lang="en">
<style>
    body {
        max-width: 600px;
        margin: 0 auto;
        font-family: sans-serif;
    }
    .active {
        border: 2px solid blue;
    }

    .warning {
        border: 2px solid red;
    }
    .hidden {
        display: none;
    }
    div {
        border: 2px dashed lightgray;
        padding: 15px;
        margin: 5px;
    }
</style>
<body>
    <div>Div 1</div>
    <div class="active">Div 2</div>
</body>
</html>

После открытия файла classes.html в браузере вы увидите следующее:

Свойство className было введено для предотвращения конфликтов с ключевым словом class, которое используется в JavaScript. Вы можете использовать className, чтобы присвоить значение непосредственно классу.

// Выбираем первый div
const div = document.querySelector('div');

// Присваиваем первому div класс warning
div.className = 'warning';

Мы присвоили первому элементу div класс warning, определенный в CSS. Вы получите следующий результат:

Обратите внимание, что если какие-либо классы уже используются в элементе, это переопределит их. Можно добавить несколько классов, разделенных пробелом, используя свойство className.

Другой способ изменить классы – использовать свойство classList, которое включает в себя несколько полезных методов. Они похожи на JQuery-методы addClass, removeClass и toggleClass.

// Выбираем второй div по имени класса
const activeDiv = document.querySelector('.active');

activeDiv.classList.add('hidden');                // Добавляем класс hidden 
activeDiv.classList.remove('hidden');             // Удаляем класс hidden
activeDiv.classList.toggle('hidden');             // Переключаем hidden true и false
activeDiv.classList.replace('active', 'warning'); // Заменяем активный класс классом warning

После выполнения указанных выше методов веб-страница будет выглядеть следующим образом:

Использование classList.add() добавит новый класс в список существующих. Также можно использовать setAttribute для изменения класса элемента.

Создадим простой пример для демонстрации изменения стилей элементов с помощью JavaScript. Ниже приведен новый HTML-файл. Он включает в себя div с несколькими встроенными стилями, применяемыми для отображения квадрата.

<!DOCTYPE html>
<html lang="en">
<body>
    <div style="height: 100px;
                width: 100px;
                border: 2px solid black;">Div</div>
</body>
</html>

При открытии файла styles.html в браузере вы увидите следующее:

Изменение стилей

Один из вариантов редактирования стилей – использование метода setAttribute().

// Выбираем div
const div = document.querySelector('div');

// Применяем к div стили
div.setAttribute('style', 'text-align: center');

Но подобный подход удалит все существующие для элемента встроенные стили. Поэтому лучше напрямую использовать атрибут style:

div.style.height = '100px';
div.style.width = '100px';
div.style.border = '2px solid black';

Обратите внимание, что в методах JavaScript используется другие правила написания свойств CSS. Например, вместо text-align мы будем использовать textAlign.

// Преобразуем div в круг и центрируем текст вертикально
div.style.borderRadius = '50%';
div.style.display = 'flex';
div.style.justifyContent = 'center';
div.style.alignItems = 'center';

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

Изменение стилей - 2

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

В этом руководстве мы рассказали, как получить доступ, изменить и удалить атрибуты HTML-элементов в DOM с помощью JavaScript. А также как добавлять и заменять CSS-классы элемента, редактировать встроенные CSS- стили. Для получения дополнительной информации ознакомьтесь с документацией по атрибутам от Mozilla Developer Network.

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Js throw error type
  • Js throw custom error
  • Js startup error 11 rage mp
  • Js rethrow error
  • Js json stringify error

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии