zoukankan      html  css  js  c++  java
  • javascript获取元素的计算样式

    使用css控制页面有4种方式,分别为行内样式(内联样式)、内嵌式、链接式、导入式。

    行内样式(内联样式)即写在html标签中的style属性中,如<div style="100px;height:100px;"></div>

    内嵌样式即写在style标签中,例如<style type="text/css">div{100px; height:100px}</style>

    链接式即为用link标签引入css文件,例如<link href="test.css" type="text/css" rel="stylesheet" />

    导入式即为用import引入css文件,例如@import url("test.css")

    如果想用javascript获取一个元素的样式信息,首先想到的应该是元素的style属性。但是元素的style属性仅仅代表了元素的内联样式,如果一个元素的部分样式信息写在内联样式中,一部分写在外部的css文件中,通过style属性是不能获取到元素的完整样式信息的。因此,需要使用元素的计算样式才获取元素的样式信息。

    用window对象的getComputedStyle方法来获取一个元素的计算样式,此方法有2个参数,第一个参数为要获取计算样式的元素,第二个参数可以是null、空字符串、伪类(如:before,:after),这两个参数都是必需的。

    来个例子,

    <style type="text/css">

    #testDiv{

      border:1px solid red;

       100px;

      height: 100px;

      color: red;

    }

    </style>

    <div id="testDiv"></div>

    var testDiv = document.getElementById("testDiv");

    var computedStyle = window.getComputedStyle(testDiv, "");

    var width = computedStyle.width;  //100px

    var height = computedStyle.height;  //100px

    var color = computedStyle.color;  //rgb(255, 0, 0)

    注:获取到的颜色属性都是以rgb(#,#,#)格式返回的。

    这个时候如果用testDiv.style来获取样式信息,如testDiv.style.width肯定是为空的。

    getComputedStyle方法在IE8以及更早的版本中没有实现,但是IE中每个元素有自己的currentStyle属性。

    so,来个通用的

    var testDiv = document.getElementById("testDiv");

    var styleInfo = window.getComputedStyle ? window.getComputedStyle(testDiv, "") : testDiv.currentStyle;

    var width = styleInfo.width;  //100px;

    var height = styleInfo.height;  //100px;

    var color = styleInfo.color;  // rgb(255, 0, 0)

    最后要注意一点,元素的计算样式是只读的,如果想设置元素样式,还得用元素的style属性(这个才是元素style属性的真正用途所在)。

  • 相关阅读:
    训练总结
    图论--最短路--SPFA模板(能过题,真没错的模板)
    图论--最短路-- Dijkstra模板(目前见到的最好用的)
    The 2019 Asia Nanchang First Round Online Programming Contest B Fire-Fighting Hero(阅读理解)
    关于RMQ问题的四种解法
    The Preliminary Contest for ICPC Asia Xuzhou 2019 徐州网络赛 K题 center
    The Preliminary Contest for ICPC Asia Xuzhou 2019 徐州网络赛 XKC's basketball team
    The Preliminary Contest for ICPC Asia Xuzhou 2019 徐州网络赛 D Carneginon
    ZOJ 3607 Lazier Salesgirl (枚举)
    ZOJ 3605 Find the Marble(dp)
  • 原文地址:https://www.cnblogs.com/ArthurPatten/p/3446878.html
Copyright © 2011-2022 走看看