Heim > Web-Frontend > js-Tutorial > JS erhält Javascript-Kenntnisse im CSS-Stil (style/getComputedStyle/currentStyle).

JS erhält Javascript-Kenntnisse im CSS-Stil (style/getComputedStyle/currentStyle).

WBOY
Freigeben: 2016-05-16 15:19:19
Original
1272 Leute haben es durchsucht

CSS-Stile sind in drei Kategorien unterteilt:
Inline-Stil: wird in das Tag geschrieben und der Inline-Stil ist nur für alle Tags gültig.
Interner Stil: ist in HTML geschrieben und der interne Stil ist nur für die Webseite gültig, auf der er sich befindet.
Externes Stylesheet: Wenn viele Webseiten denselben Stil (Stile) verwenden müssen, schreiben Sie den Stil (Stile) in eine CSS-Datei mit dem Suffix .css und fügen Sie ihn dann hinzu Verweisen Sie auf diese CSS-Datei in einer Webseite, die diese Stile (Stile) verwenden muss.

getComputedStyle ist eine Methode, die alle endgültig verwendeten CSS-Eigenschaftswerte des aktuellen Elements abrufen kann. Zurückgegeben wird ein CSS-Stilobjekt ([object CSSStyleDeclaration])
currentStyle ist eine Eigenschaft des IE-Browsers und gibt ein CSS-Stilobjekt zurück

Element bezieht sich auf das von JS erhaltene DOM-Objekt
element.style //Kann nur eingebettete Stile erhalten
element.currentStyle //IE-Browser erhält nicht eingebettete Stile
window.getComputedStyle(element, pseudo-class) //Nicht-IE-Browser erhalten nicht eingebettete Stile
document.defaultView.getComputedStyle(element, pseudo-class)//Nicht-IE-Browser erhalten nicht eingebettete Stile
Hinweis: Vor Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1) war der zweite Parameter „Pseudo-Klasse“ erforderlich (wenn keine Pseudo-Klasse, auf Null gesetzt), kann dieser Parameter jetzt sein weggelassen.

Der folgende HTML-Code enthält zwei CSS-Stile. Das Div mit ID-Tag ist ein Inline-Stil und das Div mit ID-Test ist ein interner Stil.

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta name="Generator" content="EditPlus&reg;">
    <meta name="Author" content="Yvette Lau">
    <meta name="Keywords" content="关键字">
    <meta name="Description" content="描述">
    <title>Document</title>
    <style>
      #test{
        width:500px;
        height:300px;
        background-color:#CCC;
        float:left;
      }
    </style>
  </head>
  <body>
    <div id = "test"></div>
    <div id = "tag" style = "width:500px; height:300px;background-color:pink;"></div>
  </body>
</html>
Nach dem Login kopieren

JS-Teil

<script type = "text/javascript">
  window.onload = function(){
    var test = document.getElementById("test");
    var tag = document.getElementById("tag");

    //CSS样式对象:CSS2Properties{},CSSStyleDeclaration
    console.log(test.style); //火狐返回空对象CSS2Properties{},谷歌返回空对象CSSStyleDeclaration{} 
    console.log(tag.style); //返回CSS2Properties{width:"500px",height:"300px",background-color:"pink"}
    //element.style获取的是内嵌式的style,如果不是内嵌式,则是一个空对象

    console.log(tag.style.backgroundColor);//pink
    console.log(tag.style['background-color']);//pink
    //获取类似background-color,border-radius,padding-left类似样式的两种写法啊

    console.log(test.currentStyle) //火狐和谷歌为Undefined,IE返回CSS对象
    console.log(window.getComputedStyle(test,null))//谷歌返回CSSStyleDeclaration{……} ,火狐返回CSS2Properties{……}
    console.log(window.getComputedStyle(test))
    //效果同上,但是在Gecko 2.0 (Firefox 4/Thunderbird 3.3/SeaMonkey 2.1) 之前,第二个参数“伪类”是必需的(如果不是伪类,设置为null)

    console.log(test.currentStyle.width);//500px(IE)
    console.log(window.getComputedStyle(test).width); //500px;
    console.log(window.getComputedStyle(test)['width']);//500px;
    //document.defaultView.getComputedStyle(element,null)[attr]/window.getComputedStyle(element,null)[attr]   
  }
</script>

Nach dem Login kopieren

Die obigen Beispiele dienen nur zur Überprüfung, ob die vorherige Diskussion korrekt ist.

Der Einfachheit halber können wir auch eine einfache Kapselung des Erfassungsstils vornehmen.

function getStyle(element, attr){
      if(element.currentStyle){
        return element.currentStyle[attr];
      }else{
        return window.getComputedStyle(element,null)[attr];
      }
    }
    console.log(getStyle(test,"cssFloat"));//left
    console.log(getStyle(test,"float"));  //left,早前FF和chrome需要使用cssFloat,不过现在已经不必
    console.log(getStyle(test,"stylefloat"));//火狐和谷歌都是undefined
    console.log(getStyle(test,"styleFloat")); //IE9以下必须使用styleFloat,IE9及以上,支持styleFloat和cssFloat

    console.log(window.getComputedStyle(test).getPropertyValue("float"))

Nach dem Login kopieren

Entsprechend dem Float-Stil verwendet IE styleFloat, während FF und Chrome jetzt bereits Float unterstützen, und es gibt einige andere Attribute, die ich nicht einzeln auflisten werde Beachten Sie diese Unterschiede. Wir stellen zwei Methoden für den Zugriff auf CSS-Stilobjekte vor:
getPropertyValue-Methode und getAttribute-Methode

IE9 und andere Browser (getPropertyValue)
window.getComputedStyle(element, null).getPropertyValue(“float”); element.currentStyle.getPropertyValue(“float”);
getPropertyValue unterstützt keine Camel-Case-Notation. (Kompatibel mit IE9 und höher, FF, Chrom, Safari, Opera)
Zum Beispiel: window.getComputedStyle(element,null).getPropertyValue(“background-color”);

Für IE6~8 müssen Sie die getAttribute-Methode verwenden, um auf die Attribute des CSS-Stilobjekts zuzugreifen

element.currentStyle.getAttribute("float");//Muss nicht mehr als styleFloat

geschrieben werden element.currentStyle.getAttribute("backgroundColor");//Der Attributname muss in Camel-Case geschrieben werden, sonst wird er von IE6 nicht unterstützt. Wenn Sie IE6 ignorieren, können Sie ihn als „background-color“
schreiben

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er jedem beim Lernen und der einfachen Verwendung von JS zum Erhalten von CSS-Stilen hilft.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage