设置div层在屏幕的绝对居中

本文介绍了一种实现网页元素精确居中及内部子元素再居中的方法,包括如何根据浏览器窗口尺寸调整元素位置,并探讨了不同CSS定位属性的作用与区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 var myWidth = 0, myHeight = 0;
if (typeof (window.innerWidth) == "number") {
        myWidth = window.innerWidth;
        myHeight = window.innerHeight;
    } else {
        if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
            myWidth = document.documentElement.clientWidth;
            myHeight = document.documentElement.clientHeight;
        } else {
            if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
                myWidth = document.body.clientWidth;
                myHeight = document.body.clientHeight;
            }
        }
    }
//var left =(myWidth - target.clientWidth) / 2+"px";
//var top =(myHeight - target.clientHeight) / 2 + document.documentElement.scrollTop+"px";
//alert(myWidth);
//var left =(myWidth - 100) / 2;//+"px";
//var top =(myHeight - 100) / 2 + document.documentElement.scrollTop;//+"px";

 

var left =( (window.screen.width -303  ) /2);
var top = ( (window.screen.height -284  ) /2);
//var Right = left + 303;
//var Bottom = top + 284;
//alert(left);
//alert(Right);
//alert(top);
//alert(Bottom);
var Left2 = ((303-169)/2 );
//( parseInt(left) + (303-169)/2 );
var Top2 =  ((284-67)/2 );

所以如果我有一个位于中间的层的同时又有一个位于该层中间的层的话,应该计算的是该层相对于父层的相对位置,所以上面的脚本实现的是父层的宽度是303,高是284,那么屏幕的分辨率减去宽和高除以2就是该层的居中位置,子层的位置是该层的宽和高减去子层的宽169和高67除以2即得到子层的中心位置.

 

如果父div的position定义为relative,子div的position定义为absolute,那么子div的style.left的值是相对于父div的值,这同offsetLeft是相同的,区别在于:

1. style.left 返回的是字符串,如28px,offsetLeft返回的是数值28,如果需要对取得的值进行计算,还用offsetLeft比较方便。

2. style.left是读写的,offsetLeft是只读的,所以要改变div的位置,只能修改style.left。

3. style.left的值需要事先定义,否则取到的值为空。而且必须要定义在html里,我做过试验,如果定义在css里,style.left的值仍然 为空,这就是我刚开始碰到的问题,总是取不到style.left的值。offsetLeft则仍然能够取到,无需事先定义div的位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值