ホームページ  >  記事  >  ウェブフロントエンド  >  DOM を操作せずに jQuery を使用して CSS クラス ルールを動的に変更するにはどうすればよいですか?

DOM を操作せずに jQuery を使用して CSS クラス ルールを動的に変更するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-01 23:58:29635ブラウズ

How can I dynamically change CSS class rules using jQuery without touching the DOM?

jQuery を使用して CSS クラス ルールを動的に変更する

質問 1: クラス ルールをオンザフライで変更する

という名前の CSS クラスのフォント サイズを変更するにはインライン CSS を追加したり、DOM を直接操作したりせずに、jQuery を使用して ".classname" を実行するには、次の手順に従います:

<code class="javascript">// Get the CSS stylesheet
var styleSheet = document.styleSheets[0];

// Loop through the CSS rules within the stylesheet
for (var i = 0; i < styleSheet.cssRules.length; i++) {
    // Check if the current rule is for the ".classname" class
    if (styleSheet.cssRules[i].selectorText === ".classname") {
        // Set the new font size for the rule
        styleSheet.cssRules[i].style.fontSize = "16px";
    }
}</code>

質問 2: クラスの変更をファイルに保存する

変更した CSS を保存するにはクラスルールをファイルに追加するには、サーバーへの Ajax POST リクエストを作成する必要があります。

<code class="javascript">// Build a string containing the updated CSS declarations
var updatedCSS = "";
for (var i = 0; i < styleSheet.cssRules.length; i++) {
    updatedCSS += styleSheet.cssRules[i].selectorText + " {\n";
    for (var j = 0; j < styleSheet.cssRules[i].style.length; j++) {
        updatedCSS += "    " + styleSheet.cssRules[i].style[j] + ": " + styleSheet.cssRules[i].style.getPropertyValue(styleSheet.cssRules[i].style[j]) + ";\n";
    }
    updatedCSS += "}\n";
}

// Send the updated CSS to the server
$.ajax({
    type: "POST",
    url: "/save-css",
    data: { updatedCSS: updatedCSS }
});</code>

サーバー側で、受信した更新された CSS をファイルに保存するスクリプトを作成します。

追加メモ

  • 最初の方法は外部 CSS ファイルには影響しませんが、メモリ内の CSS ルールを変更するだけなので、ページの更新後は保持されません。
  • ブラウザ間の互換性を確保するには、CSS ルールの操作を簡素化する jQuery プラグインの使用を検討してください。

以上がDOM を操作せずに jQuery を使用して CSS クラス ルールを動的に変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。