JavaScript-də element sinifləri və üslubları üzərində əməliyyatlar. JavaScript və CSS-in qarşılıqlı əlaqəsi CSS-dən istifadə edərək animasiya effektlərinin yaradılması

24.08.2023

Hamıya salam! Bu yazıda javascript-də üslubları necə düzgün və cross-brauzer qurmağı nəzərdən keçirəcəyik.

Beləliklə, JavaScript ilə heç olmasa bir az tanış olanlarınız bilirlər ki, elementlər obyekti saxlayan stil xassəsinə malikdir və ondan istifadə edərək müəyyən CSS üslublarını təyin edə bilərsiniz. Ancaq hər şey ilk baxışdan göründüyü qədər sadə deyil. Və burada niyə. Gəlin iki çox adi div bloku yaradaq, lakin biri üçün stil atributu, digəri üçün isə stil etiketi vasitəsilə üslub təyin edəcəyik.


div(
eni: 150px;
hündürlük: 150px;
}

#div1 (
fon: #f00;
}


İndi bu bloklar üçün fon xüsusiyyətinin dəyərini göstərməyə çalışaq.

Var div1 = document.getElementById("div1");
var div2 = document.getElementById("div2");
xəbərdarlıq (div1.style.background);
xəbərdarlıq (div2.style.background);

Birinci halda, biz heç nə almayacağıq, lakin div2 bloku üçün üslublar göstəriləcək. Niyə? Məsələ burasındadır ki, javascript yalnız stil atributundan istifadə edərək html işarələməsində birbaşa təyin edilmiş xassələrin və javascript vasitəsilə təyin olunanların dəyərlərini göstərə bilər. İndi fon xassəsini belə təyin etsək

Div1.style.background = "#f00";

İndi dəyər xəbərdarlıq vasitəsilə göstəriləcək.

Xəbərdarlıq(div1.style.fon);

Stil etiketində və ya xarici üslub cədvəlində təyin etdiyimiz eyni üslublar "hesablanmış üslublar" və ya "hesablanmış üslublar" adlanır. Bu adı bir səbəbə görə aldılar. İş ondadır ki, brauzer əvvəlcə html işarələməsini oxuyur, sonra xarici stil cədvəlində təyin etdiyimiz üslubları hesablayır və onları bu işarələmə üçün tətbiq edir.

Bununla belə, biz hələ də onlara daxil ola bilərik. DOM Level2 spesifikasiyasında bunun üçün bir şey var: xüsusi funksiya getComputedStyle() . Gəlin görək necə işləyir.

Var üslubları = getComputedStyle(div1);
xəbərdarlıq (üslublar.fon);

Siz ona üslublarını almaq istədiyiniz elementi ötürməlisiniz və o, sizə obyekti qaytaracaq. İndi sadəcə sizə lazım olan əmlakı göstərin və siz dərhal onun dəyərini alacaqsınız.

Bununla belə, bu funksiya köhnə brauzerlərdə (IE8-) işləmir, buna görə də kodunuzun brauzerlər arası uyğun olmasını istəyirsinizsə, aşağıdakı kodu istifadə edin.

getStyle funksiyası (element) (
window.getComputedStyle qayıt? getComputedStyle(element) : element.currentStyle;
}

İstifadəsi oxşardır

Var üslubları = getStyle(div1); xəbərdarlıq (üslublar.fon);

Beləliklə, bu gün biz javascript-də üslublarla işləməyi və çarpaz brauzer üslubları əldə etməyi öyrəndik.

salam! Bu dərslikdə mən JavaScript istifadə edərək veb-səhifədəki elementin üslubunu necə dəyişə biləcəyiniz haqqında danışmaq istərdim. Qeyd etmək lazımdır ki, JavaScript-də üslublarla işləmək üçün adətən 2 yanaşma istifadə olunur:

  • Stil xassəsinin dəyişdirilməsi
  • Elementin sinif dəyərinin dəyişdirilməsi

stil mülkiyyəti

Stil xassəsi stil atributu vasitəsilə elementdə göstəriləcək sözdə daxili üslubları təmsil edir. Məsələn, şrift rəngini təyin edək:

Var root1 = document.documentElement; // stili təyin edin root1.style.color = "qırmızı"; // üslub dəyərini əldə edin document.write(root1.style.color); //qırmızı

IN bu misalda Rəng xassəsinin adı oxşar css xassəsi ilə eynidir. Analoji olaraq, css istifadə edərək rəngi təyin edə bilərsiniz:

Html (rəng: qırmızı; )

Bununla belə, adında tire olan css xassələri üçün, məsələn, şrift ölçüsü. JavaScript-də bu xüsusiyyətlər üçün tire silinir və tiredən sonrakı ilk hərf böyük hərf kimi, yəni böyük hərflə yazılır.

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

className xüsusiyyəti. JavaScript-də dərslərlə işləmək.

ClassName kimi xassədən istifadə edərək hər hansı birinin sinif atributunu təyin edə bilərsiniz html elementi. Budur bir nümunə:

.redStyle( color:qırmızı; font-family:Arial; ) .article( font-size:22px; ) Məqalənin başlığı

Birinci abzas

Başqa bir paraqraf

var article = document.querySelector("div.art"); // yeni sinif təyin etmək article.className = "redStyle"; // sinif adını əldə edin document.write(article.className);

Bu, stil xassəsindən istifadə edərək hər bir fərdi xüsusiyyəti konfiqurasiya etmək ehtiyacını aradan qaldırır.
Bununla belə, sinif atributunun əvvəlki dəyərinin silinəcəyini nəzərə almaq lazımdır. Buna görə də, bir sinif əlavə etmək lazımdırsa, o zaman köhnə siniflə birləşdirilməlidir:

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

Lakin bütün sinifləri tamamilə silmək lazımdırsa, siz className xassəsini boş sətirə təyin edə bilərsiniz:

ArticleDiv.className = "";

ClassList xüsusiyyəti. Elementə yeni sinif əlavə etmək.

Yuxarıda biz veb-səhifədəki elementə siniflərin necə əlavə olunacağına baxdıq, lakin çoxlu sayda sinifləri idarə etmək üçün başqa bir xassə olan classList-dən istifadə etmək daha rahatdır. Bu xüsusiyyət aşağıdakı üsulları həyata keçirən bir obyektdir:

  • əlavə et(className): bir sinif className əlavə edəcək
  • sil(className): sinif sinifini silir
  • toggle(className): elementin sinfini className-ə keçirəcək. Yəni sinif yoxdursa əlavə olunacaq, varsa çıxarılacaq.

Var article = document.querySelector("div.art"); // sinif məqaləsini silin.classList.remove("art"); // sinif əlavə edin

article.classList.add("redStyle"); // sinfi dəyişdirin
article.classList.toggle("art");

Nəticələr.

Sinif təyin etmək üçün className metodundan istifadə edin.

Stil atributu vasitəsilə elementin üslubunu təyin etmək üçün üslub metodundan istifadə olunur.

Elementə sinif əlavə etmək və silmək üçün classList.add(className) və classList.remove(className) metodlarından istifadə edin.

Son yeniləmə: 11/1/2015

JavaScript-də element stili xassələri ilə işləmək üçün əsasən iki yanaşma var:

    Stil xassəsinin dəyişdirilməsi

    Sinif atributunun dəyərinin dəyişdirilməsi

stil mülkiyyəti

Stil xassəsi mürəkkəb üsluba nəzarət obyektini təmsil edir və birbaşa html elementinin stil atributuna uyğunlaşır. Bu obyekt CSS xassələri toplusunu ehtiva edir: element.style.CSS xassəsi. Məsələn, şrift rəngini təyin edək:

Var root = document.documentElement; // üslubu təyin edin root.style.color = "mavi"; // üslub dəyərini əldə edin document.write(root.style.color); //mavi

Bu halda rəng xassəsinin adı css xassəsi ilə eynidir. Eynilə, css istifadə edərək rəngi təyin edə bilərik:

Html(rəng:mavi; )

Bununla belə, bir sıra css xüsusiyyətlərinin adlarında tire var, məsələn, font-family . JavaScript bu xüsusiyyətlər üçün tire istifadə etmir. Yalnız defisdən sonrakı ilk hərf böyük hərfə çevrilir:

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

className xüsusiyyəti

ClassName xassəsindən istifadə edərək, siz html elementinin sinif atributunu təyin edə bilərsiniz. Məsələn:

.blueStyle( rəng:mavi; şrift ailəsi:Verdana; ) .article( font-size:20px; ) Məqalənin başlığı

Birinci abzas

İkinci abzas

var articleDiv = document.querySelector("div.article"); // yeni sinif təyin etmək articleDiv.className = "blueStyle"; // sinif adını əldə edin document.write(articleDiv.className);

Siniflərdən istifadə etməklə, stil xassəsindən istifadə edərək hər bir css xassəsini konfiqurasiya etmək lazım deyil.

Amma nəzərə almaq lazımdır ki, sinif atributunun əvvəlki dəyəri silinir. Buna görə də, bir sinif əlavə etmək lazımdırsa, onun adını köhnə siniflə birləşdirməliyik:

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

Bütün sinifləri tamamilə silmək lazımdırsa, əmlaka boş bir sətir təyin edə bilərsiniz:

ArticleDiv.className = "";

classList əmlakı

Elementə siniflərin necə əlavə olunacağını yuxarıda müzakirə etdik, lakin birdən çox sinfi idarə etmək üçün classList xassəsindən istifadə etmək daha rahatdır. Bu xüsusiyyət aşağıdakı metodları həyata keçirən obyekti təmsil edir:

    add(className) : sinif className əlavə edir

    remove(className) : sinif sinifini silir

    toggle(className): Elementin sinfini className-ə dəyişir. Əgər sinif yoxdursa, əlavə olunur, varsa, çıxarılır

Məsələn:

Var articleDiv = document.querySelector("div.article"); // klassı silin articleDiv.classList.remove("məqalə"); // class articleDiv.classList.add əlavə edin("blueStyle"); // sinfi dəyişdirin articleDiv.classList.toggle("məqalə");

Nə deyirlər, bu səslər.

Bir və. Eyni: Mən satıcıyam, satıcıyam. Nə edəcəksən. Nə edə bilərsən. Bəli, Rusiyada Hydra soğanı 2016. Bu, Bull Gates-in əlaqə saxlamaması deməkdir. işləmir.

Ya da o, gələ bilər. Amma başa düşmürsən. Bəlkə də Minotavr tavandakı ölü siçovuldur. . Bəlkə də belə.

Arzu. Sonra davam edin, . Çapayev ekstazi mehmanxanasının arxasından qalxaraq dedi.

Qərargah vaqonundan çıxıb qatarın arxasına keçdik. Baş verənlər mənə getdikcə qəribə görünürdü. Keçdiyimiz vaqonların bir neçəsi qaranlıq idi və deyəsən, qara idi. Boş. Heç yerdə işıq yox idi; Qapıların arxasından bir səs də eşidilmirdi. Çapaevin siqarının işığının cilalanmış səthində əks olunan qoz panellərinin arxasında olduğuna inana bilmədim. Qırmızı əsgər yatır, amma mən bu barədə düşünməməyə çalışdım. 2003-cü ilə qədər yapon mütəxəssisləri. Beyni birbaşa birləşdirən və insan qavrayışının mənzərəsini müəyyən dərəcədə obyektivləşdirməyə imkan verən bir neçə mikroprob dəstini hazırlamaq mümkün oldu. Yapon avadanlığı müşahidə edilən şəxsin tam olaraq nə hiss etdiyini və nə düşündüyünü müəyyən edə bilməyib. Amma o, nəyin rəngli (bulanıq da olsa) şəklini əldə etməyə imkan verdi vape hidra.

Və yalnız reallıqda deyil, həm də yuxunun sürətli mərhələsində. Bu, siqnalın optik sinirdən deyil, həmin zonalardan götürüldüyü üçün mümkün olub. Birbaşa təmsildən məsul olan beyinlər. Avadanlıq Potaşinskinin komandası tərəfindən dərhal alınıb. Beyinə implantasiya edilmiş zondlar dəstindən gələn siqnal simsiz şəkildə ötürülə bilərdi. Bablonavta normal bir həyat sürməyə imkan verən əlaqələr, təcrübədə iştirakla heç bir şəkildə məhdudlaşdırılmadı. Yalnız bir siqnal qəbuledicisinin yaxın bir yerdə olması lazım idi. Hansı ki, daha sonra məlumatları real vaxt rejimində kompüterə ötürdü. Qısaca, Potaşinskinin təcrübələrinin sxemi belə görünürdü: Əvvəlcə bablonavt-təcrübəçinin beyninə nəzarət elektrodları dəsti yeridildi (bu rol üçün həmişə olduğu kimi könüllülər FSB-nin gənc zabitləri arasından seçilirdi).

Tezliklə. soruşdu. İndi Vladivostokda həşiş al, dedim, bura... Biri seçicidir. Bir sevgilisi şəbəkə koridorundan daha çox icazə verilmədiyi üçün inciyə bilər. Amma Porfiri belə deyil. Etdiyim ilk şey onun eynəyinə qoşulmaq oldu. Yaxşı, dedi. Nə yanlar... Bu arada eynəyin şəklini panelə qoyuram. Tavan kamerasından görünüşlə onu dəyişdirin. Ifak ​​gücünü yormadan hər hansı bir morf qaldırdı. Bu dəhşətli idi. İndi Mara məni eynəyində aifak yerində gördü və eyni zamanda müşahidə edə bildi.

İnkişaf etmiş bir şifrə. Hərdən qeyd edirdi ki, 1-ci sxem üzrə təkrarlanan yuxular onu yenidən əzab çəkirdi. Yaxud 2-ci sxemə görə. Və birdən-birə açıq mətndə, qaçan fəryad kimi: Yuxu gördü. Siqaret gecə-gündüz qarışır, uşaqlıqda öldürdüm... Ekran arxasındakı səs. O susdu. O nə edir? – Sam soruşdu. "Mən yuxuya getdim" dedi Nataşa. Sem onun qarnının tikanlı ucunu yumşaq bir şəkildə sığalladı və arxasını divana söykədi. Nataşa sakitcə udqundu. Sem yerdəki işi özünə tərəf çəkdi, açdı və içindən kiçik bir şüşə qutu çıxardı. Kavanoz, qırmızıya tüpürdü, vidaladı və geri atdı - bütün bu əməliyyat onu saniyələr ərzində siqaret qarışıqlarını çəkdi. "Bilirsən, Nataşa" dedi.

Bundan sonra o həşiş müqəddəs Salam, Tatarski. Cavab yoxdur. Tatarski daha bir dəqiqə gözlədi və tək qaldığını başa düşdü. Yalnız ağlı vəhşiliyə hazırdır. Təcili özümü bir şeylə məşğul etməliyəm. Zəng et, pıçıldadı. - Kimə. Gireev. Nə edəcəyini bilir. Uzun müddətdir. Telefona heç kim cavab vermədi. Nəhayət, on beşinci və ya iyirminci zəngdə Gireev kədərli cavab verdi: Salam. Andryuşa.

Yox, dedi. Bağlı otaqda Çin dilini bilməyən bir kişi oturub. Pəncərədən ona Çin dilində suallar olan qeydlər verirlər. Onun üçün bunlar, sadəcə olaraq, mənasını anlamadığı, üzərində buruqlar çəkilmiş kağız parçalarıdır. Amma onun otağı müxtəlif kitablarla doludur. Sadəcə squiggles ilə necə və hansı ardıcıllıqla cavab ətraflı təsvir edən qaydalar. Və o, bu qaydalara uyğun hərəkət edərək, başqa bir pəncərədə Çin dilində cavablar verir. Onlar kənarda dayanan hər kəsdə Çin dilini bildiyinə tam əminlik yaradırlar. Baxmayaraq ki, özü də ondan nə soruşduqlarını heç anlamır. Hidra soğan brauzerinə müraciət edin, onun cavablarının mənası nədir. Təqdim edildi. Yaxşı, mən təqdim etdim. Sura eyni Çin otağıdır, yalnız avtomatlaşdırılmışdır. İstinad kitabları olan bir insanın əvəzinə, heroqlifləri oxuyan bir skaner var. Cavab üçün heroqlifləri seçməyə imkan verən böyük istinadlar və qaydalar bazası.

Qəribədir ki, bu mənə aydınlıq gətirdi. Ən azından praktiki baxımdan. Qarşılaşdığım problemi anladım. Bu, sadəcə mürəkkəb deyil, əlçatmazdır. Bununla bağlı sualları düzgün formalaşdırmaq belə çətin idi. Yeganə təsəlli, Torus dilində Hydra saytını necə tapmaq olar, vəziyyət bir o qədər sürüşkən idi. İnsan şüuru ilə. Mən bununla məşğul ola bilmədim. Və qərara gəldim ki, vəziyyətdən ən yaxşı çıxış yolu geri qayıtmaqdır. Həmişə olduğu kimi iş üçün, ekzistensial məşqləri sonraya buraxın və ya onları unutun.

Tezliklə yol təzə rənglənmiş ağ kilsəsi olan zəngin bir kəndə aparırdı. Kilsə hasarının yanında solğun boz formada kədərli, birayaqlı bir əsgər oturdu. Optina Pustynin harada olduğunu bilmirsiniz. atından ona tərəf əyilərək soruşdu T. Bu, oğlanların danışdıqlarıdır. - deyə əsgər soruşdu. Hansı ki, bu yaxınlarda müəssisə kimi yaradılmışdır. Qərara gəldim ki, hərbçi ağlını itirib. Bu yaxınlarda necə quruldu. Hansı ki, hər halda, hər şey düzdür, şərəfiniz, dedi əsgər və Hidra ruletiəl, hələ də uzaqlarda olacaqsan. Burada cəmi iki yol var və hər ikisi bir istiqamətə gedir. Birinci və ya ikinci marşrutu götürün. Daha qısa bir yol istəyirsinizsə, meşədən keçin. Orada bir çəngəl var, ona görə də hər iki tərəfi götürə bilərsiniz.

Və başqa üz-gözünü çox eşitdiyinizi zənn edirəm... Lena on səkkiz yaşlı ata-ana necə axmaq olduğunu başa düşmədi (gənc bu sözləri tez və sakitcə mırıldandı), amma dərhal unutdu - o birdən iyirmi min avro dəyərində şərabdan bir qurtum içmək istədi ki, ağzı sulandı. Sakit bir ah zaldan keçdi və bu, toplaşanların üz-gözünü sadəcə eşitmədiklərini təsdiqlədi. Və biz onlar haqqında mövcud olan bütün məlumatları çox ətraflı öyrənə bildik. IN son vaxtlar Qərbin kəşfiyyat xidmətləri bizim zəngin klutzelərimiz üçün əsl ova başlayıb”, - deyə gənc davam edib. - Təbii ki, böyük qalmaqallar haqqında eşitmisiniz hydra onion tk okey saytın ünvanı hydra in torus həbslər: əvvəlcə Courchevel, sonra Fici, sonra Hermes butiki və indi Saint Moritz, Maldiv adaları və Antarktida. Kampaniya diqqətlə planlaşdırılıb və iki əsas məqsədi var - birincisi, nüfuzdan salmaq. Rus sivilizasiyası - əsas sərvətlərinin sahibləri haqqında kompromatlar toplayaraq öz resursları üzərində nəzarəti qurmaq. Elitamız hədəfə çevrilib və məkan-zamanın indiki məqamının obyektiv reallığı belədir. Onunla hədəfə çevrildik. Qaşlarını çataraq susdu, sanki dinləyicilərinə vəziyyətin ciddiliyini dərk etmək imkanı verirdi. Sonra üzünə kədərli təbəssüm qayıtdı və davam etdi: Vəziyyəti nəzarətdə saxlamalıyıq.

O gülümsədi. Heç olmasa öz xalqınızın qarşısında günahsızlıqdan incimiş kimi davranmağa ehtiyac yoxdur. Nə haqqında. Mən onu təhrik edəndə. O, çılpaq vəziyyətdən tullananda Hydra soğan girişi və it tərzi onun qarşısında dayandı. Siz bunu təxribat hesab edirsiniz. Əlbəttə. Görəsən niyə ona arxa çevirmisən? Mən çiyinlərini çəkdim. Etibarlılıq üçün. Bunda xüsusilə etibarlı olan nədir? Quyruq hədəfə daha yaxındır” dedim, tam əminliklə. Yaxşı. Və çiyninin üstündən baxmaq lazımdır.

üçüncü montal vanil ekstazi aşağıdakı kimi: Zati-aliləri O. Konstantin Petroviç Pobedonostsevə, rəsmi. Mən bununla Zati-alinizə qədim Misir yazısının tərcüməsini təqdim edirəm. Bir medalyonda qızıl vərəq tapıldı montal vanil ekstazi ata Varsonofiy Netrebkonun cəsədi Qraf T-nin işi üzrə istintaqın tərkib hissəsi kimi. Misir Muzeyinin mütəxəssislərinin fikrincə, heroqliflərin konturları mətni 18-ci sülalə dövrünə və ya bir qədər sonrakı dövrə aid etməyə imkan verir. Yazıda deyilir: Üzərinə güc verən pişik başlı hermafroditanın gizli adı mahiyyətdir. ANGC. Bu adla hermafroditi idarə edə bilsəniz. Yaxşı. Tərcüməçilər ki, ANGC ənənəvi BHGV kimi də tərcümə edilə bilər (və ya heroqlif registrlərindən istifadə edərkən yazışma cədvəllərinin seçimindən asılı olaraq başqa cür). Medalyonun özü isə xahişinizə baxmayaraq, Zati-alilərinə verilə bilməz.

Post naviqasiyası

Bu yazıda biz element sinifləri və üslubları ilə işləmək üçün müxtəlif üsullara baxacağıq. ClassList və stil xassələri ilə, müvafiq olaraq səhifədəki elementlərin siniflərini və üslublarını idarə etmək üçün onlardan istifadə nümunələri ilə tanış olaq.

Element sinif(lərini) idarə etmək

Element sinifləri ilə qarşılıqlı əlaqə qurmağın ilk yolu className DOM xassəsindən istifadə etməkdir.

Bu xüsusiyyət DOM-da sinif atributunun əksidir. DOM xassəsinin className sinif adlandırılmadı, çünki əvvəllər JavaScript-də obyektlərin xassələrini adlandırmaq üçün qorunan sözlərdən istifadə edilə bilməzdi. DOM xassələrinin nə olduğunu və onların atributlardan necə fərqləndiyini bilmirsinizsə, bu barədə bu məqalədə oxuya bilərsiniz.

DOM xassəsinin className istifadə edərək element sinfi üzərində müxtəlif əməliyyatları yerinə yetirəcəyimiz nümunə:

var elem = document.querySelector("#alert"); // elementə sinif əlavə edin elem.className = "alert"; // "alert" // elementin sinfini dəyişdirin elem.className = "alert-warning"; // "alert-warning" // sinif dəyərini əldə edin və onu className-də saxlayın var classElem = elem.className; // "xəbərdarlıq xəbərdarlığı" // elementdən sinfi çıxarın elem.className = ""; // ""

Elementin sinfi ilə əlaqəli əməliyyatları yerinə yetirməyin ikinci yolu atributları manipulyasiya etmək üçün metodlardan istifadə etməkdir.

Yuxarıdakı kodla eyni hərəkətləri yerinə yetirəcəyimiz, lakin atributları idarə etmək üçün üsullardan istifadə edəcəyimiz bir nümunə:

var elem = document.querySelector("#alert"); // elementə sinif əlavə edin elem.setAttribute("class", "alert"); // elementin sinfini dəyişdirin elem.setAttribute("class", "alert-warning"); // sinif dəyərini əldə edin və onu className-də saxlayın var classElem = elem.getAttribute("class"); // "xəbərdarlıq" // elementdən sinfi sil elem.removeAttribute("class");

DOM xassəsinin className və sinif atributu həmişə bir-biri ilə sinxronlaşdırılır, yəni biri dəyişəndə ​​digəri də dəyişir.

Amma bir elementin birdən çox sinfi ola bilər, lakin bir neçə. Bu vəziyyətdə onlarla simli işləmək çox rahat deyil.

Məsələn, yuxarıda göstərilən üsullardan istifadə edərək elementdə hər hansı bir xüsusi sinfin mövcudluğunu müəyyən etmək artıq sadələşdirilə bilməz. Bunun üçün bəzi kodlar yazılmalıdır.

Elementin content__show sinfinə malik olub-olmadığını yoxladığımız nümunə:

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

if ((" " + elem.className + " ").indexOf(" content__show ") > -1) ( // elementin content__show sinfi var) else ( // elementin content__show sinfi yoxdur)

ClassList xassəsi elementin sinifləri üzərində müxtəlif əməliyyatları yerinə yetirmək üçün metodları ehtiva edən xüsusi obyektdir (DOMTokenList).

ClassList üsulları:

  • .add(className1[,className2,...]) - elementə bir və ya daha çox müəyyən edilmiş siniflər əlavə edir. Əgər elementdə artıq bu sinif varsa, o, ona əlavə edilməyəcək.
  • .remove(className1[,className2,... ]) - elementdən bir və ya daha çox müəyyən edilmiş sinfi silir. Əgər elementdə silmək istədiyiniz sinif yoxdursa, heç bir tədbir görülməyəcək.
  • .contains(className) – elementin sinfi olub-olmadığını yoxlayır; cavab olaraq doğru və ya yalanı qaytarır.
  • .toggle(className [,flag]) - elementin göstərilən sinif adını dəyişdirir, yəni. elementdə bu sinif varsa, onu silir; əks halda əlavə edir. İkinci parametr (bayraq) isteğe bağlıdır. Varsayılan olaraq, qeyri-müəyyəndir. Əgər onu doğru və ya yanlış olaraq təyin etsəniz, o, əlavə et və ya sil metodu kimi işləyəcək, yəni. ya elementə sinif əlavə edin, ya da ondan birini çıxarın.

ClassList metodlarından istifadə edərək element sinifləri ilə bağlı müxtəlif hərəkətləri necə yerinə yetirə biləcəyinizi göstərən bir nümunə:

// id ilə elementi əldə edin = "sidebar" var sideBar = document.querySelector("#sidebar"); // elementin gizli-xs sinfini dəyişdirin, yəni. elementdə varsa, onu çıxarın; və əgər bu sinif mövcud deyilsə, onu ona əlavə edin sideBar.classList.toogle("hidden-xs"); // sideBar elementinə üç əlavə sinif əlavə edin.classList.add("col-xs-6","col-sm-4","col-md-3"); // hidden-xs sinfini sideBar elementdən silin.classList.remove("hidden-xs"); // elementin hidden-lg sinfinin olub olmadığını yoxlayın və əgər varsa, ona başqa bir gizli-md əlavə edin, əgər (sideBar.classList.contains("hidden-lg") ( myID.classList.add("hidden-md" ; )

classList obyekti psevdomassivdir, yəni. massiv kimi təkrarlana bilər.

Bütün classList sinifləri üzərində təkrarlayacağımız bir nümunə:

... var content = document.querySelector(".content"); // Variant №1. İstifadə etməklə döngə üçün// classList.length - element üçün siniflərin sayı // classList-dəki siniflər (var i = 0, length = content.classList.length; i) üçün 0-dan hesablanır.< 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 xüsusiyyəti bütün müasir brauzerlər tərəfindən dəstəklənir. Çox köhnə brauzerlər üçün dəstəyə ehtiyacınız varsa (məsələn, Internet Explorer 8, 9), onda bu halda bir növ polifilldən istifadə edə bilərsiniz.

Element üslubları

DOM-da hər bir elementin üslublarını idarə edə biləcəyimiz bir üslub xüsusiyyəti var. Mənası bu əmlakın yalnız oxuna bilən obyektdir. Bu halda element üçün üslubların qurulması ona müvafiq xassələrin əlavə edilməsi ilə həyata keçirilir.

DOM stil xüsusiyyəti vasitəsilə elementə üslub əlavə edə biləcəyiniz nümunə:

Square var square = document.querySelector(".kvadrat"); square.style.width = "170px"; square.style.height = "170px"; square.backgroundColor = "yaşıl";

Stil obyektinin xassələrinin adları adətən CSS xassələrinin adları ilə eyni olur. İstisnalar yalnız defisdən istifadə edən CSS xassələridir. Məsələn, fon rəngi. Bu zaman defis və ondan sonrakı hərf böyük hərflərlə əvəz olunur. Məsələn, stil obyekti üçün CSS fon rəngi xassəsi backgroundColor kimi göstəriləcəkdir. Və, məsələn, WebkitBorderRadius kimi brauzer prefiksi -webkit-border-radius olan CSS xüsusiyyəti.

Üslubların çıxarılması

Məsələn, bədəni hansısa fon rənginə təyin edək:

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

İndi bu üslubu silmək lazımdırsa, bunu etmək üçün sadəcə ona boş bir sətir təyin etməliyik:

Document.body.style.backgroundColor = "";

Elementlər üçün üslub təyin etmək üçün DOM stil xüsusiyyətindən istifadə nümunələri.

// style document.querySelector("#introtext").style.color = "qırmızı" istifadə edərək id = "introtext" olan element üçün mətn rəngini qırmızıya təyin edin; // mətn rəngini yaşıl rəngə təyin etmək üçün üslubdan istifadə edərək səhifədəki bütün p elementləri təyin edin var paraqraflar = document.querySelectorAll("p"); üçün (var i = 0, uzunluq = paraqraflar.uzunluq; i< length; i++) { paragraphs[i].style.backgroundColor = "green"; } // выведем в консоль все CSS xüsusiyyətləri"introtext" identifikatorlu element var styleElem = document.querySelector("#introtext").style; üçün (var i = 0, uzunluq = styleElem.length; i< length; i++) { console.log(styleElem[i]); }

cssText xüsusiyyəti

Element üçün üslubları fərdi olaraq təyin etməklə yanaşı, biz onları dərhal style.cssText xüsusi xassəsindən istifadə edərək təyin edə bilərik. Bu, bu xassə nöqtəli vergüllə ayrılmış üslublar dəstindən ibarət sətir təyin etməklə həyata keçirilir. Bunlar. Bu, HTML stil atributunda üslubları necə təyin etdiyimizə bənzər şəkildə edilir.

"font-size:40px; color:blue;" üslublarını təyin etdiyimiz nümunə. giriş sinfi olan elementlər:

//intro sinfi ilə elementləri əldə edin var intro = document.querySelectorAll("intro"); //"font-size:40px; color:mavi;" təyin edin. üçün introda olan kolleksiyadakı bütün elementlər (var i = 0, uzunluq = intro.length; i< length; i++) { intro[i].style.cssText = "font-size:40px; color:blue;"; }

style.cssText xassəsindən istifadə edərək üslubları təyin edərkən diqqətli olmalısınız. Bu onunla bağlıdır ki, təyin edildikdə, bu xassə elementdə olan bütün üslubları silir. Bunlar. stil atributundan və ona uyğun DOM xassəsindən istifadə edərək onun üçün təyin etdiyimizlər.

Siz həmçinin setAttribute metodundan istifadə edərək style.cssText xassəsinin yerinə yetirdiyi əməliyyata oxşar əməliyyatı yerinə yetirə bilərsiniz.

Məsələn:

//intro sinfi ilə birinci elementi əldə edin var info = document.querySelector("info"); //onu "margin: 10px; padding: 10px; haşiyə: 1px bərk yaşıl;" üslubuna təyin edin. info.setAttribute("style", "margin: 10px; padding: 10px; haşiyə: 1px yaşıl;");

Tapşırıqlar

1. Mətn sinfi olan elementə üç sinif təyin etmək üçün classList istifadə edərək skript yazın: size-40 , color-red və bg-sarı:

.size-40 ( font ölçüsü: 40px; ) .rəng-qırmızı (rəng: qırmızı; ) .bg-sarı (fon: sarı; )

Bəzi mətn...

2. "en: 180px; hündürlük: 180px;" üslubunu təyin etmək üçün kodu yazın. blok- sözləri ilə başlayan siniflə səhifədəki bütün elementlər.