使用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 相关文章推荐
JavaScript关于select的相关操作说明
Jan 13 Javascript
jQuery通过控制节点实现仅在前台通过get方法完成参数传递
Feb 02 Javascript
js窗口关闭提示信息(兼容IE和firefox)
Oct 23 Javascript
AngularJS实现全选反选功能
Dec 08 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
Oct 20 Javascript
javascript中的后退和刷新实现方法
Nov 10 Javascript
javascript replace()第二个参数为函数时的参数用法
Dec 26 Javascript
js实现放大镜特效
May 18 Javascript
原生js 封装get ,post, delete 请求的实例
Aug 11 Javascript
Vue 框架之键盘事件、健值修饰符、双向数据绑定
Nov 14 Javascript
JavaScript函数定义方法实例详解
Mar 05 Javascript
一次微信小程序内地图的使用实战记录
Sep 09 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
地摊中国 - 珍藏老照片
2020/08/18 杂记
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
PHP添加文字水印或图片水印的水印类完整源代码与使用示例
2019/03/18 PHP
基于laravel where的高级使用方法
2019/10/10 PHP
Laravel如何实现自动加载类
2019/10/14 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
2019/12/03 PHP
jQuery实现类似淘宝购物车全选状态示例
2013/06/26 Javascript
js完美的div拖拽实例代码
2014/01/22 Javascript
JavaScript判断IE版本型号
2015/07/27 Javascript
js焦点文字滚动效果代码分享
2015/08/25 Javascript
JavaScript实现的伸展收缩型菜单代码
2015/10/14 Javascript
JS实现的3D拖拽翻页效果代码
2015/10/31 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
2016/10/27 Javascript
详解jQuery简单的表单应用
2016/12/16 Javascript
js使用Replace结合正则替换重复出现的字符串功能示例
2016/12/27 Javascript
Vue学习之路之登录注册实例代码
2017/07/06 Javascript
vue+element实现表单校验功能
2019/05/20 Javascript
JavaScript中将值转换为字符串的五种方法总结
2019/06/06 Javascript
Python 深入理解yield
2008/09/06 Python
python使用MySQLdb访问mysql数据库的方法
2015/08/03 Python
python 统计一个列表当中的每一个元素出现了多少次的方法
2018/11/14 Python
Python微医挂号网医生数据抓取
2019/01/24 Python
Python实现的排列组合、破解密码算法示例
2019/04/12 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
python实现按关键字筛选日志文件
2019/12/24 Python
pytorch实现线性拟合方式
2020/01/15 Python
pymysql 插入数据 转义处理方式
2020/03/02 Python
PyTorch中Tensor的数据类型和运算的使用
2020/09/03 Python
python 爬取小说并下载的示例
2020/12/07 Python
英国Radley包德国官网:Radley London德国
2019/11/18 全球购物
计算机专业自荐信
2013/10/14 职场文书
入党积极分子学习党的纲领思想汇报
2014/09/13 职场文书
大学军训的体会
2014/11/08 职场文书
2015年小学师德师风建设工作总结
2015/10/23 职场文书
幼儿园教师心得体会范文
2016/01/21 职场文书
用javascript制作qq注册动态页面
2021/04/14 Javascript