讓html元素隨瀏覽器的大小自適應(yīng)垂直居中的實(shí)現(xiàn)方法
表格可以實(shí)現(xiàn)td中的元素垂直居中顯示,但是前提條件必須定義td的高才可行。
但是很多時(shí)候會(huì)用到元素跟隨瀏覽器的大小垂直居中,如在制作展示官網(wǎng)、活動(dòng)展示網(wǎng)等等的時(shí)候。
問題:
實(shí)現(xiàn)div垂直居中并在縮放瀏覽器尺寸的時(shí)候仍然居中。
解決方案:
1、瀏覽器可視區(qū)域的高度-元素的高度/2 = 元素距離瀏覽器可視區(qū)域頂部的距離。
(bodyHeight – divHeight)/2
2、瀏覽器可視區(qū)域如果小于元素的高度,即元素距離瀏覽器可視區(qū)域頂部的距離為零。
3、onresize()當(dāng)瀏覽器的尺寸改變的時(shí)候觸發(fā)事件。使用onresize()每次改變的時(shí)候,重新計(jì)算一下元素到頂部的距離。
實(shí)現(xiàn)代碼:
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);
}
注意事項(xiàng):
根據(jù)瀏覽器的不同onresize被觸發(fā)的次數(shù)都不相同,因此處理的時(shí)候要格外小心。
以上就是小編為大家?guī)淼淖宧tml元素隨瀏覽器的大小自適應(yīng)垂直居中的實(shí)現(xiàn)方法全部內(nèi)容了,希望大家多多支持腳本之家~
相關(guān)文章
JavaScript中常用的簡(jiǎn)潔高級(jí)技巧總結(jié)
這篇文章主要給大家總結(jié)介紹了關(guān)于JavaScript中常用的簡(jiǎn)潔高級(jí)技巧,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Javascript具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
livereload工具實(shí)現(xiàn)前端可視化開發(fā)【推薦】
本文將介紹一個(gè)工具--livereload。這是一款能根據(jù)你本地文件(html、css、js)的變化,自動(dòng)跟蹤刷新瀏覽器的實(shí)時(shí)刷新工具,有了這個(gè)工具,會(huì)大大減輕你刷新頁面的工作量。下面跟著小編一起來看下吧2016-12-12
環(huán)形加載進(jìn)度條封裝(Vue插件版和原生js版)
這篇文章主要為大家詳細(xì)介紹了環(huán)形加載進(jìn)度條封裝,Vue插件版,原生js版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
JS基礎(chǔ)之undefined與null的區(qū)別分析
在JavaScript開發(fā)中,被人問到:null與undefined到底有啥區(qū)別?一時(shí)間不好回答,特別是undefined,因?yàn)檫@涉及到undefined的實(shí)現(xiàn)原理。2011-08-08

