通过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 相关文章推荐
页面实时更新时间的JS实例代码
Dec 18 Javascript
jquery中的常用事件bind、hover、toggle等示例介绍
Jul 21 Javascript
轻松掌握JavaScript中介者模式
Aug 26 Javascript
AngularJS过滤器filter用法总结
Dec 13 Javascript
JS身份证信息验证正则表达式
Jun 12 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
Dec 07 Javascript
JS代码实现电脑配置检测功能
Mar 21 Javascript
windows实现npm和cnpm安装步骤
Oct 24 Javascript
javascript/jquery实现点击触发事件的方法分析
Nov 11 jQuery
解决Layui 表格自适应高度的问题
Nov 15 Javascript
通过微信公众平台获取公众号文章的方法示例
Dec 25 Javascript
Vue自动构建发布脚本的方法示例
Jul 24 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
DC动画电影《黑暗正义联盟》曝预告 5月5日上线数字平台
2020/04/09 欧美动漫
全面解析PHP验证码的实现原理 附php验证码小案例
2016/08/17 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
JQuery 将元素显示在屏幕的中央的代码
2010/02/27 Javascript
javascript 判断数组是否已包含了某个元素的函数
2010/05/30 Javascript
jQuery使用ajaxSubmit()提交表单示例
2014/04/04 Javascript
JavaScript中的console.profile()函数详细介绍
2014/12/29 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
分析js闭包引起的事件注册问题
2016/03/29 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
2016/06/15 Javascript
Vue数据驱动模拟实现2
2017/01/11 Javascript
Vue系列:通过vue-router如何传递参数示例
2017/01/16 Javascript
详解Javascript中DOM的范围
2017/02/13 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
2017/09/19 jQuery
NodeJS实现视频转码的示例代码
2017/11/18 NodeJs
nodejs使用http模块发送get与post请求的方法示例
2018/01/08 NodeJs
浅谈Angular单元测试总结
2019/03/22 Javascript
微信小程序封装的HTTP请求示例【附升级版】
2019/05/11 Javascript
通过vue手动封装on、emit、off的代码详解
2019/05/29 Javascript
js实现简易计算器功能
2019/10/18 Javascript
Element el-button 按钮组件的使用详解
2021/02/01 Javascript
Python通过select实现异步IO的方法
2015/06/04 Python
举例讲解Python设计模式编程的代理模式与抽象工厂模式
2016/01/16 Python
Python学习小技巧之利用字典的默认行为
2017/05/20 Python
Flask模板引擎之Jinja2语法介绍
2019/06/26 Python
Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签
2019/12/04 Python
PyTorch中反卷积的用法详解
2019/12/30 Python
python tkinter之顶层菜单、弹出菜单实例
2020/03/04 Python
Pyqt5 关于流式布局和滚动条的综合使用示例代码
2020/03/24 Python
python如何判断IP地址合法性
2020/04/05 Python
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
新护士岗前培训制度
2014/02/02 职场文书
小学教师师德师风个人整改措施
2014/09/18 职场文书
2014年社区党建工作汇报材料
2014/11/02 职场文书
天坛导游词
2015/02/02 职场文书
获奖感言范文
2015/07/31 职场文书