设置和获取样式

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"))
时间: 2024-12-08 19:53:29

设置和获取样式的相关文章

Js获取/设置行内样式和非行内样式

1.获取行内(内嵌.行间)样式: obj.style.attr;进行获取非行间样式. 2.设置行内样式: obj.style.attr = value; 3.获取非行内样式: function getStyle(obj,attr){ //获取非行间样式,obj是对象,attr是值 if(obj.currentStyle){ //针对ie获取非行间样式 return obj.currentStyle[attr]; }else{ return getComputedStyle(obj,false)[

每天一个JavaScript实例-展示设置和获取CSS样式设置

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>每天一个JavaScript实例-展示设置和获取CSS样式设置</title> <style> #date{ width:200px; background-color:l

利用原生JavaScript获取样式的方式小结

来源:http://www.ido321.com/930.html ps:是获取样式,不是设置样式.若没有给元素设置样式值,则返回浏览器给予的默认值.(论坛整理) 1.element.style:只能获取写在元素标签中的style属性里的样式值,无法获取到定义在<style></style>和通过<link href="css.css">加载进来的样式属性 1: var ele = document.getElementById('ele'); 2:

JS动画之缓冲动画与多物体动画即获取样式的方法

一.缓冲动画Ps1:opacity:所有浏览器都支持 opacity 属性.注释:IE8 以及更早的版本支持替代的 filter 属性.例如:filter:Alpha(opacity=50).Ps2:缓冲运动的速度值一定要转换成整数,不然将到达不了终点,是用Math.ceil(),还是Math.floor(),要看就提情况.Ps3:动画大致模版(思路):            window.onload = function(){            var oDiv = document.g

NPOI 生成Excel (单元格合并、设置单元格样式:字段,颜色、设置单元格为下拉框并限制输入值、设置单元格只能输入数字等)

NPIO源码地址:https://github.com/tonyqus/npoi NPIO使用参考:源码中的 NPOITest项目 下面代码包括: 1.包含多个Sheet的Excel 2.单元格合并 3.设置单元格样式:字段,颜色 4.设置单元格为下拉框并限制输入值 5.设置单元格只能输入数字 // // GET: /Excel/ public ActionResult Write() { var workbook = new HSSFWorkbook();//从流内容创建Workbook对象

jQuery使用之(二)设置元素的样式

css是页面不能分隔的部分,jQuery中也提供了一些css相关的实用的办法.前面章节中有使用过 addClass()为元素添加css样式风格.本节主要介绍jQuery如何设置页面的样式风格.包括添加.删除.动态切换等. 1. 添加.删除css类别. $(function() { //同时添加多个CSS类别 $("img").addClass("css1 css2"); }); 如以上代码对img元素添加了css1和 css2两个样式 removeClass与add

如何查看DIV被设置什么CSS样式

如何查看DIV被设置什么CSS样式呢?可以扩展到了解查看任何HTML标签被设置什么CSS样式.DIVCSS5教大家掌握如何使用谷歌浏览器查找网页中某局部DIV布局结构以及对应设置什么CSS样式. 一.直接观察div标签被设置什么样式   -   TOP 比较简单的布局,我们直接从浏览器上观察效果就能分析一下地方被设置什么样式. 简单直观分析DIV CSS布局用什么样式图 如上图,可以大致分析对应样式有哪些,比如使用背景图片,设置宽度多少.设置CSS高度多少.字体大小.文字靠左.距离左多少. 以上

JS之获取样式

基本代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> div{ color:yellow; } </style> </head> <body> <div style="width:100

获取样式

1.获取最终样式 <script> //获取非行间样式(style标签里的样式或者link css文件里的样式),obj是元素,attr是样式名 function getStyle(obj,attr){ //针对IE if(obj.currentStyle){ return obj.currentStyle[attr]; //由于函数传过来的attr是字符串,所以得用[]来取值 }else{ //针对非IE return window.getComputedStyle(obj,false)[a