通过JavaScript使Div居中并随网页大小改变而改变


Posted in Javascript onJune 24, 2013

在使用Java做后台的时候,都会做到登录的页面,但是自己的页面太难看了,要居中没居中,要颜色没颜色,但是无论是怎么样都得使登录的框居中吧!以前的想法是通过CSS+Div使div居中,但是现在的想法变了,通过JavaScript可以简单的使Div在页面上居中,随着网页大小的改变做出相应的改变。而且只要明白了居中的原理轻而易举的就可以实现了。
先看一下居中的原理吧!
先看一张图。
通过JavaScript使Div居中并随网页大小改变而改变 
从图中看到了什么?可以看到红色的框居中了,为什么会居中呢?通过观察可以发现红框的上下的蓝色的间距线是一样长的,这样可以确保了垂直居中,红框的左右的绿色间距线也是一样长的,这样可以确保了水平居中。
但是怎么使上下的间距相等呢?左右的间距相等呢?
在看一张图:
通过JavaScript使Div居中并随网页大小改变而改变 
假设当前网页的高为350px,宽为400px,而红框的高为150px,宽为200px,我们可以发现网页的高减去红框元素的高得到200px像素,而这200px像素正是上下边距的总和,上下边距各得到了100px,同理,左右也是一样的。
有没有感觉到什么?
如果我们知道了网页元素的高或宽,减去元素的高或宽,然后在除以2,就得到了上下左右边距的距离。我们通常给元素的定位是怎么定的呢?不都是通过top和left的坐标定的吗?那么现在红框的坐标是什么呢?
再看一张图:
通过JavaScript使Div居中并随网页大小改变而改变 
红色框的坐标是蓝色的上线100px,和绿色的左线100px,即left和top的值,这两个值不是算出来的吗?
可以总结一个公式:
居中的元素的top =(网页高 ?元素的高)/ 2;
居中的元素的left= (网页宽 ?元素的宽) /2;
转化为JavaScript的语法为:
top = (document.body.clientHeight - element.offsetHeight)/2;
left = (document.body.clientWidth - element.offsetWidth)/2
获取到top和left的坐标不就居中了。
以下是居中的完整代码:
这里要注意几个问题,要设置元素的position的属性为absolute,即绝对定位,然后添加两个事件onload和onresize,要加上px的字符串,offsetHeight是获取元素自身的高,offsetWidth是获取元素自身的宽,这就是当网页加载时和改变大小时div都会居中。不过这种做法是居中的元素和网页的居中,如果想要一个元素在另一个元素的内部居中的话,原理是一样的。我们只需要将网页的宽和高的代码改为另一个元素的宽和高的代码就行了。另一个元素的宽和高可以通过获取到当前元素的parent元素的高和宽。这样也是可以居中的。如果用jquery这个框架,那么代码就更简单了。
转载请指明出处。

Javascript 相关文章推荐
javascript fullscreen全屏实现代码
Apr 09 Javascript
div+css布局的图片连续滚动js实现代码
May 04 Javascript
javascript之querySelector和querySelectorAll使用说明
Oct 09 Javascript
浅谈Sublime Text 3运行JavaScript控制台
Jun 06 Javascript
纯js实现html转pdf的简单实例(推荐)
Feb 16 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
Aug 16 Javascript
详解使用Vue Router导航钩子与Vuex来实现后退状态保存
Sep 11 Javascript
template.js前端模板引擎使用详解
Oct 10 Javascript
Element-ui table中过滤条件变更表格内容的方法
Mar 02 Javascript
js运算符的一些特殊用法
Jul 29 Javascript
vue封装一个简单的div框选时间的组件的方法
Jan 06 Javascript
在小程序中推送模板消息的实现方法
Jul 22 Javascript
jquery入门必备的基本认识及实例(整理)
Jun 24 #Javascript
jquery必须知道的一些常用特效方法及使用示例(整理)
Jun 24 #Javascript
解析js如何获取当前url中的参数值并复制给input
Jun 23 #Javascript
Ajax异步提交表单数据的说明及方法实例
Jun 22 #Javascript
JS localStorage实现本地缓存的方法
Jun 22 #Javascript
js获取某月的最后一天日期的简单实例
Jun 22 #Javascript
js遍历、动态的添加数据的小例子
Jun 22 #Javascript
You might like
php中的curl使用入门教程和常见用法实例
2014/04/10 PHP
ThinkPHP的Widget扩展实例
2014/06/19 PHP
PHP面向对象程序设计组合模式与装饰模式详解
2016/12/02 PHP
php中的抽象方法和抽象类
2017/02/14 PHP
关于laravel 子查询 & join的使用
2019/10/16 PHP
php 多个变量指向同一个引用($b = &$a)用法分析
2019/11/13 PHP
jQuery Tab插件 用于在Tab中显示iframe,附源码和详细说明
2011/06/27 Javascript
jquery结合CSS使用validate实现漂亮的验证
2015/01/29 Javascript
完善的jquery处理机制
2016/02/21 Javascript
深入理解MVC中的时间js格式化
2016/05/19 Javascript
bootstrap table使用入门基本用法
2017/05/24 Javascript
js轮播图无缝滚动效果
2017/06/17 Javascript
详解基于vue-router的动态权限控制实现方案
2017/09/28 Javascript
浅谈Webpack打包优化技巧
2018/06/12 Javascript
详解swipe使用及竖屏页面滚动方法
2018/06/28 Javascript
微信小程序实现左滑动删除效果
2020/03/30 Javascript
vue中利用iscroll.js解决pc端滚动问题
2020/02/15 Javascript
Python验证码识别的方法
2015/07/10 Python
详谈python3中用for循环删除列表中元素的坑
2018/04/19 Python
Python获取对象属性的几种方式小结
2020/03/12 Python
Python json读写方式和字典相互转化
2020/04/18 Python
python re的findall和finditer的区别详解
2020/11/15 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
Book Depository澳大利亚:世界领先的专业在线书店之一
2018/12/27 全球购物
什么是URL
2015/12/13 面试题
在职研究生自我鉴定
2013/10/16 职场文书
拉拉队口号
2014/06/16 职场文书
资产运营委托书范本
2014/10/16 职场文书
三提三创主题教育活动查摆整改措施
2014/10/25 职场文书
乐山大佛导游词
2015/02/02 职场文书
校本研修个人总结
2015/02/28 职场文书
个人年终总结范文
2015/03/09 职场文书
乡镇科协工作总结2015
2015/05/19 职场文书
黑白记忆观后感
2015/06/18 职场文书
如何写好一份优秀的工作总结?
2019/06/21 职场文书
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python