通过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 相关文章推荐
做网页的一些技巧(续)
Feb 01 Javascript
最近项目写了一些js,水平有待提高
Jan 31 Javascript
Javascript isArray 数组类型检测函数
Oct 08 Javascript
Javascript学习笔记2 函数
Jan 11 Javascript
JQuery优缺点分析说明
Apr 10 Javascript
IE6/7/8/9不支持exec的简写方式
May 25 Javascript
js判读浏览器是否支持html5的canvas的代码
Nov 18 Javascript
jQuery团购倒计时特效实现方法
May 07 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
Dec 11 Javascript
JS分页的实现(同步与异步)
Sep 16 Javascript
webpack之引入图片的实现及问题
Oct 08 Javascript
在vue中使用express-mock搭建mock服务的方法
Nov 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个人网站架设连环讲(二)
2006/10/09 PHP
zend framework文件上传功能实例代码
2013/12/25 PHP
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
PHP使用range协议实现输出文件断点续传代码实例
2014/07/04 PHP
FleaPHP框架数据库查询条件($conditions)写法总结
2016/03/19 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
Gird事件机制初级读本
2007/03/10 Javascript
使用js实现数据格式化
2014/12/03 Javascript
jQuery中height()方法用法实例
2014/12/24 Javascript
jquery实现一个简单的表单验证实例
2016/03/30 Javascript
Javascript中级语法快速入手
2016/07/30 Javascript
微信小程序 rpx 尺寸单位详细介绍
2016/10/13 Javascript
Bootstrap表单控件使用方法详解
2017/01/11 Javascript
JavaScript函数节流的两种写法
2017/04/07 Javascript
jQuery ajax调用webservice注意事项
2017/10/08 jQuery
浅谈MUI框架中加载外部网页或服务器数据的方法
2018/01/31 Javascript
vue form check 表单验证的实现代码
2018/12/09 Javascript
详解vuex中action何时完成以及如何正确调用dispatch的思考
2019/01/21 Javascript
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
2020/02/03 Javascript
[40:13]Ti4 冒泡赛第二天 iG vs NEWBEE 2
2014/07/15 DOTA
[01:02:04]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
django自定义Field实现一个字段存储以逗号分隔的字符串
2014/04/27 Python
Python中条件判断语句的简单使用方法
2015/08/21 Python
Python编程中归并排序算法的实现步骤详解
2016/05/04 Python
Python MySQL数据库连接池组件pymysqlpool详解
2017/07/07 Python
python实现朴素贝叶斯算法
2018/11/19 Python
python requests post多层字典的方法
2018/12/27 Python
python 并发编程 非阻塞IO模型原理解析
2019/08/20 Python
关于Pytorch的MLP模块实现方式
2020/01/07 Python
如何使用localstorage代替cookie实现跨域共享数据问题
2018/04/18 HTML / CSS
GEOX鞋美国官方网站:意大利会呼吸的鞋
2017/07/12 全球购物
size?法国官网:英国伦敦的球鞋精品店
2020/03/15 全球购物
大学生收银员求职信分享
2014/01/02 职场文书
一个独生女的故事观后感
2015/06/04 职场文书
导游词之山东红叶谷
2019/10/31 职场文书
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL