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. Thread-Safe Resource Manager

    http://php.net/manual/en/internals2.memory.tsrm.php When PHP is built with Thread Safety enabled, th ...

  2. js自定义弹出框

    js自定义弹出框: 代码如下 <html> <head><title>自定义弹出对话框</title> <style type ="te ...

  3. scala中的Actor

    1.介绍 2.简单示例 3.第二个程序 4.通信程序 package day01 import scala.actors.Actor case class Message(content: Strin ...

  4. 针对功能权限(url访问)如何避免越权访问

    你可以用request获得之前的页面路径:Request.getHeader("Referer");然后你可以判断一下,这个是字符串类型的. 如果是需要登录的,你可以从sessio ...

  5. An error occurred while processing an SVN command

    今天在使用SmartSVN的时候,遇到这个问题,反复几次,也没有得到解决,而且进入了死循环,一直在提示这个消息,即使在cleanup之后. 百度了一番之后,找到了解决办法: 把出错的文件在本地删除掉, ...

  6. CentOS下 pycharm开发环境搭建

    经过一系统列的折腾之后,我终于有高版本的python和我熟悉的输入法用了,下面来搭建pycharm下的python开发环境. 1.首先安装java jdk注意是JAVA 的JDK,不是JAVA VM什 ...

  7. sys.syslockinfo--master..syslockinfo

    from:http://technet.microsoft.com/zh-cn/library/ms189497.aspx 重要提示 将此 SQL Server 2000 系统表作为一个视图包含进来是 ...

  8. Lua参数绑定函数实现方法

    背景 对于某一个函数, 其被调用多次, 每次调用的入参都是一致的. 不想每次都填写参数, 如果能够定义一个新的函数, 将参数跟此函数绑定就棒哒哒了. local function pirntfunc( ...

  9. DNS压力测试工具dnsperf简介

    dnsperf是我最近写的一个开源的DNS压力测试工具,用户可以用它来对DNS服务器或者Local DNS做压力测试.dnsperf目前的实现是单进程模式,通过epoll非阻塞地处理网络事件. dns ...

  10. python pymysql和orm

    pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 1. 安装 管理员打开cmd,切换到python的安装路径,进入到Scripts目录下(如:C:\Users\A ...