자바 스크립트를 사용하여 CSS 속성을 제거하는 방법?


195

JavaScript를 사용하여 요소의 CSS 속성을 제거 할 수 있습니까? 예를 들어 div.style.zoom = 1.2JavaScript를 통해 확대 / 축소 속성을 제거하고 싶습니다.


3
명확히하십시오 : 일부 요소에서 클래스를 제거하려고합니까?
Jan Hančič

1
요소의 클래스가 아닌 속성에 대해 죄송합니다.
앉아

왜 downvote? 괜찮은 질문입니까?
Roland Bouman

2
안녕하세요, 이해가 안 돼요-왜 네이비 스트들의 답변을 "허용 된 답변"으로 표시 했습니까? 내 말은, 클래스 별로 요소를 찾으려면 그의 해결책이 좋지만 질문의 모든 것은 로컬 스타일의 속성을 설정하는 효과를 변경하는 방법을 찾고 있었음을 나타냅니다. 분명히, 내 대답이 문제에 더 잘 맞습니까? 아마도 당신의 질문을 오해했을까요?
Roland Bouman

1
@RolandBouman은 실제로 수락 된 답변은 기본값으로 변경하는 대신 제거에 대한 질문을 다루기 때문에 Edvinas Ilčenko의 답변으로 변경해야합니다. 귀하의 답변은 여전히 ​​가치가 있으므로 구별을 명확히하기 위해 편집했습니다.
whitneyland

답변:


187

두 가지 옵션이 있습니다.

옵션 1:

removeProperty 메소드 를 사용할 수 있습니다 . 요소에서 스타일을 제거합니다.

el.style.removeProperty('zoom');

옵션 2 :

기본값으로 설정할 수 있습니다.

el.style.zoom = "";

효과적인 확대 / 축소는 이제 스타일 시트에 설정된 정의 (링크 및 스타일 태그를 통해)에 따라 달라집니다. 따라서이 구문은이 요소의 로컬 스타일 만 수정합니다.


… 사용자 CSS 및 브라우저 기본 스타일과 함께.
Quentin

OP는 요소의 스타일 속성을 설정하지 않은 것처럼 만들고 싶음을 의미한다는 것을 이해했습니다. 나는 el.style.removeProperty ( 'zoom'); (또는 실제로 필자의 경우 '채우기') IE에서 동일한 작업을 수행하고 다른 브라우저에서 무시됩니다. 어떤 이유로 든 빈 문자열로 설정하면 동일한 효과가 있으며 모든 (최신 버전) 브라우저에서 작동하는 것으로 나타났습니다.
Shavais

이 동작이 표준의 어느 곳에 나 지정되어 있습니까? 찾을 수 없습니다 :-(
Oliver Joseph Ash

@OliverJosephAsh 예 문서화되어 있습니다. stackoverflow.com/a/7901886/700206
whitneyland



10

styleSheets 객체를 사용할 수 있습니다.

document.styleSheets[0].cssRules[0].style.removeProperty("zoom");

주의 사항 # 1 : 스타일 시트의 색인과 규칙의 색인을 알아야합니다.

주의 사항 # 2 :이 객체는 브라우저에 의해 일관되지 않게 구현됩니다. 하나에서 작동하는 것이 다른 것에서는 작동하지 않을 수 있습니다.


정말 부서지기 쉬운 것 같습니다. 지수가 바뀔 때마다 중단되지 않습니까?
Casey Rodarmor

네. 이것이 바로 경고 # 1의 내용입니다.
james.garriss

Chrome 26에는 CSSStyleRule.prototype.removeProperty= (실제로 CSSStyleRule메서드가 없습니다) = (
Rudie

CSSStyleSheet.prototype.removeRule구조에.
Rudie

@Rudie, 그렇지 CSSStyleSheet.prototype.deleteRule않습니까?
roka

7
element.style.height = null;

산출:

<div style="height:100px;"> 
// results: 
<div style="">

IE11에서는 스타일을 null로 설정하는 것이 작동하지 않는 것 같습니다.
MaximeW

1
누군가 IE브라우저를 관리해야하는 이유는 무엇 입니까? 나는 몇 년 동안 이미 그들을 무시하고 있습니다.
T.Todua

4

이 클래스가있는 모든 요소를 ​​찾고 "zoom"속성을 "nothing"으로 설정해보십시오.

jQuery 자바 스크립트 라이브러리를 사용하는 경우 $(".the_required_class").css("zoom","")

편집 : 의견과 다른 답변에서 지적 했듯이이 진술이 사실이 아닌 것으로 판명되어 2010 년부터 실제로 가능해졌습니다.

False : JavaScript에서 스타일 시트를 수정하는 일반적으로 알려진 방법은 없습니다.


5
그렇습니다. 자바 스크립트는 어렵지 않지만 프로그래밍 방식으로 스타일 시트를 수정하십시오. 뛰어난 성능으로 브라우저 간을 작동하며 여러 요소에서 동일 해야하는 하나의 속성을 변경할 때 실제로 의미가 있습니다. 2010 년 1 월의 경우도 마찬가지입니다. 다음은 간단한 예입니다 : stackoverflow.com/questions/14927706/…
Clox

Clox : 프로그래밍 방식으로 일부 속성을 재정의하는 스타일 시트 추가! 이미로드 된 항목 수정-들어 본 적이 없습니다.
naivists

attr ()이 아니라 css ()이어야합니다. 아니면 IE의 attr ()입니까?
Alex KeySmith

실제로 css는 아니 어야합니다 attr.
naivists

1

jQuery에서 다음을 수행 하여이 작업을 수행 할 수도 있습니다 $(selector).css("zoom", "")


0

이것은 트릭을 수행해야합니다-확대를 위해 인라인 스타일을 보통으로 설정하십시오.

$ ( 'div'). attr ( "style", "zoom : normal;");


1
문제는 스타일을 제거하는 방법이었습니다.이 답변은 존재하는 모든 스타일을 파괴하고 하나의 새로운 항목으로 대체합니다.
whitneyland

0

실제로, 당신이 이미 그 재산을 알고 있다면, 그렇게 할 것입니다 ...

예를 들면 다음과 같습니다.

<a href="test.html" style="color:white;zoom:1.2" id="MyLink"></a>

    var txt = "";
    txt = getStyle(InterTabLink);
    setStyle(InterTabLink, txt.replace("zoom\:1\.2\;","");

    function setStyle(element, styleText){
        if(element.style.setAttribute)
            element.style.setAttribute("cssText", styleText );
        else
            element.setAttribute("style", styleText );
    }

    /* getStyle function */
    function getStyle(element){
        var styleText = element.getAttribute('style');
        if(styleText == null)
            return "";
        if (typeof styleText == 'string') // !IE
            return styleText;
        else  // IE
            return styleText.cssText;
    } 

이것은 인라인 스타일에서만 작동하지만 클래스 또는 이와 유사한 스타일을 통해 지정한 스타일에서는 작동하지 않습니다.

다른 참고 사항 : 해당 replace 문에서 일부 문자를 이스케이프해야 할 수도 있지만 아이디어를 얻습니다.


-3

요소의 모든 클래스를 변경하려면

document.getElementById("ElementID").className = "CssClass";

요소에 클래스를 추가하려면

document.getElementById("ElementID").className += " CssClass";

클래스가 요소에 이미 적용되어 있는지 확인하려면

if ( document.getElementById("ElementID").className.match(/(?:^|\s)CssClass(?!\S)/) )

1
문제는 스타일을 제거하는 방법이었습니다.이 답변은 그와 관련이 없습니다.
whitneyland
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.