兼容IE8及以上的IE浏览器
1. [代码][HTML]代码 
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <div id="test"></div>
    </body>
    <script src="../lib/jquery-1.8.3.min.js"></script>
    <script>
        /*
         * 火狐无 addRule,低版本IE无insertRule,insertRule是w3c标准
         * 此处insertRule -> addRule的代码是因为inserterRule只有
         *2个参数。2个参数转成3个参数状况比较多
         */
        if(!CSSStyleSheet.prototype.insertRule){
            CSSStyleSheet.prototype.insertRule = function(style, index){
                if(!style){
                    return;
                }
                var style = style.split("{");
                if(style.length<2){
                    return;
                }
                this.addRule(style[0], style[1].split("}")[0], index);
            }
        }
         
        /*
         * 火狐无 removeRule,低版本IE无deleteRule
         * delete​Rule是w3c标准音效网
         */http://www.huiyi8.com/yinxiao/​
        if(!CSSStyleSheet.prototype.deleteRule){
            CSSStyleSheet.prototype.deleteRule = function(index){
                this.removeRule(index);
            }
        }
         
        /**
         * 创建一个外部样式表
         */
        function sheet(appendTo){
            var style = document.createElement("style");
            style.type = 'text/css';
            appendTo ? appendTo.append(style) : $("body").append(style);
            return style.sheet ? style.sheet : style.styleSheet;
        }
         
        var sheet = new sheet();
        sheet.insertRule("#test{width:100px;height:100px;background:red;border:5px solid green;}", 0);
        sheet.insertRule("#test{position:absolute;}", 1);
        sheet.insertRule("#test{position:absolute;}", 2);
         
        var mouseDown = false;
        var position;
        var style;
        var target = $("#test");
        var x,y;
        var rule;
        $("#test").mousedown(function(e){
            mouseDown = true;
            x = e.clientX;
            y = e.clientY;
            position = target.position();
        }).mousemove(function(e){
            if(mouseDown == true){
                rule = sheet.cssRules ? sheet.cssRules[2] : sheet.rules[2];
                rule.style.top = (position.top + e.clientY - y) + "px";
                rule.style.left = (position.left + e.clientX - x) + "px";
            }
        }).mouseup(function(){
            mouseDown = false;
        });
    </script>
</html>

js操作创建和操作外部样式的例子的更多相关文章

  1. Gremlins.js – 模拟用户随机操作的 JS 测试库

    Gremlins.js 是基于 JavaScript 编写的 Monkey 测试库,支持 Node.js 平台和浏览器中使用.Gremlins.js 随机模拟用户操作:单击窗口中的任意位置,在表格中输 ...

  2. JS与PHP数组操作的不同

    JS与PHP数组操作的不同 1.JS 中向数组中添加元素,必须指定下标 2.php中向数组中添加元素,可以不指定下标(追加) 3.JS 中数组元素的下标,是连续 4.PHP中数组元素的下标,可以不连续 ...

  3. js中的DOM操作汇总

    一.DOM创建 DOM节点(Node)通常对应于一个标签,一个文本,或者一个HTML属性.DOM节点有一个nodeType属性用来表示当前元素的类型,它是一个整数: Element,元素 Attrib ...

  4. jquery实现点击展开列表同时隐藏其他列表 js 对象操作 对象原型操作 把一个对象A赋值给另一个对象B 并且对象B 修改 不会影响 A对象

    这篇文章主要介绍了jquery实现点击展开列表同时隐藏其他列表的方法,涉及jquery鼠标事件及节点的遍历与属性操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了jquery实现点击 ...

  5. js实现链式操作

    前言:前不久阿里远程面试时问了我一个问题,如下: function Person(){}; var person = new Person(); //实现person.set(10).get()返回2 ...

  6. JS之document对象(找元素、操作内容、操作属性、操作样式及4道例题)

    document对象 一.找元素 1.根据id找 示例: <input id = "a" type="button" value="找元素&qu ...

  7. js基础总结01 --操作DOM

    1.选择对象 通过id来选择绑定一个dom节点 :document.getElementById('p1'): 通过类名来绑定一个类数组的对象集合,:document.getElementsByCla ...

  8. 1 js中常用的操作

    总结一些前端js常用的操作 常用日期操作:前端开发常用 JS 方法 js中array.list.map的遍历:js遍历集合(Array,Map,Set) js中对象的定义:js创建自定义对象的几种方式 ...

  9. day45:JS中的json&JS的BOM操作和DOM操作

    目录 1.补充:CSS中的弹性盒子 2.JS中json的序列化 3.JS中的BOM操作 3.1 location操作 3.2 计时器 4.JS中的DOM操作 4.1 创建标签 4.2 查找标签 4.3 ...

随机推荐

  1. UVa10234 Race

    递推,设有i个人排在第一名,剩下的人排在后面,方案有f[i]种,则f[i]=sum(c[n][i]*f[n-i]) 1<=i<=n /*by SilverN*/ #include<a ...

  2. Scrapy学习-1-入门

    基础知识 爬虫发展史   爬虫去重 1. 存储到数据库中 存取速度慢 2. 存储到内存中的集合里,内存占用十分大 当爬取数据有1亿条时 1*10**8*2Byte*50str_len/1024/102 ...

  3. 并发安全问题之HashMap

    原文地址: http://my.oschina.net/xianggao/blog/393990#OSC_h2_1 目录[-] 并发问题的症状 多线程put后可能导致get死循环 多线程put的时候可 ...

  4. Idea其他设置

    一.生成javadoc Tools->Gerenate JavaDoc 1. 选择是整个项目还是模块还是单个文件 2. 文档输出路径 3. Locale 选择地区,这个决定了文档的语言,中文就是 ...

  5. 洛谷—— P2656 采蘑菇

    https://www.luogu.org/problem/show?pid=2656 题目描述 小胖和ZYR要去ESQMS森林采蘑菇. ESQMS森林间有N个小树丛,M条小径,每条小径都是单向的,连 ...

  6. sugar与阿龙的互怼(第一季)

    §   第一季 回家风波 高考了,啦啦啦~ 快要高考了,显然sugar很伤心. 显然不是因为快要考试了sugar才伤心的. 那为什么??? 因为他们都回家了,但是sugar和他的小伙伴们都不回家!!! ...

  7. luogu P1704 寻找最优美做题曲线

    题目背景 nodgd是一个喜欢写程序的同学,前不久(好像还是有点久了)洛谷OJ横空出世,nodgd同学当然第一时间来到洛谷OJ刷题.于是发生了一系列有趣的事情,他就打算用这些事情来出题恶心大家-- 题 ...

  8. codeforces 946G

    题意: 有一个长度为n的数组a.你可以删除一个位置之后进行操作,一次操作可以把任意位置上的数字变成任意的值,问最少需要多少操作能使得数列变成严格上升的. n<=200000 分析: 如果没有删除 ...

  9. XML Publisher Template Type - Microsoft Excel Patch

    XML Publisher Template Type - Microsoft Excel Patch Oracle XML Publisher > Templates > Create ...

  10. 【面试 springMVC】【第四篇】springMVC的一些问题

    1.springMVC的工作流程是什么样的 1.用户请求到达 2.DispatcherServlet接收请求,发送给处理器映射器 3.处理器映射器handlerMapping,处理找到对应处理器,返回 ...