Операции върху класове и стилове на елементи в JavaScript. Взаимодействие на JavaScript и CSS Създаване на анимационни ефекти чрез CSS

24.08.2023

здравейте всички В тази статия ще разгледаме как да зададете стилове в javascript правилно и в различни браузъри.

И така, онези от вас, които вече са поне малко запознати с javascript, знаят, че елементите имат свойство style, което съхранява обект, чрез който можете да задавате определени CSS стилове. Не всичко обаче е толкова просто, колкото може да изглежда на пръв поглед. И ето защо. Нека създадем два съвсем обикновени блока div, но за единия ще задаваме стилове чрез атрибута style, а за другия чрез тага style.


div(
ширина: 150px;
височина: 150px;
}

#div1 (
фон: #f00;
}


Сега нека се опитаме да покажем стойността на свойството на фона за тези блокове.

Var div1 = document.getElementById("div1");
var div2 = document.getElementById("div2");
предупреждение (div1.style.background);
предупреждение (div2.style.background);

В първия случай няма да получим нищо, но за блока div2 стиловете ще бъдат показани. защо Работата е там, че javascript може да показва само стойностите на онези свойства, които са зададени директно в html маркирането с помощта на атрибута style, и тези, които са зададени чрез javascript. Ако сега зададем свойството на фона по този начин

Div1.style.background = "#f00";

Сега стойността ще бъде показана чрез предупреждение.

Предупреждение(div1.style.background);

Същите стилове, които задаваме в тага за стил или във външен лист със стилове, се наричат ​​"изчислени стилове" или "изчислени стилове". Те получиха това име с причина. Въпросът е, че браузърът първо чете html маркирането и след това изчислява стиловете, които задаваме във външния стилов лист, и ги прилага към това маркиране.

Все пак имаме достъп до тях. Спецификацията на DOM Level2 има нещо за това: специална функция getComputedStyle() . Нека да видим как работи.

Var styles = getComputedStyle(div1);
предупреждение (styles.background);

Трябва да му предадете елемента, чиито стилове искате да получите, и той ще ви върне обект. Сега просто посочете имота, от който се нуждаете, и веднага ще получите неговата стойност.

Тази функция обаче не работи с по-стари браузъри (IE8-), така че ако искате кодът ви да е съвместим с различни браузъри, използвайте кода по-долу.

Функция getStyle(елемент) (
return window.getComputedStyle? getComputedStyle(element): element.currentStyle;
}

Използването е подобно

Var styles = getStyle(div1); предупреждение (styles.background);

Така че днес научихме как да работим със стилове в javascript и как да получаваме стилове в различни браузъри.

здравей В този урок бих искал да говоря за това как можете да промените стила на елемент на уеб страница с помощта на JavaScript. Трябва да се каже, че в JavaScript обикновено се използват 2 подхода за работа със стилове:

  • Промяна на свойството стил
  • Промяна на стойността на класа на елемент

стил собственост

Свойството style представлява така наречените вградени стилове, които ще бъдат показани на елемента чрез атрибута style. Например, нека зададем цвета на шрифта:

Var root1 = document.documentElement; // задаваме стила root1.style.color = "red"; // получаваме стойността на стила document.write(root1.style.color); // червено

IN в този примерИмето на свойството цвят е същото като същото css свойство. По аналогия можете да зададете цвета с помощта на css:

Html (цвят: червен; )

Въпреки това, за тези css свойства, които имат тире в името, например, font-size. В JavaScript за тези свойства тирето се премахва и първата буква след тирето се изписва като главна буква, тоест с главни букви

Var root1 = document.documentElement; root1.style.fontFamily = "Arial";

свойството className. Работа с класове в JavaScript.

С помощта на свойство като className можете да зададете атрибута class на any html елемент. Ето един пример:

.redStyle(цвят:червен; семейство шрифтове:Arial;) .article(размер на шрифта:22px;) Заглавие на статията

Първи параграф

Друг параграф

var article = document.querySelector("div.art"); // настройка на нов клас article.className = "redStyle"; // получаваме името на класа document.write(article.className);

Това елиминира необходимостта от конфигуриране на всяко отделно свойство чрез свойството style.
Трябва обаче да се има предвид, че предишната стойност на атрибута клас ще бъде изтрита. Следователно, ако трябва да добавите клас, той трябва да се комбинира със стария клас:

Article.className = article.className + "blueStyle";

Но ако трябва да премахнете напълно всички класове, можете да присвоите свойството className на празен низ:

ArticleDiv.className = "";

Свойството classList. Добавяне на нов клас към елемент.

По-горе разгледахме как да добавяме класове към елемент на уеб страница, но за управление на голям брой класове е по-удобно да използвате друго свойство, classList. Това свойство е обект, който прилага следните методи:

  • add(className): ще добави клас className
  • remove(className): ще премахне клас className
  • toggle(className): ще превключи класа на елемента на className. Тоест, ако няма клас, ще бъде добавен, а ако има, ще бъде премахнат.

Var article = document.querySelector("div.art"); // премахване на класа article.classList.remove("art"); // добавяне на клас

article.classList.add("redStyle"); // превключване на клас
article.classList.toggle("изкуство");

Резултати.

За да зададете клас, използвайте метода className.

За да зададете стила на елемент чрез атрибута style, се използва методът style.

За да добавите и премахнете клас към елемент, използвайте методите classList.add(className) и classList.remove(className).

Последна актуализация: 01.11.2015 г

Има основно два подхода за работа със свойствата на стила на елемента в JavaScript:

    Промяна на свойството стил

    Промяна на стойността на атрибута клас

стил собственост

Свойството style представлява комплексен контролен обект за стил и се преобразува директно към атрибута style на html елемент. Този обект съдържа набор от CSS свойства: element.style.CSS свойство. Например, нека зададем цвета на шрифта:

Var root = document.documentElement; // задаваме стила root.style.color = "синьо"; // получаваме стойността на стила document.write(root.style.color); //синьо

В този случай името на свойството цвят е същото като свойството css. По същия начин можем да зададем цвета с помощта на css:

Html (цвят: син; )

Въпреки това редица свойства на css имат тире в имената си, например font-family. JavaScript не използва тире за тези свойства. Само първата буква, която идва след тирето, се преобразува в главна:

Var root = document.documentElement; root.style.fontFamily = "Verdana";

свойството className

С помощта на свойството className можете да зададете атрибута class на html елемент. Например:

.blueStyle(цвят:син; семейство шрифтове:Verdana;) .article(размер на шрифта:20px;) Заглавие на статията

Първи параграф

Втори параграф

var articleDiv = document.querySelector("div.article"); // настройка на нов клас articleDiv.className = "blueStyle"; // получаваме името на класа document.write(articleDiv.className);

Като използвате класове, не е нужно да конфигурирате всяко отделно свойство на css с помощта на свойството style.

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

ArticleDiv.className = articleDiv.className + "blueStyle";

И ако трябва да премахнете напълно всички класове, можете да присвоите празен низ към свойството:

ArticleDiv.className = "";

свойство classList

Обсъдихме по-горе как да добавяме класове към елемент, но за управление на множество класове е много по-удобно да използвате свойството classList. Това свойство представлява обект, който прилага следните методи:

    add(className) : добавя клас className

    remove(className) : премахва класа className

    toggle(className) : Превключва класа на елемента към className. Ако няма клас, тогава се добавя, ако има, тогава се премахва

Например:

Var articleDiv = document.querySelector("div.article"); // премахване на класа articleDiv.classList.remove("article"); // добавяне на клас articleDiv.classList.add("blueStyle"); // превключване на класа articleDiv.classList.toggle("article");

И какво казват, тези гласове.

Един и. Същото: Аз съм продавачът, аз съм продавачът. Какво ще правиш. Какво можете да направите. Да, Хидра лук в Русия 2016 г. А това означава, че Бул Гейтс не осъществява контакт.не работи

Или може би той идва. Но ти не разбираш. Може би Минотавърът е онзи мъртъв плъх на тавана. . Може би така.

пожелание. Тогава давай, . — каза Чапаев, надигайки се иззад хотела на екстаза.

Като напуснахме щабния вагон, отидохме в задната част на влака. Случващото се ми изглеждаше все по-странно. Няколко от вагоните, покрай които минахме, бяха тъмни и сякаш бяха. празна. Никъде нямаше светлина; Иззад вратите не се чу нито един звук. Трудно можех да повярвам, че зад ореховите панели, в чиято полирана повърхност се отразяваше светлината на пурата на Чапаев. Червеният войник спи, но се опитах да не го отразявам. До 2003 г. японски специалисти. Беше възможно да се разработи набор от няколко микросонди, които директно свързваха мозъка и направиха възможно до известна степен да се обективизира картината на човешкото възприятие. Японската апаратура не можела да определи какво точно чувства и мисли наблюдаваният. Но това направи възможно да се получи цветен (макар и размазан) образ на това, което тойвейп хидра.

И не само в реалността, но и в бързата фаза на съня. Това стана възможно, защото сигналът беше взет не от зрителния нерв, а от тези зони. Мозъци, които отговарят за прякото представяне. Оборудването веднага е закупено от екипа на Поташински. Сигналът от набор от сонди, имплантирани в мозъка, може да се предава безжично. Връзки, които позволиха на баблонавта да води нормален живот, който по никакъв начин не беше ограничен от участие в експеримента. Необходимо беше само някъде наблизо да има приемник на сигнала. Което след това предава информация на компютъра в реално време. Накратко схемата на експериментите на Поташински изглеждаше така: Първо, набор от контролни електроди беше имплантиран в мозъка на баблонавта-експериментатор (доброволците, както обикновено, бяха избрани измежду младите служители на ФСБ за тази роля).

Скоро. попита. Купете хашиш във Владивосток сега, казах, тук... Някой е придирчив. Любовникът може да се обиди, че не му е позволено по-далеч от коридора на мрежата. Но Порфирий не е такъв. Първото нещо, което направих, беше да се свържа с нейните очила. Добре, каза тя. Какви бакенбарди... Междувременно слагам снимка на очилата на панела. Преобразявайки го с изглед от камерата на тавана. Ifak ​​​​отгледа всякакви морфи, без да напряга силата си. Беше чудовищно. Сега Мара ме виждаше в нейните очила с очила на мястото на айфака и в същото време можеше да наблюдава.

Разработен шифър. Понякога отбелязваше, че отново е измъчван от повтарящи се сънища по схема 1. Или по схема 2. И изведнъж, в отворен текст, като избягащ вик: Сънувах миксове за пушене денонощно,убит от мен в детството... Глас зад паравана. Той млъкна. какво прави тя - попита Сам. - Заспах - отговори Наташа. Сам нежно погали бодливия връх на корема й и се облегна на дивана. Наташа преглътна тихо. Сам дръпна кутията на пода към себе си, отвори я и извади малка стъклена кутия. Бурканът, той изплю червено в него, завинти го и го хвърли обратно - цялата тази операция му отне секунди за пушене на смеси. — Знаеш ли, Наташа — каза той.

След това той хъшове светецХей, Татарски. Без отговор. Татарски изчака още минута и осъзна, че е останал сам. Сам с ума си, готов да се развихри. Имах спешна нужда да се занимавам с нещо. Обади се, прошепна той. - На кого. Гиреев. Той знае какво да прави. За дълго време. Никой не отговаряше на телефона. Накрая, на петнадесетото или двадесетото позвъняване, Гиреев отговори мрачно: Здравейте. Андрюша.

Не, каза той. В заключена стая седи човек, който не знае китайски. През прозореца му дават бележки с въпроси на китайски. За него това са просто хартийки с нарисувани по тях завъртулки, чийто смисъл той не разбира. Но стаята му е пълна с различни книги. Правила, които описват подробно как и в каква последователност да се отговаря само с кривички. И той, действайки според тези правила, дава отговори на китайски в друг прозорец. Създават пълно доверие на всеки застанал отвън, че знае китайски. Въпреки че самият той изобщо не разбира за какво го питат. Address hydra onion browser какъв е смисълът на неговите отговори. Въведено. Е, представих го. Сура е същата китайска стая, само автоматизирана. Вместо човек със справочници има скенер, който чете йероглифи. Огромна база данни с препратки и правила, които ви позволяват да изберете йероглифи за отговора.

По ирония на съдбата това ми донесе яснота. Поне на практика. Осъзнах проблема, пред който съм изправен. Това не е просто сложно, то е неуловимо. Беше трудно дори да формулирам правилно въпросите, свързани с него. Единствената утеха изглеждаше Как да намеря сайта Hydra на езика Torus, ситуацията беше също толкова хлъзгава. С човешкото съзнание. Не можах да се справя с това. И реших, че най-добрият изход от ситуацията ще бъде да се върна. Да работим както обикновено, оставяйки екзистенциалните упражнения за по-късно или забравяйки за тях.

Скоро пътят отведе до богато село с прясно боядисана бяла църква. До оградата на църквата седеше тъжен еднокрак войник в избеляла сива униформа. Не знаете къде е Оптина Пустин. попита Т., навеждайки се към него от коня си. Това е, за което говорят момчетата. – попита войникът. Който наскоро беше създаден като заведение. Реших, че военнослужещият не е на себе си. Как наскоро беше създадено това място. Което означава, че във всеки случай всичко е наред, ваша чест, каза войникът и Хидра рулеткаръка, пак ще си далеч. Тук има само два пътя и двата вървят в една посока. Вземете първия път или втория. Ако искате по-кратък път, тогава през гората. Там има разклонение, така че можете да вземете от двете страни.

И други гримаси, за които мисля, че сте чували много... Лена не разбра що за баща-мама е глупак на осемнадесет (младият мъж измърмори тези думи бързо и тихо), но веднага забрави за това - тя внезапно искаше да отпие до такава степен вино на стойност двадесет хиляди евро, че устата й се сълзи. Тиха въздишка премина през залата, потвърждавайки, че събралите се не са чували само за гримаси. И успяхме да проучим много подробно цялата налична информация за тях. IN напоследъкЗападните разузнавателни служби започнаха истински лов за нашите богаташи”, продължи младежът. - Чували сте, разбира се, за големите скандали адрес на хидра лук tk okey сайт хидра в торусарести: първо Куршевел, после Фиджи, след това бутик Хермес, а сега Сен Мориц, Малдивите и Антарктида. Кампанията е внимателно планирана и има две основни цели – първо, дискредитиране. Руската цивилизация - да установи контрол над своите ресурси чрез събиране на компрометиращи доказателства за собствениците на основните й активи. Нашият елит се е превърнал в мишена и обективната реалност на настоящата точка в пространство-времето е такава. Станахме мишени с нея. Намръщен, той млъкна, сякаш давайки възможност на слушателите си да осъзнаят сериозността на положението. Тогава тъжната усмивка се върна на лицето му и той продължи: Трябва да държим ситуацията под контрол.

Тя се ухили. Поне не е нужно да се преструвате на обидена невинност пред собствените си хора. За какво. Когато го провокирах. Когато изскочи гола от Хидра лук входи застана пред него кучешки стил. Вие смятате това за провокация. Със сигурност. Защо, чудя се, му обърнахте гръб? Аз повдигнах рамене. За надеждност. Какво е особено надеждно в това? Опашката е по-близо до целта — казах не съвсем уверено. добре. И трябва да погледнете през рамо.

трето монтален ванилов екстазикакто следва: До Негово Превъзходителство О. Константин Петрович Победоносцев, офици. С настоящото предавам на Ваше Превъзходителство превод на древен египетски надпис. Лист злато, открит в медальон монтален ванилов екстазитрупа на отец Варсонофий Нетребко като част от разследването на случая с граф Т. Според специалисти от Египетския музей очертанията на йероглифите ни позволяват да датираме текста от епохата на 18-та династия или малко по-късно време. Надписът гласи: Тайното име на хермафродита с котешка глава, което дава власт над него, е същността. ANGC. Ако можете да контролирате хермафродит с това име. Добре. Преводачи, които ANGC могат да бъдат преведени и като традиционния BHGV (или по друг начин, в зависимост от избора на таблици за съответствие при използване на йероглифни регистри). Самият медальон обаче не може да бъде прехвърлен на Ваше превъзходителство въпреки молбата ви.

Навигация на публикации

В тази статия ще разгледаме различни методи за работа с класове и стилове на елементи. Нека се запознаем със свойствата classList и style и примери за използването им за управление на класовете и стиловете на елементите на страницата, съответно.

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

Първият начин за взаимодействие с класовете на елементи е да използвате DOM свойството className.

Това свойство е отражение на атрибута клас в DOM. DOM свойството className не беше наречено клас поради факта, че по-рано в JavaScript запазените думи не можеха да се използват за наименуване на свойства на обекти. Ако не знаете какво представляват свойствата на DOM и как се различават от атрибутите, тогава можете да прочетете за това в тази статия.

Пример, в който ще извършим различни операции върху клас елемент, използвайки DOM свойството className:

var elem = document.querySelector("#alert"); // добавяне на клас към елемента elem.className = "alert"; // "alert" // промяна на класа на елемента elem.className = "alert-warning"; // "alert-warning" // получава стойността на класа и я съхранява в className var classElem = elem.className; // "alert-warning" // премахване на класа от елемента elem.className = ""; // ""

Вторият начин за извършване на операции, свързани с класа на елемент, е използването на методи за манипулиране на атрибути.

Пример, в който ще извършим същите действия като горния код, но използвайки методи за управление на атрибути:

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");

Свойството на DOM className и атрибутът на класа винаги се синхронизират един с друг, което означава, че когато едното се промени, другото също се променя.

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

Например, определянето на присъствието на който и да е конкретен клас в елемент с помощта на горните методи вече не може да се направи толкова просто. Това ще изисква написването на някакъв код.

Пример, в който проверяваме дали даден елемент има клас content__show:

... var elem = document.querySelector("#content");

if ((" " + elem.className + " ").indexOf(" content__show ") > -1) ( // елементът има клас content__show) else ( // елементът няма клас content__show)

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

класови методи:

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

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

// вземете елемента с id = "sidebar" var sideBar = document.querySelector("#sidebar"); // превключете скрития xs клас на елемента, т.е. ако елементът го има, тогава го премахнете; и ако този клас не съществува, тогава го добавете към него sideBar.classList.toogle("hidden-xs"); // добавяне на три допълнителни класа към sideBar element.classList.add("col-xs-6","col-sm-4","col-md-3"); // премахване на скрития-xs клас от sideBar element.classList.remove("hidden-xs"); // проверете дали елементът има скрит-lg клас и ако е така, добавете друг скрит-md към него if (sideBar.classList.contains("hidden-lg") ( myID.classList.add("hidden-md" ; )

Обектът classList е псевдомасив, т.е. може да се повтори като масив.

Пример, в който ще преминем през всички класове на classList:

... var content = document.querySelector(".content"); // Вариант №1. С помощта на за цикъл// classList.length - брой класове за елемент // класовете в classList се броят от 0 за (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); // undefined // Вариант №2. С помощью цикла for..of for (let className of content.classList) { // выведем класс в консоль console.log(className); }

Свойството classList се поддържа от всички съвременни браузъри. Ако имате нужда от поддръжка за много стари браузъри (напр. Internet Explorer 8, 9), тогава в този случай можете да използвате някакъв вид полифил.

Стилове на елементи

В DOM всеки елемент има свойство стил, с което можем да контролираме неговите стилове. Значение от този имоте обект, който е само за четене. Задаването на стилове за елемент в този случай става чрез добавяне на подходящи свойства към него.

Пример за това как можете да добавите стилове към елемент чрез свойството DOM style:

Square var square = document.querySelector(".square"); square.style.width = "170px"; square.style.height = "170px"; square.backgroundColor = "зелено";

Имената на свойствата на стиловия обект обикновено са същите като имената на CSS свойствата. Единствените изключения са тези CSS свойства, които използват тире. Например цвят на фона. В този случай тирето и буквата след него се заменят с главни. Например, CSS свойството цвят на фона за стилов обект ще бъде посочено като Цвят на фона. И, например, CSS свойство с префикс на браузъра -webkit-border-radius - като WebkitBorderRadius.

Премахване на стилове

Например, нека зададем някакъв фонов цвят на тялото:

Document.body.style.backgroundColor = "#eee";

Ако сега трябва да премахнем този стил, тогава за да направим това, трябва просто да му присвоим празен низ:

Document.body.style.backgroundColor = "";

Примери за използване на свойството DOM style за задаване на стилове за елементи.

// задайте цвета на текста на червен за елемента с id = "introtext" с помощта на стил document.querySelector("#introtext").style.color = "red"; // задаваме всички p елементи на страницата, като използваме стил, за да зададем цвета на текста на зелен var параграфи = document.querySelectorAll("p"); за (променлива i = 0, дължина = параграфи.дължина; i< length; i++) { paragraphs[i].style.backgroundColor = "green"; } // выведем в консоль все CSS свойстваелемент с идентификатор "introtext" var styleElem = document.querySelector("#introtext").style; за (вар. i = 0, дължина = styleElem.length; i< length; i++) { console.log(styleElem[i]); }

свойството cssText

В допълнение към индивидуалната настройка на стилове за елемент, ние можем да ги зададем незабавно с помощта на специалното свойство style.cssText. Това става чрез присвояване на това свойство на низ, състоящ се от набор от стилове, разделени с точка и запетая. Тези. Това се прави по начин, подобен на начина, по който задаваме стилове в атрибута HTML style.

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

//получаване на елементи с интро клас var intro = document.querySelectorAll("intro"); // задайте "font-size:40px; color:blue;" всички елементи в колекцията, съдържащи се във въведение за (var i = 0, length = intro.length; i< length; i++) { intro[i].style.cssText = "font-size:40px; color:blue;"; }

Трябва да внимавате, когато задавате стилове с помощта на свойството style.cssText. Това се дължи на факта, че когато е зададено, това свойство премахва всички стилове, които елементът има. Тези. тези, които задаваме за него с помощта на атрибута style и в съответното DOM свойство.

Можете да извършите операция, подобна на тази, изпълнявана от свойството style.cssText, като използвате метода setAttribute.

Например:

//вземете първия елемент с интро класа var info = document.querySelector("info"); //задайте го на стил "поле: 10px; подложка: 10px; рамка: 1px плътно зелено;" info.setAttribute("style", "margin: 10px; padding: 10px; border: 1px solid green;");

Мисии

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

.size-40 ( font-size: 40px; ) .color-red ( цвят: червен; ) .bg-yellow ( фон: жълт; )

малко текст...

2. Напишете код, за да зададете стила "ширина: 180px; височина: 180px;" всички елементи на страницата с клас, започващ с думите block- .