Rumah > hujung hadapan web > tutorial css > Bagaimana Menghuraikan CSS dengan Cekap dalam JavaScript?

Bagaimana Menghuraikan CSS dengan Cekap dalam JavaScript?

Barbara Streisand
Lepaskan: 2024-12-28 02:14:11
asal
222 orang telah melayarinya

How to Efficiently Parse CSS in JavaScript?

Menghuraikan CSS dalam JavaScript: Panduan Terperinci

Menghuraikan CSS dalam JavaScript boleh menjadi teknik yang berguna untuk mengekstrak dan memanipulasi gaya daripada kod CSS. Walau bagaimanapun, ia boleh menjadi tugas yang rumit untuk dilaksanakan.

Menggunakan JavaScript dan Perpustakaan jQuery

Terdapat perpustakaan JavaScript dan jQuery khusus tersedia untuk menghuraikan CSS. Satu perpustakaan yang popular ialah [jQuery CSS](https://learn.jquery.com/using-jquery-core/other-topics/advanced-selectors/#css-manipulation), yang menyediakan kaedah untuk mengekstrak dan mengubah suai gaya CSS.

Pendekatan Ganti

Jika anda ingin melaksanakan penghuraian CSS anda sendiri kefungsian, anda boleh menggunakan kaedah alternatif untuk memisahkan pasangan nilai harta. Sebagai contoh, anda boleh menggunakan ungkapan biasa untuk menangkap padanan berdasarkan corak tertentu. Selain itu, anda boleh mempertimbangkan untuk menggunakan penjana parser seperti [PEG.js](https://pegjs.org/) atau [JISON](https://zaach.github.io/jison/) untuk menjana secara automatik berdasarkan parser pada definisi tatabahasa.

Mengelakkan Pemisahan pada Titik Bertitik

Untuk mengelakkan perpecahan nilai harta berpasangan pada koma bertitik dalam nilai, anda boleh menggunakan ungkapan biasa yang melangkau padanan yang menyertakan koma bertitik selepas bertindih. Contohnya:

/(?:[^;|)]*:.*?;)|(?:[^;|)]*?;)|(?:[;|]{1})/g
Salin selepas log masuk

Ungkapan biasa ini memadankan pasangan nilai sifat dengan menangkap aksara bukan koma bertitik diikuti dengan titik bertindih, atau koma bertitik solo atau koma bertindih individu.

Contoh Pelaksanaan

Berikut ialah pelaksanaan yang lebih baik bagi kod penghuraian CSS anda menggunakan pendekatan alternatif yang dinyatakan di atas:

parseCSS: function(css) {
    var rules = {};
    css = this.removeComments(css);
    var blocks = css.split('}');
    blocks.pop();
    var len = blocks.length;
    for (var i = 0; i < len; i++) {
        var pair = blocks[i].split('{');
        rules[$.trim(pair[0])] = this.parseCSSBlock(pair[1]);
    }
    return rules;
},

parseCSSBlock: function(css) {
    var rule = {};
    var declarations = css.match(/(?:[^;|)]*:.*?;)|(?:[^;|)]*?;)|(?:[;|]{1})/g);
    declarations.pop();
    var len = declarations.length;
    for (var i = 0; i < len; i++) {
        var loc = declarations[i].indexOf(':');
        var property = $.trim(declarations[i].substring(0, loc));
        var value = $.trim(declarations[i].substring(loc + 1));

        if (property != "" &amp;&amp; value != "")
            rule[property] = value;
    }
    return rule;
},

removeComments: function(css) {
    return css.replace(/\/\*(\r|\n|.)*\*\//g,"");
}
Salin selepas log masuk

Menggunakan CSSOM Penyemak Imbas

Anda juga boleh memanfaatkan Model Objek CSS (CSSOM) terbina dalam penyemak imbas untuk menghuraikan CSS. Berikut ialah contoh:

var rulesForCssText = function (styleContent) {
    var doc = document.implementation.createHTMLDocument(""),
        styleElement = document.createElement("style");

   styleElement.textContent = styleContent;
    doc.body.appendChild(styleElement);

    return styleElement.sheet.cssRules;
};
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana Menghuraikan CSS dengan Cekap dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan