>  기사  >  웹 프론트엔드  >  JS는 CSS 스타일(style/getCompulatedStyle/currentStyle)_javascript 기술을 얻습니다.

JS는 CSS 스타일(style/getCompulatedStyle/currentStyle)_javascript 기술을 얻습니다.

WBOY
WBOY원래의
2016-05-16 15:19:191251검색

CSS 스타일은 세 가지 범주로 나뉩니다.
인라인 스타일: 은 태그에 작성되며, 인라인 스타일은 모든 태그에만 유효합니다.
내부 스타일: 은 HTML로 작성되며, 내부 스타일은 해당 웹페이지에만 유효합니다.
외부 스타일 시트: 여러 웹페이지에서 동일한 스타일(스타일)을 사용해야 하는 경우 접미사가 .css인 CSS 파일에 스타일(스타일)을 작성한 후 추가하세요. 각 페이지에 이러한 스타일(스타일)을 사용해야 하는 웹페이지에서 이 CSS 파일을 참조하세요.

getCompulatedStyle은 현재 요소의 최종 사용된 CSS 속성값을 모두 가져올 수 있는 메소드입니다. 반환되는 것은 CSS 스타일 객체입니다([object CSSStyleDeclaration])
currentStyle은 IE 브라우저의 속성이며 CSS 스타일 객체를 반환합니다

요소는 JS
에서 얻은 DOM 개체를 나타냅니다. element.style //임베디드 스타일만 얻을 수 있습니다
element.currentStyle //IE 브라우저는 포함되지 않은 스타일을 얻습니다
window.getCompulatedStyle(element, pseudo-class) //IE가 아닌 브라우저는 포함되지 않은 스타일을 얻습니다.
document.defaultView.getCompulatedStyle(element, pseudo-class)//IE가 아닌 브라우저는 비포함 스타일을 얻습니다.
참고: Gecko 2.0(Firefox 4/Thunderbird 3.3/SeaMonkey 2.1) 이전에는 두 번째 매개변수 "의사 클래스"가 필요했습니다(의사 클래스가 아닌 경우 null로 설정). 이제 이 매개변수를 사용할 수 있습니다. 생략.

다음 HTML에는 두 개의 CSS 스타일이 포함되어 있습니다. id 태그가 있는 div는 인라인 스타일이고, id test가 있는 div는 내부 스타일입니다.

<!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>

JS 부분

<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>

위의 예는 이전 논의가 올바른지 확인하기 위한 것입니다.

단순화를 위해 획득 스타일을 간단하게 캡슐화할 수도 있습니다.

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"))

float 스타일에 대응하여 IE는 styleFloat를 사용했지만 이전 FF와 chrome은 cssFloat를 사용했습니다. 이제 FF와 Chrome은 이미 float를 지원하며 다른 속성을 하나씩 나열하지 않겠습니다. 이러한 차이점을 기억하고 CSS 스타일 객체에 액세스하는 두 가지 방법을 소개합니다.
getPropertyValue 메소드 및 getAttribute 메소드

IE9 및 기타 브라우저(getPropertyValue)
window.getCompulatedStyle(element, null).getPropertyValue(“float”)
element.currentStyle.getPropertyValue(“float”)
getPropertyValue는 카멜 표기법을 지원하지 않습니다. (IE9 이상, FF, Chrom, Safari, Opera와 호환)
예: window.getCompulatedStyle(element,null).getPropertyValue(“배경색”);

IE6~8의 경우 CSS 스타일 개체의 속성에 액세스하려면 getAttribute 메서드를 사용해야 합니다.

element.currentStyle.getAttribute("float");//더 이상 styleFloat로 작성할 필요가 없습니다.
element.currentStyle.getAttribute("BackgroundColor"); //속성 이름은 카멜 표기법으로 작성해야 합니다. 그렇지 않으면 IE6에서는 이를 지원하지 않습니다. IE6을 무시하면 "Background-color"로 작성할 수 있습니다.

위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되고 JS를 사용하여 CSS 스타일을 쉽게 얻을 수 있기를 바랍니다.

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