设置和获取样式

1.设置样式,利用元素的style属性设置

<body>
 <div class="box" id="box">
   334234234
 </div>
 <script>
   var box = document.getElementById("box");
   console.log(box.style) //  CSSStyleDeclaration对象
   console.log(box.style.padding) // "",只要没有设置相应的行内样式,默认值都是""
   box.style.padding = "300px"; // 设置样式
   box.style.backgroundColor = "#f69"; // 设置背景色(驼峰式)
   console.log(box.style) 
   console.log(box.style.padding) // "300px"
 </script>
</body>

2.读取样式:style  ,  window.getComputedStyle   ,   window.currentStyle

1) style属性的确是可读写的,但是读取时,只限制行内样式,即 < p style="width:200px">,只能获得这里行内的样式width,其他属性均为"",所以xx.style一般用来设置样式,而不是读取样式

2) window.getComputedStyle(element,[pseudoElt]),得出所有在应用有效的样式和分解任何可能会包含值的基础计算后的元素的CSS属性值,返回的样式是一个CSSStyleDeclaration 对象。(只读属性)

<!DOCTYPE html>
<html lang="en" dir="ltr">

<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
  .box{
    width: 100px;
    height: 100px;
    background-color: #f69;
  opacity:0.8; }
</style> </head> <body> <div class="box" id="box"> 334234234 </div> <script> var box = document.getElementById("box"); console.log(window.getComputedStyle(box, null)); // CSSStyleDeclaration对象 console.log(box.style); // CSSStyleDeclaration对象 console.log(window.getComputedStyle(box, null).width); // "100px" console.log(box.style.width); // "" // window.getComputedStyle(box, null).width = "900px" // 报错 </script> </body> </html>

 

3.特别不情愿说IE6-8,不支持window.getComputedStyle,而是element.currentStyle

<!DOCTYPE html>
<html lang="en" dir="ltr">

<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
  .box {
    width: 100px;
    height: 100px;
    background-color: #f69;
  }
  </style>
</head>

<body>
  <div class="box" id="box">
    334234234
  </div>
  <script>
  var box = document.getElementById("box");
  try {
    console.log(window.getComputedStyle(box, null)); // CSSStyleDeclaration对象 
    console.log(box.style); // CSSStyleDeclaration对象
    console.log(window.getComputedStyle(box, null).width); // "100px" 
    console.log(box.style.width); // "" 
    // window.getComputedStyle(box, null).width = "900px" // 报错
  } catch (e) {
    // ie6-8会执行这里的
    console.log(e) // TypeError: 对象不支持“getComputedStyle”属性或方法 
    console.log(box.currentStyle) // CSSCurrentStyleDeclaration对象
    console.log(box.currentStyle.width) // 100px
  }
  </script>
</body>

</html>

综上,

设置样式值用ele.style.key = value

读取样式值,在IE6-8中用 ele.currentStyle.key,其他浏览器用 window.getComputedStyle(ele,null).key (第二个参数可以用伪类,":hover/ :before/ :after/ :nth-child等",但一般情况就是null)

 以下是获得css值的方法,opacity兼容ie6-8,且如果返回的结果有单位的话,不显示单位

function getCss(curEle, attr) {
    var val = null, reg = null;
    if ("getComputedStyle" in window) {
      val = window.getComputedStyle(curEle, null)[attr];
    } else { // ie6-8
      if (attr === "opacity") {
        val = curEle.currentStyle[filter]; // filter:alpha(opacity=10) 把获取到的结果进行剖析,获得里面的数字 让数字除以100才和标准浏览器一致
        reg = /^alpha\(opacity=(\d+(?:\.\d+)?)\)$/i;
        val = reg.test(val) ? reg.exec(val)[1] / 100 : 1
      } else {
        val = curEle.currentStyle[attr];
      }
    }
    reg = /^(-?\d+(\.\d+)?)(px|pt|rem|em)?$/i;
    return reg.test(val) ? parseFloat(val) : val;
  }
  console.log(getCss(box, "opacity"))

 

转载于:https://www.cnblogs.com/2han/p/6382019.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值