zoukankan      html  css  js  c++  java
  • window.getComputedStyle可获取 伪类元素 样式

    window.getComputedStyle详解

    window.getComputedStyle

    说明:
    getComputedStyle()返回元素的所有CSS属性的计算值

    语法:
    var style = window.getComputedStyle(element[, pseudoElt]);

    参数说明:
    element:目标元素的DOM对象
    pseudoElt:指明要匹配的伪元素,对于普通元素必须指定为null(或省略)(or not specified翻译成省略不知道有没有问题,不过测试结果表明对于普通元素确实可以省略该参数)

    返回值style为CSSStyleDeclaration对象.

    注意:Gecko2.0(Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)之前的版本中pseudoElt参数是必需的.对于其它主流的浏览器而言,若该参数指定为null,则可以省略.Gecko后来也改成和其它浏览器保持一致.

    测试:
    <a href="#" id="showAndHide">show and hide</a>
    <script type="text/javascript" src="./jquery-1.8b1.js"></script>
    <script>
    $('#showAndHide').click(function() {
        var dom = this;
        console.log(getComputedStyle( dom ));
    });
    </script>

    1:
    var elem1 = document.getElementById("elemId");
    var style = window.getComputedStyle(elem1, null);

    // this is equivalent:
    // var style = document.defaultView.getComputedStyle(elem1, null);

    2:
    <style>
     #elem-container{
       position: absolute;
       left:     100px;
       top:      200px;
       height:   100px;
     }
    </style>

    <div id="elem-container">dummy</div>
    <div id="output"></div>  

    <script>
      function getTheStyle(){
        var elem = document.getElementById("elem-container");
        var theCSSprop = window.getComputedStyle(elem,null).getPropertyValue("height");
        document.getElementById("output").innerHTML = theCSSprop;
       }
      getTheStyle();
    </script>

    官方文档里有一段关于getComputedStyle()与元素的style属性的区别


    Description

    The returned object is of the same type that the object returned from the element's style property, however the two objects have different purpose. The object returned from getComputedStyle is read-only and can be used to inspect the element's style (including those set by a <style> element or an external stylesheet). The elt.style object should be used to set styles on a specific element.

    这段话只是说明getComputedStyle获取的值是只读的并且可被用于检测元素的样式(包括style属性和外部样式).而elt.style可被用于设置指定元素的样式.

    chrome为例查看getComputedStyle()与元素的style属性的区别,请注意其中cssText属性的区别
    <a href="#" id="showAndHide">show and hide</a>
    <script type="text/javascript" src="./jquery-1.8b1.js"></script>
    <script>
    $('#showAndHide').click(function() {
        var dom = this;
        console.log(getComputedStyle( dom ));
        console.log( dom.style );
    });
    </script>

    defaultView

    在很多在线的domo中,getComputedStyle总是被当作document.defaultView的方法使用,其实这不是必需的. 因为getComputedStyle是存在于window对象. 使用Firefox 3.6访问框架样式是唯一一处必须使用defaultView的地方.

    获取伪元素(如:after, :before, :marker, :line-marker)的样式
    直接给出官方的Demo:
    <style>
     h3:after {
       content: ' rocks!';
     }
    </style>

    <h3>generated content</h3> 

    <script>
      var  h3  = document.querySelector('h3'), 
             result   = getComputedStyle(h3, ':after').content;

      console.log('the generated content is: ', result); // returns ' rocks!'
    </script>

  • 相关阅读:
    1104--DNA排序
    poj1050-To the Max
    编译:一个 C 程序的艺术之旅(转载)
    大话同步/异步、阻塞/非阻塞(转载)
    Windows 在 git bash下使用 conda 命令
    Python Multiprocessing 多进程,使用多核CPU计算 并使用tqdm显示进度条
    Python 写入训练日志文件并控制台输出
    nn.Conv2d 参数及输入输出详解
    Python中 list, numpy.array, torch.Tensor 格式相互转化
    Linux 上传代码到github
  • 原文地址:https://www.cnblogs.com/hehuiself/p/7100185.html
Copyright © 2011-2022 走看看