如何用javascript获取和设置css3属性

==================获取========================

我想到的第一个思路

var test = document.getElementById(‘test‘);
console.log(test.style);

然而这种方法并没有什么效果,因为style代表的是行间样式。

我突然想起以前学JS运动,有一个叫做getStyle的方法

function getStyle(obj, name){
    if(obj.currentStyle){
        return obj.currentStyle[name];
    }else{
        return getComputedStyle(obj, false)[name];
    }
}

这个方法用兼容的方式来获得元素的CSS属性

如果我们把这个方法的name去掉,就可以获得所有的CSS属性集合

function getFullStyle(obj){
    if(obj.currentStyle){
        return obj.currentStyle;
    }else{
        return getComputedStyle(obj, false);
    }
}

这样我们就可以获得所有属性了。

如果是CSS3的属性,通常都是以webkit开头的,只要按照字母顺序找到w开头的属性就好了。

总结一下

function getStyle(obj, name){
    if(obj.currentStyle){
        return obj.currentStyle[name];
    }else{
        return getComputedStyle(obj, false)[name];
    }
}

function getFullStyle(obj){
    if(obj.currentStyle){
        return obj.currentStyle;
    }else{
        return getComputedStyle(obj, false);
    }
}

这两个方法可以放在自己的库里随时随地调用。

=============================设置=====================

至于设置,我们还是要通过行间样式来设置,我们可以先看下style里都有啥

var test = document.getElementById(‘test‘);
console.log(test.style);

比如animation-name这个属性,在style里叫animationName,所以设置的时候直接这样设置就好了

test.style.animationName = ‘show‘;

==================用jQuery获取和设置CSS3属性=================

jQuery只能使用css()方法来获取指定的css属性,设置的话只能使用attr来设置,而且还不如原生javascript的style好用。

最后把我写的测试demo贴一下

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
    <title>getCSS3</title>
    <style type="text/css">
        *{
            margin: 0;
            padding: 0;
        }
        html, body{
            height: 100%;
        }
        .test{
            width: 500px;
            height: 500px;
            position: absolute;
            left: 200px;
            top: 50px;
            background: red;
            -webkit-animation: rotate 8s linear infinite both;
            border-radius: 30px;
            box-shadow: 0 0 10px #000;
        }

        @-webkit-keyframes rotate{
            0%{-webkit-transform:rotate(0deg)}
            100%{-webkit-transform:rotate(360deg)}
        }

        @-webkit-keyframes show{
            0%{height: 0px;}
            100%{height: 500px;}
        }
    </style>
</head>
<body>
    <div class="test" id="test"></div>

    <script type="text/javascript" src="./jquery-1.11.3.min.js"></script>
    <script type="text/javascript">
        var test = document.getElementById(‘test‘);
        console.log(getFullStyle(test));
        console.log(getStyle(test,‘animation-name‘));

        console.log(test.style);
        test.style.animationName = ‘show‘;

        function getStyle(obj, name){
            if(obj.currentStyle){
                return obj.currentStyle[name];
            }else{
                return getComputedStyle(obj, false)[name];
            }
        }

        function getFullStyle(obj){
            if(obj.currentStyle){
                return obj.currentStyle;
            }else{
                return getComputedStyle(obj, false);
            }
        }
    </script>
</body>
</html>
时间: 2024-12-11 11:11:20

如何用javascript获取和设置css3属性的相关文章

如何用javascript获取UUID

由于javascript是单线程的东西,所以我们放一个累加变量作为id也不会重复. 但其实javascript本身提供了可以获得唯一id的东东.还记得setTimeout()方法会返回一个唯一id用来后来清除定时器,我们不妨就借用这个id吧. function getUUID() { var id = setTimeout('0'); clearTimeout(id); return id; }; 如何用javascript获取UUID,布布扣,bubuko.com

javascript 获取样式表里的属性值 currentStyle 和 getComputedStyle 的使用

很多时候我们要获取 CSS 样式表里面的值(非行间样式),而获取行间样式的属性值那么这用 obj.style.attr 就能获取得到,那么怎么样才能获取到CSS样式表里面的值呢,那么就要请出我们的主角 currentStyle 和 getComputedStyle ,简要的介绍一下他们,再封装一个函数来兼容各个浏览器. 介绍: currentStyle :这个属性是 IE 浏览器上使用的. getComputedStyle :这个方法是 搞基 浏览器上使用的. 封装: //这里的 obj 参数指

C#通过属性名字符串获取、设置对象属性值

目录 #通过反射获取对象属性值并设置属性值 #获取对象的所有属性名称及类型 #判断对象是否包含某个属性 #通过反射获取对象属性值并设置属性值 0.定义一个类 public class User { public int Id { get; set; } public string Name { get; set; } public string Age { get; set; } } 1.通过属性名(字符串)获取对象属性值 User u = new User(); u.Name = "lily&

jQuery获取和设置disabled属性、背景图片路径

之前对于这个独特的disabled属性获取和设置很混乱,今天项目中用到了,用attr不能实现,于是多次试验得出: 获取disabled属性用prop $("#basic_key").prop("disabled") 以上会返回true或false. 然后设置disabled是attr,重点是后面的一个参数不加引号: $("#basic_key").attr("disabled",'false') //false加引号是错误的~

javascript获取以及设置光标位置

一. 获取光标位置: // 获取光标位置 function getCursortPosition (textDom) { var cursorPos = 0; if (document.selection) { // IE Support textDom.focus (); var selectRange = document.selection.createRange(); selectRange.moveStart ('character', -textDom.value.length);

Javascript 获取和设置日期

关于JavaScript中日期对象使用方法: 一般有两种设置时间的方式: 一种是直接指定,如:date.setHours(13); //指定date的时间为下午1点. 第二种是先获取时间进行计算,然后再进行设置,如: date.setHours(date.getHours() + 13); //获取date的时间,再往后推13个小时: 下面查看更多的例子: <script type="text/javascript"> var mydate=new Date(); //获取

javascript获取对象中的属性及值

function displayProp(obj){ var names=""; for(var name in obj){ names+=name+": "+obj[name]+", "; } alert(names); } 多美完美的体验.跟java的反射很像.

javascript判断浏览器支持CSS3属性

function getsupportedprop(proparray){ var root=document.documentElement; //reference root element of document for (var i=0; i<proparray.length; i++){ //loop through possible properties if (proparray[i] in root.style){ //if property exists on element

在jquery中应该使用prop方法来获取和设置checked属性,不应该使用attr。

$("#checkAll").prop("checked", true); $("#checkAll").prop("checked", false);