使用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页面不刷新时全选择,全删除(GridView)
Apr 14 Javascript
AlertBox 弹出层信息提示框效果实现步骤
Oct 11 Javascript
js如何判断不同系统的浏览器类型
Oct 28 Javascript
jqgrid 编辑添加功能详细解析
Nov 08 Javascript
js弹出div并显示遮罩层
Feb 12 Javascript
JQuery实现当鼠标停留在某区域3秒后自动执行
Sep 09 Javascript
JS二叉树的简单实现方法示例
Apr 05 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
Jul 27 Javascript
详解Vue + Vuex 如何使用 vm.$nextTick
Nov 20 Javascript
Angular2开发环境搭建教程之VS Code
Dec 15 Javascript
详解Vue中数组和对象更改后视图不刷新的问题
Sep 21 Javascript
JS如何实现在弹出窗口中加载页面
Dec 03 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
改进的IP计数器
2006/10/09 PHP
php三维数组去重(示例代码)
2013/11/26 PHP
PHP示例演示发送邮件给某个邮箱
2019/04/03 PHP
php apache开启跨域模式过程详解
2019/07/08 PHP
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
jQuery Ajax 全解析
2009/02/08 Javascript
jquery 跳到顶部和底部动画2句代码简单实现
2013/07/18 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
浅析$(function) ready和onload 的区别
2016/09/03 Javascript
javascript 分号总结及详细介绍
2016/09/24 Javascript
jquery实现文本框的禁用和启用
2016/12/07 Javascript
详解vue-cli 3.0 build包太大导致首屏过长的解决方案
2018/11/10 Javascript
vue缓存的keepalive页面刷新数据的方法
2019/04/23 Javascript
你或许不知道的一些npm实用技巧
2019/07/04 Javascript
nodeJs的安装与npm全局环境变量的配置详解
2020/01/06 NodeJs
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
用python实现的可以拷贝或剪切一个文件列表中的所有文件
2009/04/30 Python
python Django框架实现自定义表单提交
2016/03/25 Python
python之pandas用法大全
2018/03/13 Python
django请求返回不同的类型图片json,xml,html的实例
2018/05/22 Python
Python爬虫框架Scrapy常用命令总结
2018/07/26 Python
Python 解决相对路径问题:&quot;No such file or directory&quot;
2020/06/05 Python
python爬虫泛滥的解决方法详解
2020/11/25 Python
Django 用户认证Auth组件的使用
2020/11/30 Python
英国香水店:The Perfume Shop
2017/03/27 全球购物
《兰亭集序》教学反思
2014/02/11 职场文书
暑期社会实践先进个人主要事迹
2014/05/22 职场文书
企业宣传口号
2014/06/12 职场文书
普通党员个人剖析材料
2014/10/08 职场文书
学习十八届四中全会精神思想汇报
2014/10/23 职场文书
大学生受助感言
2015/08/01 职场文书
《金色的草地》教学反思
2016/02/17 职场文书
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python
Django程序的优化技巧
2021/04/29 Python
Redisson实现Redis分布式锁的几种方式
2021/08/07 Redis