>  기사  >  웹 프론트엔드  >  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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.