通过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 相关文章推荐
XRegExp 0.2: Now With Named Capture
Nov 30 Javascript
神奇的代码 通杀各种网站-可随意修改复制页面内容
Jul 17 Javascript
javascript 数组学习资料收集
Apr 11 Javascript
7个JS基础知识总结
Mar 05 Javascript
CSS中position属性之fixed实现div居中
Dec 14 Javascript
原生js实现键盘控制div移动且解决停顿问题
Dec 05 Javascript
利用javascript实现的三种图片放大镜效果实例(附源码)
Jan 23 Javascript
Javascript实现base64的加密解密方法示例
Jun 27 Javascript
详解VSCode配置启动Vue项目
May 14 Javascript
jQuery表单选择器用法详解
Aug 22 jQuery
vue iview的菜单组件Mune 点击不高亮的解决方案
Nov 01 Javascript
解决Can't find variable: SockJS vue项目的问题
Sep 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
初探PHP5
2006/10/09 PHP
PHP STRING 陷阱原理说明
2010/07/24 PHP
个人写的PHP验证码生成类分享
2014/08/21 PHP
laravel model模型定义实现开启自动管理时间created_at,updated_at
2019/10/17 PHP
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
2013/04/08 Javascript
JQuery中对Select的option项的添加、删除、取值
2013/08/25 Javascript
纯Javascript实现Windows 8 Metro风格实现
2013/10/15 Javascript
jquery对ajax的支持介绍
2013/12/10 Javascript
jQuery Validate 验证,校验规则写在控件中的具体实例
2014/02/27 Javascript
angularjs 实现带查找筛选功能的select下拉框实例
2017/01/11 Javascript
简单的渐变轮播插件
2017/01/12 Javascript
详解Vue 动态添加模板的几种方法
2017/04/25 Javascript
Vuejs 2.0 子组件访问/调用父组件的方法(示例代码)
2018/02/08 Javascript
如何从0开始用node写一个自己的命令行程序
2018/12/29 Javascript
微信小程序调用wx.getImageInfo遇到的坑解决
2020/05/31 Javascript
[43:57]LGD vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python多线程方式执行多个bat代码
2016/06/07 Python
python基于http下载视频或音频
2018/06/20 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
2019/06/19 Python
python画图——实现在图上标注上具体数值的方法
2019/07/08 Python
pandas read_excel()和to_excel()函数解析
2019/09/19 Python
Python调用scp向服务器上传文件示例
2019/12/22 Python
Maxpeedingrods美国:高性能汽车零件
2020/02/14 全球购物
俄罗斯游戏商店:Buka
2020/03/01 全球购物
应届生护士求职信
2013/11/01 职场文书
物流专业毕业生推荐信范文
2013/11/18 职场文书
正规的求职信范文分享
2013/12/11 职场文书
检查接待方案
2014/02/27 职场文书
建材投资建议书
2014/05/16 职场文书
火锅店的活动方案
2014/08/15 职场文书
高中语文教学反思范文
2016/02/16 职场文书
大学生党员暑假实践(活动总结)
2019/08/21 职场文书
解决Redis启动警告问题
2022/02/24 Redis
关于Nginx中虚拟主机的一些冷门知识小结
2022/03/03 Servers
Python中np.random.randint()参数详解及用法实例
2022/09/23 Python