使用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 相关文章推荐
extjs中form与grid交互数据(record)的方法
Aug 29 Javascript
javascript仿php的print_r函数输出json数据
Sep 13 Javascript
Javascript动态引用CSS文件的2种方法介绍
Jun 06 Javascript
node.js中的console.assert方法使用说明
Dec 10 Javascript
node.js中的fs.close方法使用说明
Dec 17 Javascript
jQuery结合CSS制作动态的下拉菜单
Oct 27 Javascript
Bootstrap图片轮播组件使用实例解析
Jun 30 Javascript
javascript中setAttribute兼容性用法分析
Dec 12 Javascript
使用JavaScript触发过渡效果的方法
Jan 19 Javascript
函数式编程入门实践(一)
Apr 20 Javascript
JavaScript碰撞检测原理及其实现代码
Mar 12 Javascript
JS实现小米轮播图
Sep 21 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 函数使用方法与函数定义方法
2010/05/09 PHP
php 利用array_slice函数获取随机数组或前几条数据
2015/09/30 PHP
jqgrid 编辑添加功能详细解析
2013/11/08 Javascript
Node.js 应用跑得更快 10 个技巧
2016/04/03 Javascript
JavaScript函数柯里化详解
2016/04/29 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
Javascript中indexOf()和lastIndexOf应用方法实例
2016/08/24 Javascript
利用Node.js编写跨平台的spawn语句详解
2017/02/12 Javascript
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
Vue实现搜索 和新闻列表功能简单范例
2018/03/16 Javascript
详解Axios统一错误处理与后置
2018/09/26 Javascript
layui 实现表单和文件上传一起传到后台的例子
2019/09/16 Javascript
在vue中利用全局路由钩子给url统一添加公共参数的例子
2019/11/01 Javascript
python改变日志(logging)存放位置的示例
2014/03/27 Python
Python学习小技巧之利用字典的默认行为
2017/05/20 Python
Django-Rest-Framework 权限管理源码浅析(小结)
2018/11/12 Python
Django Celery异步任务队列的实现
2019/07/24 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
2019/11/29 Python
python 实现简单的FTP程序
2019/12/27 Python
关于Tensorflow 模型持久化详解
2020/02/12 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
2021/01/28 Python
CSS3中Transition动画属性用法详解
2016/07/04 HTML / CSS
微软澳洲官方网站:Microsoft Australia
2017/01/10 全球购物
迪卡侬英国官网:Decathlon英国
2017/04/08 全球购物
墨尔本复古时尚品牌:Dangerfield
2018/12/12 全球购物
材料采购员岗位职责
2013/12/17 职场文书
技能比武方案
2014/05/21 职场文书
清正廉洁演讲稿
2014/05/22 职场文书
青年志愿者活动方案
2014/08/17 职场文书
酒店财务经理岗位职责
2015/04/08 职场文书
2016国庆节67周年红领巾广播稿
2015/12/18 职场文书
电力安全学习心得体会
2016/01/18 职场文书
导游词之山东孔庙
2019/11/04 职场文书
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android
详解NumPy中的线性关系与数据修剪压缩
2022/05/25 Python
MySQL外键约束(Foreign Key)案例详解
2022/06/28 MySQL