使用js解决由border属性引起的div宽度问题


Posted in Javascript onNovember 26, 2013

下面我们来看一个例程

<script type="text/javascript"> 
var timer 
function stopMove(){ 
clearInterval(timer) 
} 
function startMove(){ 
var div=document.getElementById('ok') 
clearInterval(timer) 
timer=setInterval(function(){ 
ok.style.width=ok.offsetWidth-1+'px' ;//理论上应该是宽度不断减少,但是实际却增长,原因在样式表中的border属性,去掉即可解决 
},20) 
} 
</script> 
<style type="text/css"> 
* {margin: 0;padding:0} 
body {font-size: 14px;line-height: 24px;margin: 0px;padding: 0px;} 
#ok{width:800px;height: 200px;background-color:darkgreen;border: 1px red solid; } 
</style> 
</head> 
<body> 
<div id="ok"></div>

注意看注释,为什么会出现这个现象呢?其实就是由于border引起的,由于ok.style.width指定的是div的宽度,而offsetwidth指的是实际的宽度,包括border宽度。所以这个右边的式子得到的宽度值其实比左边大一个像素,解决办法,每次减去3个像素就可以达到实际减去一个像素的目的。或者用右边也用parseInt(div.style.width),但要修改div如下:
<div id="ok" style="width:200px:></div>

终极方案:用currentstyle或getcomputedstyle来获取属性。
Javascript 相关文章推荐
js过滤数组重复元素的方法
Sep 05 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
Oct 20 Javascript
javascript中String类的subString()方法和slice()方法
May 24 Javascript
中文字符串截取的js函数代码
Apr 17 Javascript
一个简单的JS鼠标悬停特效具体方法
Jun 17 Javascript
js在数组中删除重复的元素自保留一个(两种实现思路)
Aug 22 Javascript
实现音乐播放器的代码(html5+css3+jquery)
Aug 04 Javascript
js 获取当前web应用的上下文路径实现方法
Aug 19 Javascript
浅谈es6语法 (Proxy和Reflect的对比)
Oct 24 Javascript
微信小程序顶部导航栏滑动tab效果
Jan 28 Javascript
jquery实现轮播图特效
Apr 12 jQuery
关于小程序优化的一些建议(小结)
Dec 10 Javascript
js 弹出框只弹一次(二次修改之后的)
Nov 26 #Javascript
JS匀速运动演示示例代码
Nov 26 #Javascript
Extjs4中Form的使用之本地hiddenfield
Nov 26 #Javascript
jQuery Mobile的loading对话框显示/隐藏方法分享
Nov 26 #Javascript
当鼠标滑过文本框自动选中输入框内容的JS代码分享
Nov 26 #Javascript
JS判断不能为空实例代码
Nov 26 #Javascript
常用的JavaScript验证正则表达式汇总
Nov 26 #Javascript
You might like
解析PHP自带的进位制之间的转换函数
2013/06/08 PHP
PHP的password_hash()使用实例
2014/03/17 PHP
PHP无限极分类函数的实现方法详解
2017/04/15 PHP
javascript 哈希表(hashtable)的简单实现
2010/01/20 Javascript
Jquery 滑入滑出效果实现代码
2010/03/27 Javascript
jquery插件制作简单示例说明
2012/02/03 Javascript
javascript运行机制之this详细介绍
2014/02/07 Javascript
bootstarp modal框居中显示的实现代码
2017/02/18 Javascript
原生JS上传大文件显示进度条 php上传文件代码
2020/03/27 Javascript
Vue中的Vux配置指南
2017/12/08 Javascript
详解vue-cli 接口代理配置
2017/12/13 Javascript
解决vue-cli创建项目的loader问题
2018/03/13 Javascript
Webpack path与publicPath的区别详解
2018/05/03 Javascript
微信小程序修改swiper默认指示器样式的实例代码
2018/07/18 Javascript
webpack4之如何编写loader的方法步骤
2019/06/06 Javascript
基于layui table返回的值的多级嵌套的解决方法
2019/09/19 Javascript
JS Generator 函数的含义与用法实例总结
2020/04/08 Javascript
React组件设计模式之组合组件应用实例分析
2020/04/29 Javascript
vue实现编辑器键盘抬起时内容跟随光标距顶位置向上滚动效果
2020/05/28 Javascript
Javascript数组及类数组相关原理详解
2020/10/29 Javascript
JQuery+drag.js上传图片并且实现图片拖曳
2020/11/18 jQuery
JS实现点击掉落特效
2021/01/29 Javascript
[01:27:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第一场 1月24日
2021/03/11 DOTA
python 将字符串转换成字典dict
2013/03/24 Python
Python的Django框架下管理站点的基本方法
2015/07/17 Python
python 爬取微信文章
2016/01/30 Python
bpython 功能强大的Python shell
2016/02/16 Python
自学python的建议和周期预算
2019/01/30 Python
CSS3 实现图形下落动画效果
2020/11/13 HTML / CSS
有关HTML5 Video对象的ontimeupdate事件(Chrome上无效)的问题
2013/07/19 HTML / CSS
以实惠的价格轻松租车,免费取消:Easyrentcars
2019/07/16 全球购物
市场开发与营销专业求职信
2013/12/31 职场文书
渡河少年教学反思
2014/02/12 职场文书
采购求职信
2014/03/17 职场文书
python 用递归实现通用爬虫解析器
2021/04/16 Python
Java字符串逆序方法详情
2022/03/21 Java/Android