通过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 相关文章推荐
JQuery 实现的页面滚动时浮动窗口控件
Jul 10 Javascript
可以用鼠标拖动的DIV实现思路及代码
Oct 21 Javascript
javascript eval(func())使用示例
Dec 05 Javascript
JS模式之简单的订阅者和发布者模式完整实例
Jun 30 Javascript
Javascript复制实例详解
Jan 28 Javascript
javascript实现简单计算器效果【推荐】
Apr 19 Javascript
JavaScript中的继承之类继承
May 01 Javascript
canvas红包照片实例分享
Feb 28 Javascript
js实现带三角符的手风琴效果
Mar 01 Javascript
正则表达式基本语法及表单验证操作详解【基于JS】
Apr 07 Javascript
vue设置导航栏、侧边栏为公共页面的例子
Nov 01 Javascript
用vue 实现手机触屏滑动功能
May 28 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
星际玩家的三大定律
2020/03/04 星际争霸
php判断ip黑名单程序代码实例
2014/02/24 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
JavaScript null和undefined区别分析
2009/10/14 Javascript
jQuery 学习6 操纵元素显示效果的函数
2010/02/07 Javascript
jquery插件之easing使用
2010/08/19 Javascript
jquery文字上下滚动的实现方法
2013/03/22 Javascript
js局部刷新页面时间具体实现
2013/07/04 Javascript
js实现背景图片感应鼠标变化的方法
2015/02/28 Javascript
用JS生成UUID的方法实例
2016/03/30 Javascript
jQuery得到多个值只能用取Class ,不能用取ID的方法
2016/12/04 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
jQuery实现对象转为url参数的方法
2017/01/11 Javascript
判断横屏竖屏(三种)
2017/02/13 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
2020/07/21 Javascript
Python 执行字符串表达式函数(eval exec execfile)
2014/08/11 Python
Python实现基于HTTP文件传输实例
2014/11/08 Python
关于python的bottle框架跨域请求报错问题的处理方法
2017/03/19 Python
django创建自定义模板处理器的实例详解
2017/08/14 Python
Python中常见的异常总结
2018/02/20 Python
基于python神经卷积网络的人脸识别
2018/05/24 Python
详解Python 装饰器执行顺序迷思
2018/08/08 Python
解决pycharm运行时interpreter为空的问题
2018/10/29 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
2019/08/15 Python
Python 私有化操作实例分析
2019/11/21 Python
Keras实现DenseNet结构操作
2020/07/06 Python
pycharm2020.1.2永久破解激活教程,实测有效
2020/10/29 Python
html5使用canvas画空心圆与实心圆
2014/12/15 HTML / CSS
Canvas 像素处理之改变透明度的实现代码
2019/01/08 HTML / CSS
Vans荷兰官方网站:美国南加州的原创极限运动潮牌
2018/01/23 全球购物
Myprotein荷兰官网:欧洲第一运动营养品牌
2020/07/11 全球购物
为数据库创建索引都需要注意些什么
2012/07/17 面试题
成立公司计划书
2014/05/07 职场文书
优秀共产党员主要事迹材料
2015/11/05 职场文书
Python爬取英雄联盟MSI直播间弹幕并生成词云图
2021/06/01 Python