JavaScriptを使用してCSSプロパティを削除する方法?


195

JavaScriptを使用して要素のCSSプロパティを削除することは可能ですか?たとえばdiv.style.zoom = 1.2、JavaScriptを使用してズームプロパティを削除したいですか?


3
明確にしてください:ある要素からクラスを削除しようとしているか、ある要素から属性を削除しようとしているか?
JanHančičJan

1
申し訳ありませんが、要素のクラス、属性ではありません。
座って

なぜ反対票を投じるのですか?それはまともな質問です。
Roland Bouman

2
こんにちは土、私は理解しません-なぜあなたはナイービストの返信を「受け入れられた答え」としてマークしたのですか?つまり、クラスで要素を検索したい場合に彼の解決策は優れていますが、質問のすべてが、ローカルスタイルのプロパティを設定する効果を変更する方法を探していたことを示しています。確かに、私の答えは問題により適していますか?おそらく私はあなたの質問を誤解しましたか?
Roland Bouman、2010年

1
@RolandBoumanは実際に受け入れられた回答をEdvinas Il askedenkoの回答に変更する必要があります。デフォルトに変更するのではなく、削除についての質問に対処するためです。あなたの答えはまだ価値があるので、区別を明確にするために編集しました。
ホイットニーランド2017年

回答:


187

次の2つのオプションがあります。

オプション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:このオブジェクトは、ブラウザーによって一貫して実装されていません。1つで機能するものは、他では機能しない場合があります。


これは本当にもろいようです。インデックスが変わるたびに壊れませんか?
Casey Rodarmor

うん。これが、注意事項1のとおりです。
james.garriss

私のChrome 26にはCSSStyleRule.prototype.removeProperty=(実際にCSSStyleRuleはメソッドはありません。=(
Rudie

CSSStyleSheet.prototype.removeRule救助へ。
Rudie 2013

@ルディ、そうじゃないCSSStyleSheet.prototype.deleteRule
roka 2014年

7
element.style.height = null;

出力:

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

IE11ではスタイルをnullに設定しても機能しないようです。
MaximeW

1
なぜ誰かがIEブラウザを気にする必要があるのですか?私は数年前から意図的にそれらを無視しています。
T.Todua

4

このクラスを持つすべての要素を見つけて、「zoom」プロパティを「nothing」に設定してみてください。

jQuery JavaScriptライブラリを使用している場合は、 $(".the_required_class").css("zoom","")

編集:コメントや他の回答で指摘されているように、このステートメントは真実ではないことが判明したため、このステートメントを削除しました。2010年以来実際に可能でした。

False:JavaScriptからスタイルシートを変更する一般的に知られた方法はありません。


5
はいあります。JavaScriptは難しくありませんが、プログラムでスタイルシートを変更します。クロスブラウザで優れたパフォーマンスを発揮し、一連の要素で同じであるはずの1つのプロパティを変更するときに本当に意味があります。2010年1月も同様でした。ここでは簡単な例です:stackoverflow.com/questions/14927706/...
CLOX

Clox:プログラムによっていくつかのプロパティをオーバーライドするスタイルシートを追加します-もちろん!すでにロードされているものを変更する-聞いたことがない。
ナイビスト2013年

それはattr()ではなくcss()であることを意味していますか?それともIEのattr()ですか?
Alex KeySmith、2014

実際にはそうcssではなくattr、そうです。
ナイビスト2014


0

これでうまくいくはずです-ズームのインラインスタイルを通常に設定します。

$( 'div')。attr( "style"、 "zoom:normal;");


1
問題はスタイルを削除する方法でした。この回答は、存在するすべてのスタイルを破棄し、それらを1つの新しいエントリに置き換えます。
ホイットニーランド2017年

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
問題はスタイルを削除する方法でした。この回答はそれとは関係ありません。
ホイットニーランド2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.