通过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 数组循环引起的思考
Jan 01 Javascript
javascript中的startWith和endWith的几种实现方法
May 07 Javascript
Query中click(),bind(),live(),delegate()的区别
Nov 19 Javascript
JQuery中DOM实现事件移除的方法
Jun 13 Javascript
js表单元素checked、radio被选中的几种方法(详解)
Aug 22 Javascript
JavaScript 计算笛卡尔积实例详解
Dec 02 Javascript
javascript添加前置0(补零)的几种方法
Jan 05 Javascript
使用JavaScriptCore实现OC和JS交互详解
Mar 28 Javascript
jquery ztree实现右键收藏功能
Nov 20 jQuery
中高级前端必须了解的JS中的内存管理(推荐)
Jul 04 Javascript
jquery将json转为数据字典的实例代码
Oct 11 jQuery
vue@cli3项目模板怎么使用public目录下的静态文件
Jul 07 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获取post中的json数据的实现方法
2011/06/08 PHP
php 面试碰到过的问题 在此做下记录
2011/06/09 PHP
php微信公众号开发之简答题
2018/10/20 PHP
laravel执行php artisan migrate报错的解决方法
2019/10/09 PHP
屏蔽F1~F12的快捷键的js函数
2010/05/06 Javascript
JQuery将文本转化成JSON对象需要注意的问题
2011/05/09 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
$.each与$().each的区别示例介绍
2014/03/20 Javascript
js取整数、取余数的方法
2014/05/11 Javascript
JavaScript获得页面base标签中url的方法
2015/04/03 Javascript
IE6兼容透明背景图片及解决方案
2015/08/19 Javascript
JS实现超精简的链接列表在固定区域内滚动效果代码
2015/11/04 Javascript
bootstrap3 dialog 更强大、更灵活的模态框
2017/04/20 Javascript
JavaScript原型继承_动力节点Java学院整理
2017/06/30 Javascript
js实现图片懒加载效果
2017/07/17 Javascript
深入浅出理解JavaScript高级定时器原理与用法
2018/08/02 Javascript
Vue 实时监听窗口变化 windowresize的两种方法
2018/11/06 Javascript
详解Vue.js自定义tipOnce指令用法实例
2018/12/19 Javascript
Element-ui DatePicker显示周数的方法示例
2019/07/19 Javascript
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
[58:35]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
Python实现将n个点均匀地分布在球面上的方法
2015/03/12 Python
优化Python代码使其加快作用域内的查找
2015/03/30 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
2018/04/23 Python
Django REST Framework序列化外键获取外键的值方法
2019/07/26 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
2020/03/23 Python
Python生成器传参数及返回值原理解析
2020/07/22 Python
pycharm永久激活超详细教程
2020/10/29 Python
英国婴儿和儿童服装网站:Vertbaudet
2018/04/02 全球购物
荣耀俄罗斯官网:HONOR俄罗斯
2020/10/31 全球购物
个人简历自荐信
2013/12/05 职场文书
银行办理业务介绍信
2014/01/18 职场文书
质量月活动策划方案
2014/03/10 职场文书
财务总监岗位职责
2015/02/03 职场文书
数学教师求职信范文
2015/03/20 职场文书
Go归并排序算法的实现方法
2022/04/06 Golang