offsetWidth相关js属性

js你真的了解offsetWidth吗

offsetWidth是什么?

答:它可以获取物体宽度的数值

那么就只是这样吗!

html部分

<div id="div1"></div>

<style>

#div1 { width:200px; height:200px; border:1px solid red; padding:2px; margin:2px; background:green;}

</style>

请看上面的html,你知道div1的offsetWidth是多少吗?

是不是200啊

哈哈,错了

div1的offsetWidth是206

为什么?

答:offsetWidth实际获取的是盒模型(width+border + padding)

200+2+4=206

扩展:那么offsetLeft和offsetTop呢

答: offsetLeft = left + marginLeft

offsetTop = top +marginTop

示例:让div变窄

现象:onmouseover时,div变窄

原理:

oDiv.style.width = oDiv.offsetWidth - 1 + "px";

js部分

<script>
window.onload = function(){
    var oDiv = document.getElementById("div1");

    oDiv.onmouseover = function(){
        document.title = oDiv.offsetWidth;
        setInterval(function(){
            oDiv.style.width = oDiv.offsetWidth - 1 + "px";
        },30);
    }

}
</script>

运行上面示例后,你会发现一个奇怪的现象:

div在变宽

我们不是要div变窄的吗!它怎么越来越宽了呢?

那么这个问题,怎么解决呢?

解决方式:

用oDiv.style.width = parseInt(oDiv.style.width) - 1 + "px";

但是发现,onmouseover时,div它不动呢?

原因:oDiv.style.width,它只能获取行间的样式

所以需要调整成

<div id="div1" style="width:200px;"></div>

其实,我们还可以写成一个通用的方法,可以获取任意一个样式

方法:function getStyle(obj,name)

注意:此时样式可以不是行间样式,也能获取

知识点:

IE写法:currentStyle

非IE写法: getComputedStyle

完整代码,如下


1

2

3

4

5

<div id="div1"></div>

<style>

#div1 { width:200px; height:200px; border:1px solid red; padding:2px; margin:2px; background:green;}

</style>

  

<script>
window.onload = function(){
    var oDiv = document.getElementById("div1");

    oDiv.onmouseover = function(){
        document.title = oDiv.offsetWidth;
        setInterval(function(){
            //oDiv.style.width = oDiv.offsetWidth - 1 + "px";
            //oDiv.style.width = parseInt(oDiv.style.width) - 1 + "px";
            oDiv.style.width = parseInt(getStyle(oDiv,"width"))- 1 + "px";
        },30);
    }

}

//获取行间任意样式
function getStyle(obj,name){
    if(obj.currentStyle){    //IE
        return obj.currentStyle[name];
    } else {
        return getComputedStyle(obj,false)[name];    //非IE
    }

}

</script>

时间: 2024-10-29 10:46:32

offsetWidth相关js属性的相关文章

css中与高度相关的属性其百分比的设置

<body> <div style="background-color:red;"> <div style="width:50%;height:50%;background-color:green;"></div> </div> </body> 上面父div宽度继承body元素的宽度,子div内容区宽度50%是相对于父div的宽度,但子div内容区高度设为50%却不是相对于父div高度而是相对于

4.新增表单相关的属性

新增表单相关的属性 1.可以对input(type=text).select.textarea与button元素指定autofocus属性.它以指定属性的方式让元素在打开页面时自动获得焦点. 2.可以对input(type=text)和textarea元素指定placeholder属性,它会对用户的输入进行提示,提示用户可以输出的内容. 3.可以对input.output.select.textarea.button与fieldset指定form属性,声明它属于哪个表单,然后将其放置在页面上的任

5.链接相关的属性以及其他属性

链接相关的属性: 1.为a与area元素增加了media属性.download属性以及ping属性,其中media属性规定目标URL是为什么类型的媒介/设备进行优化的,download属性用于让用户下载目标链接所指向的资源,而不是直接打开该目标资源,这些属性均只能在href属性存在时使用. 2.为area元素增加了hreflang属性与rel属性,以保持与a元素.link元素的一致. 3.为link元素增加了新属性sizes,该属性可以与icon元素结合使用(通过rel属性),该属性指定关联图标

js属性扩展,继承,属性查找

JavaScript 是一种基于原型的面向对象语言 在 javaScript 中,每个对象都有一个它的原型(prototype)对象的引用,这个原型对象又有自己的原型,直到某个对象的原型为 null 为止,这种一级一级的链结构就称为原型链(prototype chain).比如 定义一个object对象var o={},它的原型为Object.prototype,而Object.prototype的原型为null 下面为示例代码 <script type="text/javascript&

Android中Activity与Task相关的属性解析

与Task相关的属性解析 android:allowTaskReparenting 用来标记Activity能否从启动的Task移动到有着affinity的Task(当这个Task进入到前台时)--"true",表示能移动,"false",表示它必须呆在启动时呆在的那个Task里.    如果这个特性没有被设定,设定到<application>元素上的allowTaskReparenting特性的值会应用到Activity上.默认值为"fals

关于UIView用户交互相关的属性和方法

UIView除了负责展示内容给用户外还负责响应用户事件 1.交互相关的属性 userInteractionEnabled 默认是YES ,如果设置为NO则不响应用户事件,并且把当前控件从事件队列中删除.也就是说设置了userInterfaceEnabled属性的视图会打断响应者链导致该view的subview都无法响应事件. multipleTouchEnabled  默认是NO,如果设置为YES则支持多点触碰. exclusiveTouch 默认是NO,如果设置为YES则当前UIView会独占

jQuery属性的相关js实现方法

元素操作 Add Class //JQUERY $(el).addClass(className); //js //谷歌浏览器,火狐浏览器,IE8+ if (el.classList) el.classList.add(className); else el.className += ' ' + className; //谷歌浏览器,火狐浏览器,IE10+ el.classList.add(className); After //JQUERY $(el).after(htmlString); /

JS 对象属性相关--检查属性、枚举属性等

1.删除属性 delete运算符可以删除对象的属性 delete person.age //即person不再有属性age delete person['age'] //或者这样 delete只是断开属性和宿主对象的联系,而不会去操作属性中的属性  看到delete a.p之后b.x仍然为1 var a = {p:{x:1}}; var b = a.p; console.log(a.p.x); //1 delete a.p; console.log(a.p.x); //TypeError a.p

总结与元素坐标相关的属性(再也搞不混了)

与元素坐标相关属性: 1.HTML元素 html元素是网页的根元素,document.documentElement就指向这个元素. 1.1 clientWidth, clientHeight 这两个属性返回视口(viewport)的大小,单位为像素.所谓“视口”,是指用户当前能够看见的那部分网页的大小.document.documentElement.clientWidth和document.documentElement.clientHeight,基本上与window.innerWidth和