js获取元素样式嵌入css样式

js获取元素样式(嵌入css样式)

获取实例样板

css:

<style>
    #box{
          width:100px;
          height: 100px;
          background: pink;
        }
</style>

html:
<div id="box"></div>

obj.style.attr

  • 只能获取内联样式
alert(box.style.width)

这里写图片描述

对象.offsetWidth

  • JS位置、宽高属性之一
  • 可以取得对象的width之类的属性
  • 不能取得backgroundColor
alert(box.offsetWidth);
alert(box.offsetWidth);

弹出

getComputerStyle(obj).attr

  • 可以取得对象的所有属性
  • 不支持IE8及以下浏览器 会报错
  • 获取颜色的值和路径 都不能用来判断。!!!!!!!
    颜色会变成rgb的形式输出,相对路径会变成绝对路径输出
//getComputedStyle(对象).属性

alert( getComputedStyle(box).backgroundColor)

这里写图片描述

obj.currentStyle.attr

  • 可以取得对象的所有属性
  • 不支持主流浏览器,只能在IE浏览器使用 会报错
    颜色会变成rgb的形式输出,相对路径会变成绝对路径输出
//对象.currentStyle.属性

alert(box.currentStyle.width)

这里写图片描述

获取对象属性的方法 封装

方法一:

function getStyle(obj,attr) {
    //判断浏览器类型
    if(obj.currentStyle){
        //IE浏览器
        return obj.currentStyle[attr];
    }else{
        //非IE浏览器,返回的是undefined
        return getComputedStyle(obj)[attr];
    }
}

====》转为三目

function getStyle(obj,attr) {
        return obj.currentStyleobj.currentStyle[attr]:getComputedStyle(obj)[attr];

}

===》转为用 || 判断

 function getStyle(obj,attr) {
       //谷歌报错,谷歌没有currentStyle方法
       //return obj.currentStyle[attr]||getComputedStyle(obj)[attr];
    }

//此时,可以只返回对象,使用时,加属性使用
//此时,谷歌不报错,此时只判断有没有currentStyle属性
var b = getStyle(box).width;
    function getStyle(obj) {
        return obj.currentStyle || getComputedStyle(obj);
    }

    alert(b)

方法二

function getStyle(obj,attr) {
        //不能用 || 进行判断
       //return window.getComputedStyle(obj) || obj.currentStyle;

        //可以用三目
       return window.getComputedStyle?getComputedStyle(obj)[attr]:obj.currentStyle[attr];
       /*if(window.getComputedStyle){ //需要写上window,IE报错,不存在,不是undefined。
           //返回的一定不是IE
           return getComputedStyle(obj);
       }else{
           // 一定是IE浏览器
           return obj.currentStyle;
       }*/
    }

需要注意的是:当样式(如:width)当做参数传进函数时,不能用点‘.’操作,只能用[]代替点‘.’操作

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值