zoukankan      html  css  js  c++  java
  • js得到元素样式的方法分析

    1. e.style.属性:
      优点:可读可写.(此种方式修改的是行间的样式,对于css样式表中的样式获取不到,也不能修改)
      缺点:这种方式看似简单粗暴,但写法过于繁冗,尤其是在需要添加很多样式时尤为突出
      注意:对于使用短划线的CSS属性名,必须将其转换成驼峰大小写形式。(如示例中的backgroundColor)

    代码:

    <div id="box"></div>
    var box = document.getElementById("box");
    box.style.width = '100px';
    box.style.height = '100px';
    box.style.backgroundColor = "#f00";

    2.[元素].style.cssText = [CSS样式];
      优点:书写简洁
      缺点:通过style.cssText方式定义的样式会将style(包括style.cssText)方式添加的样式全部重写
      注意:此种方式添加的是行内样式.不可以单独获取每个样式(获取到的东西是字符串),而且要注意兼容性,IE8及更早版本均不支持cssText。
      点评:总的来说此种方式读取样式不灵活
    代码:

     box.style.cssText = ' 200px; height: 200px; border: 1px solid #f00;';

    3.通过操作样式表来操作样式
      优点:操作的是内联样式
      缺点:此种方式只能做修改,却不可读
      注意:此种方式操作样式的优先级没有style高.不兼容IE8以下的浏览器
    代码:

    var sheet = document.styleSheets[0];//要求页面中含有style标签,因为获得的是第一个style标签
    sheet.insertRule('#box{ 300px; height: 300px; background-color: #0f0;}',0);//0代表同一个选择器的第几个.也就是说0是样式的位置

    insertRule()不兼容IE8及更早版本,但可以使用addRule()替代,语法稍微有点不同

    sheet.addRule('#box',' 300px; height: 300px; background-color: #0f0;',0);//第一个参数代表元素,第二个参数代表CSS样式,第三个参数代表插入位置,前两个参数必选,最后一个可选,不填则默认为0。

    4.getComputedStyle(元素).属性/元素.currentStyle.属性
      优点:可以单独的获取每个属性的值
      缺点:不可以写
      注意:前面是普通浏览器的写法(不兼容IE8以下浏览器),后面的兼容的写法
      下面的函数的注意点:
          此函数在获得复合样式的时候有兼容性问题.如单纯得到background样式,这种做法不可取;可以获得单一样式如backgroundColor(小驼峰式的写法)
          一般不要获取自己没有设置的样式.不然不同浏览器会显示不同

    代码:

    function getStyle(e,s){
               var t=e.currentStyle||getComputedStyle(e);//值为null的对象返回false.而活操作只会运算true的运算
               return t[s];//s必须是字符串
           }

     当然也不要拿颜色值做判断,因为每个浏览器显示不同

     
     
    一生的日子很长,一定要注意调节,要劳逸结合
  • 相关阅读:
    0817JavaScript--------------循环语句
    MySQL数据库的几种引擎
    spring-boot+mybatisPlus+shiro的集成demo 我用了5天
    Nginx 自定义404、500、502 页面
    论Photoshop的正确安装姿势
    记定位一次多线程数据安全问题
    记服务器被黑客攻击事件(肉鸡)
    Spring-Boot 使用 Jedis 操作 Redis
    JavaScript 中 replace方法 替换所有字符串
    关于图文转换的web工具
  • 原文地址:https://www.cnblogs.com/weikemudan/p/10233484.html
Copyright © 2011-2022 走看看