style设置/获取样式的问题:
1.js通过style方法
    --加样式:加的是行间样式 oDiv.style.width="20"+'px';
    --取样式:取得是行间样式    alert(oDiv.style.width)
    --当css写在样式表里(即css全部写在行外)的时候获取不到 --alert(oDiv.style.width)是错误的
行内样式的优先级最高,当js通过style方法添加了样式之后,
js再通过修改class的值为同一元素增加样式,最终行内样式优先起作用,
在写js时最好统一只操作style或者class,不要同时操作

2.如何获取元素的行外样式:(样式全写在style标签里,或者一个.css 文件里)
    获取行外样式:
        IE: currentStyle
        Chrome,FF: getComputedStyle(oDiv,false).width
        兼容两个浏览器的写法:
        if(oDiv.currentStyle){
            alert(oDiv.currentStyle.width);
        }else{
            alert(getComputedStyle(oDiv,false).width);
        }
    *注:在解决很多兼容性写法时,都是用if..else..

    封装一个获取行外样式的函数:
        funtion getStyle(obj,name){
            if(obj.currentStyle){
                //IE
                return obj.currentStyle[name];
            }else{
                //Chrom,FF
                return getComputedStyle(obj,false)[name];
            }
        }
        调用:getStyle(oDiv,'width');

对于样式可分为:
    单一样式:width,height,font-size等
    复合样式:background,border
    而currentStyle只能取单一样式,无法取复合样式
    要想取:getStyle(oDiv,'backgroundColor');

3.通过js如何为元素修改class属性值/添加class属性
    js中任何标签的任何属性都可以修改,修改时HTML里面怎么写js里面就怎么写,
    document.getElementbyId('#box').style.background="red";
    document.getElementbyId('#box').href="demo.css";
    但是有一个例外,就是不可以这样修改class属性
    修改时应该为document.getElementbyId('box').className='bigBox';
    这样就为id为box的元素,添加了一个名为bigBox的class属性。
    因为class为html 里面的关键字/保留字,不可以修改,
    (所有的关键字/保留字都不可以修改)

4.js中两种操作属性的方法:
        1)oTxt.value="111111"
        2)oTxt['value']='1111'
    在所有操作属性的方法中,第一种方法都可以用第二种方法代替,但是第一种方法比较方便
    但元素属性作为函数的参数来传参时,操作属性只能用第二种方法,用第一种会有错误
        function change(name,val){
            var oDiv=document.getElementbyId('div');
            oDiv['style'][name]=value;
        }
    <div id="div" onclick="change('background','red')"></div>

offsetWidth/offsetHeight的问题:
offset的知识点:
offsetWidth/offsetHeight/offsetLeft/offsetTop: 获取的都是盒模型尺寸
  --获取元素距离'父元素'而言的距离(左边距,即获取物体的位置)
    --综合考虑影响物体位置的因素(width,margin)
    --使用时:只能获取,并不能设置'oDiv.offsetLeft=20px'是错误的,要通过odiv.style.left设置
offset的bug:
    当使用 oDiv.style.width=oDiv.offsetwidth-4+'px' 来设置物体的样式时,最终物体的宽可能不变窄,反而会增加
    应为offset获取的物体盒模型的样式,减掉之后可能比物体实际的宽要大
    注**我们平时用oDiv.style.width=oDiv.offsetwidth-1+'px'
            而不用oDiv.style.width=oDiv.style.width-4+'px' 是因为style只能取行间样式,
            而我们平时的样式都写在外面的样式表里面,style的方法获取不到,所以用offset来获取,
            但是当offset出现问题时,我们可以把样式写在样式表里面,通过
            oDiv.style.width=oDiv.style.width-4+'px'来设置,但这种方法不是很好,不能实现表现层与结构层的分离,
            所以我们可以通过上面封装的getStyle()函数获取行外样式,来代替offset,
            var oDiv=document.getElementById('div1');
            var wi=getStyle("oDiv","width");
            oDiv.style.width=wi-10+'px';        //这种方法是最准确的获取和设置样式的方法

            function getStyle(obj,styleName){
                if(obj.currentStyle){
                    //IE
                    return obj.currentStyle[styleName];
                }else{
                    //Chrom,FF
                    return getComputedStyle(obj,false)[styleName];
                }
            }

    注:以后用offset时最好都换成使用这个函数,才不会出问题

style设置/获取样式的问题 和 offsetWidth/offsetHeight的问题的更多相关文章

  1. jQuery 设置/获取样式

    参考 http://www.w3school.com.cn/jquery/jquery_css.asp $("#a").css("height"); $(&qu ...

  2. js 设置 获取css样式

    先看一段代码,为了体现一会下面说的js用style获取css样式的不同 一:给div设置margin-left(用style设置css样式没什么问题) box.style.marginLeft=&qu ...

  3. 关于获取、设置css样式封装的函数入门版

    <html> <head> <meta charset="UTF-8"> <title>CSS样式的获取和设置:简单版</ti ...

  4. getComputedStyle与currentStyle获取样式(style/class)

    今天看jQuery源码CSS部分,里面用到了currentStyle和getComputedStyle来获取外部样式. 因为elem.style.width只能获取elem的style属性里的样式,无 ...

  5. 使用 jQuery 选择器获取页面元素后,利用 jQuery 对象的 css() 方法设置其样式。

    查看本章节 查看作业目录 需求说明: 使用 jQuery 选择器获取页面元素后,利用 jQuery 对象的 css() 方法设置其样式. 要求如下: 点击页面的"更改样式"按钮后, ...

  6. javascript中无法通过div.style.left获取值的问题

    一.问题总结: 样式必须直接写在元素内部才能通过div.style.left直接获取属性值(也就是必须是内联样式才行),定义在css中的样式不能通过这种方式获取. 让元素移动到200停止 setTim ...

  7. JS获取样式

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. JS设置CSS样式的几种方式

    用JS来动态设置CSS样式,常见的有以下几种 1. 直接设置style的属性  某些情况用这个设置 !important值无效 如果属性有'-'号,就写成驼峰的形式(如textAlign)  如果想保 ...

  9. JS设置CSS样式的几种方式【转】

    用JS来动态设置CSS样式,常见的有以下几种 1. 直接设置style的属性  某些情况用这个设置 !important值无效 如果属性有'-'号,就写成驼峰的形式(如textAlign)  如果想保 ...

随机推荐

  1. vi 技巧和诀窍~转IBM

    复合搜索 1 #!/bin/ksh 2 # 3 echo "Starting" 4 file=${1} 5 6 echo ${file} 7 8 if [[ ${file} = 1 ...

  2. Sublime Text安装Package Control

    原来Sublime Text3安装Package Control很麻烦,现在简单的方法来了! 一.简单的安装方法 使用Ctrl+`快捷键或者通过View->Show Console菜单打开命令行 ...

  3. linux添加环境变量(centos)

    1.查看当前环境变量 #echo $PATH 2.增加环境变量 #vi /etc/profile export PATH=/usr/path/bin:$PATH 3.生效 #source /etc/p ...

  4. rem的使用

    浏览器的默认字体高是16px. 兼容性: 目前,IE9+,Firefox.Chrome.Safari.Opera 的主流版本都支持了rem. 对于不支持的浏览器,要多写一个绝对单位的声明,这样浏览器就 ...

  5. JSON例子异常分析

    今天自己写了一个JSON的例子,可以一调用就出了问题,报下面这个异常: Java.lang.ClassNotFoundException: org.apache.commons.lang.except ...

  6. Linux下更改目录及其下的子目录和文件的访问权限

    想一次修改某个目录下所有文件的权限,包括子目录中的文件权限也要修改,要使用参数-R表示启动递归处理. 例如: [root@localhost ~]# chmod 777 /home/user 注:仅把 ...

  7. Python之路----------ConfigParser模块

    Python的ConfigParser 废话不说,拿去用 #coding=utf-8 import configparser ''' 基於Python3.0版本寫的配置文件的創建.增加.刪除.修改等方 ...

  8. .NET编译项目时出现《此实现不是 Windows 平台 FIPS 验证的加密算法的一部分》处理方法

    有用户提出在编译代码时出现源文件“D:\.......ervice.cs”未能打开(“此实现不是 Windows 平台 FIPS 验证的加密算法的一部分.”)的问题,如下图所示: 对于上面的问题,只需 ...

  9. 点餐系统sprint3总结

    转眼间,sprint3也结束了.意味着软件工程的课程结束了,我们的项目也完成了.在队友们的认真学习,专注打码,辛苦赶工后,我们的项目完成了.显然是仓促中完成的,没有完美的界面.没有无bug的项目,但是 ...

  10. XPath、XQuery 以及 XSLT 函数

    存取函数 名称 说明 fn:node-name(node) 返回参数节点的节点名称. fn:nilled(node) 返回是否拒绝参数节点的布尔值. fn:data(item.item,...) 接受 ...