zoukankan      html  css  js  c++  java
  • 关于js修改三种css样式的方法

    晚上随便写了一个demo,要用js通过特定的方式来修改图片的定位,还有width和height等,完成预想的动画。

    遇到的问题是:

    最开始在.css文件里面设置了图片的position:absolute;left等属性,现在想要把他的left设置为left -=left+temp;即要获取元素的left。

    之前没有细想,每次都是$(“img”).style.left就可以了,不过这次alert出来的居然是空字符串。 现在想想 .style获取的应该是标签的style属性,然后依次获取其他子属性。所以.style.只能获取行内样式。。于是想方设法的去搞到.css里面的属性。

    深入

    怎么才能获取 head中style的css 或者 .css文件中的属性呢?

    IE中使用的是obj.currentStyle方法,FF是用的是getComputedStyle 方法。

    function getDefaultStyle(obj,attribute){ 
            return obj.currentStyle ? obj.currentStyle[attribute]
                : document.defaultView.getComputedStyle(obj,false)[attribute];   
    }

    或者:

    function getDefault(obj){ 
              return obj.currentStyle ?  obj.currentStyle
                :document.defaultView.getComputedStyle(obj,false);   
    }

    例子: 使用javascript更改某个css class的属性…

    .orig { 
            display: none; 
    } 

    你想要改变把他的display属性由none改为inline。 解决办法: 在IE里:

    document.styleSheets[0].rules[0].style.display = "inline";

    在firefox里:

    document.styleSheets[0].cssRules[0].style.display = "inline";

    讨论: 可以做一个函数来搜索特定名字的style对象:

    function getstyle(sname) { 
        for (var i=0;i< document.styleSheets.length;i++) { 
            var rules; 
            if (document.styleSheets[i].cssRules) { 
                rules = document.styleSheets[i].cssRules; 
            } else { 
                rules = document.styleSheets[i].rules; 
            } 
            for (var j=0;j< rules.length;j++) { 
                if (rules[j].selectorText == sname) { 
                    return rules[j].style; 
                } 
            } 
        } 
    }

    然后只要:

    getstyle(".orig").display = "inline";

    总结:

    前面说的是怎样查询或修改外链的.css,不过,不行的是,我们不能这样做。 在ie和firefox里面确实可以实现,不过我们不提倡。

    在chrome里面的cssRules会是null,stackoverflow里面说的是跨域,不过也不存在吧,。 所以,最好的方式还是直接修改dom里面的属性。

    弄了一晚上,算是弄得比较明白了。有些细节要去追究一下,才能得到更多的东西。虽然自己想要的没有得到,不过却可以得到很多收获。

  • 相关阅读:
    springmvc返回视图或当api
    springmvc初始注解案例
    @RequestMapping的属性、缩写
    struts初始案例
    2020-3-5所思所想
    使用selenium学习
    spring链接数据库与事务等实际运用再加
    spring的aop
    ubuntu安装docker
    java内存区域和内存溢出异常
  • 原文地址:https://www.cnblogs.com/freestyle21/p/3075969.html
Copyright © 2011-2022 走看看