通过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 弹出层注册页面等(asp.net后台)
Jun 17 Javascript
深入理解JavaScript系列(14) 作用域链介绍(Scope Chain)
Apr 12 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
Jan 29 Javascript
javascript替换已有元素replaceChild()使用介绍
Apr 03 Javascript
js生成的验证码的实现与技术分析
Sep 17 Javascript
react-router中的属性详解
Jun 01 Javascript
微信小程序使用modal组件弹出对话框功能示例
Nov 29 Javascript
详解基于Vue的支持数据双向绑定的select组件
Sep 02 Javascript
Vue.js组件通信之自定义事件详解
Oct 19 Javascript
vue缓存之keep-alive的理解和应用详解
Nov 02 Javascript
详解vue 组件注册
Nov 20 Vue.js
Javascript webpack动态import
Apr 19 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
PHPMailer 中文使用说明小结
2010/01/22 PHP
CodeIgniter配置之SESSION用法实例分析
2016/01/19 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
详解php用static方法的原因
2018/09/12 PHP
多个Laravel项目如何共用migrations详解
2018/09/25 PHP
JS数学函数Exp使用说明
2012/08/09 Javascript
js获取多个tagname的节点数组
2013/09/22 Javascript
JS格式化数字金额用逗号隔开保留两位小数
2013/10/18 Javascript
浅析node.js中close事件
2014/11/26 Javascript
JavaScript分析、压缩工具JavaScript Analyser
2014/12/31 Javascript
JavaScript生成的动态下雨背景效果实现方法
2015/02/25 Javascript
HTML+CSS+JS实现完美兼容各大浏览器的TABLE固定列
2015/04/26 Javascript
JS选项卡动态替换banner图片路径的方法
2015/05/11 Javascript
javascript框架设计之类工厂
2015/06/23 Javascript
纯css实现窗户玻璃雨滴逼真效果
2015/08/23 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
深入理解javascript函数参数与闭包
2016/12/12 Javascript
Angular排序实例详解
2017/06/28 Javascript
NodeJS实现图片上传代码(Express)
2017/06/30 NodeJs
微信小程序使用video组件播放视频功能示例【附源码下载】
2017/12/08 Javascript
iview tabs 顶部导航栏和模块切换栏的示例代码
2019/03/04 Javascript
vue指令之表单控件绑定v-model v-model与v-bind结合使用
2019/04/17 Javascript
移动端底部导航固定配合vue-router实现组件切换功能
2019/06/13 Javascript
swiper4实现移动端导航切换
2020/10/16 Javascript
Vue数据双向绑定原理实例解析
2020/05/15 Javascript
Vue-cli 移动端布局和动画使用详解
2020/08/10 Javascript
vue+iview实现文件上传
2020/11/17 Vue.js
python数据库编程 Mysql实现通讯录
2020/03/27 Python
python模拟点击在ios中实现的实例讲解
2020/11/26 Python
日本快乐生活方式购物网站:Shop Japan
2018/07/17 全球购物
人事助理岗位职责
2013/11/18 职场文书
青岛导游词
2015/02/12 职场文书
写给女朋友的保证书
2015/05/09 职场文书
2016年五一国际劳动节活动总结
2016/04/06 职场文书
2019财务管理制度最新范本!
2019/07/09 职场文书
Python 数据可视化神器Pyecharts绘制图像练习
2022/02/28 Python