让html元素随浏览器的大小自适应垂直居中的实现方法


Posted in Javascript onOctober 12, 2016

表格可以实现td中的元素垂直居中显示,但是前提条件必须定义td的高才可行。

但是很多时候会用到元素跟随浏览器的大小垂直居中,如在制作展示官网、活动展示网等等的时候。

问题:

实现div垂直居中并在缩放浏览器尺寸的时候仍然居中。

解决方案:

1、浏览器可视区域的高度-元素的高度/2 = 元素距离浏览器可视区域顶部的距离。
(bodyHeight ? divHeight)/2

2、浏览器可视区域如果小于元素的高度,即元素距离浏览器可视区域顶部的距离为零。

3、onresize()当浏览器的尺寸改变的时候触发事件。使用onresize()每次改变的时候,重新计算一下元素到顶部的距离。

实现代码:

function divMiddle(){
	var dairyBox = document.getElementById('dairyBox');
	var divHeight = dairyBox.offsetHeight;
	var bodyHeight = document.body.offsetHeight;
	if(bodyHeight > divHeight){
		var endHeight = parseInt(bodyHeight - divHeight)/2;
		dairyBox.style.marginTop = endHeight + "px";
	}else{
		dairyBox.style.marginTop = 0;
		dairyBox.style.top = 0;
	}
}
            
if(document.all){
	window.attachEvent('onload',divMiddle);
}else{
	window.addEventListener('load',divMiddle,false);
}
             
var resizeTimer = null;
window.onresize = function(){
	resizeTimer = resizeTimer?null:setTimeout(divMiddle,0);
}

注意事项:

根据浏览器的不同onresize被触发的次数都不相同,因此处理的时候要格外小心。

以上就是小编为大家带来的让html元素随浏览器的大小自适应垂直居中的实现方法全部内容了,希望大家多多支持三水点靠木~

Javascript 相关文章推荐
prototype 1.5 & scriptaculous 1.6.1 学习笔记
Sep 07 Javascript
入门基础学习 ExtJS笔记(一)
Nov 11 Javascript
Javascript中的回调函数和匿名函数的回调示例介绍
May 12 Javascript
JavaScript保留关键字汇总
Dec 01 Javascript
JavaScript中将数组进行合并的基本方法讲解
Mar 07 Javascript
JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码
Aug 18 Javascript
vue-ajax小封装实例
Sep 18 Javascript
3种vue组件的书写形式
Nov 29 Javascript
vue项目中导入swiper插件的方法
Jan 30 Javascript
Vue 中使用 CSS Modules优雅方法
Apr 09 Javascript
微信小程序中悬浮窗功能的实现代码
Aug 02 Javascript
Vue循环遍历选项赋值到对应控件的实现方法
Jun 22 Javascript
Angularjs手动解析表达式($parse)
Oct 12 #Javascript
js利用clipboardData实现截屏粘贴功能
Oct 12 #Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
Oct 12 #Javascript
jQuery给指定的table动态添加删除行的操作方法
Oct 12 #Javascript
详解Javascript中的原型OOP
Oct 12 #Javascript
浅析BootStrap Treeview的简单使用
Oct 12 #Javascript
jquery自定义表单验证插件
Oct 12 #Javascript
You might like
php生成WAP页面
2006/10/09 PHP
一个php短网址的生成代码(仿微博短网址)
2014/05/07 PHP
用js实现输入提示(自动完成)的实例代码
2013/06/14 Javascript
js用正则表达式来验证表单(比较齐全的资源)
2013/11/17 Javascript
php析构函数的具体用法小结
2014/03/11 Javascript
jQuery选择器之基本选择器与层次选择器
2015/03/03 Javascript
javascript实现网页字符定位的方法
2015/07/14 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
javascript基础知识讲解
2017/01/11 Javascript
Angular实现跨域(搜索框的下拉列表)
2017/02/16 Javascript
react-native DatePicker日期选择组件的实现代码
2017/09/12 Javascript
利用jQuery+localStorage实现一个简易的计时器示例代码
2017/12/25 jQuery
Vue进度条progressbar组件功能
2018/04/17 Javascript
webpack4 入门最简单的例子介绍
2018/09/05 Javascript
vue绑定事件后获取绑定事件中的this方法
2018/09/15 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
如何使用vuex实现兄弟组件通信
2018/11/02 Javascript
详解javascript replace高级用法
2019/02/17 Javascript
浅谈layer的Icon样式以及一些常用的layer窗口使用方法
2019/09/11 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
2020/07/26 Javascript
python通过配置文件共享全局变量的实例
2019/01/11 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
Python爬虫开发与项目实战
2020/12/16 Python
澳大利亚最超值的自行车之家:Reid Cycles
2019/03/24 全球购物
销售业务实习自我鉴定
2013/09/23 职场文书
京剧自荐信
2014/01/26 职场文书
小学英语课后反思
2014/04/26 职场文书
开工仪式策划方案
2014/05/23 职场文书
党的生日活动方案
2014/08/15 职场文书
忠犬八公的故事观后感
2015/06/05 职场文书
电视新闻稿
2015/07/17 职场文书
2019个人半年工作总结
2019/06/21 职场文书
Python机器学习之基础概述
2021/05/19 Python
Redis缓存-序列化对象存储乱码问题的解决
2021/06/21 Redis
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL