通过jquery获取元素宽高时,此元素必须明确定义了宽高或已经被追加到页面中,否则返回的宽高都是0

本文探讨了使用纯JS生成的动态组件如何实现居中显示的问题。作者在实践中遇到组件尺寸获取为0的情况,并分享了两种解决方案:一是通过隐藏、定位再显示的方法;二是直接在CSS中指定尺寸。

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

如题。

今天写一个组件,完全由js生成,生成后想将其定位在页面中央。 这就需要获取窗口的宽高和组件的宽高。

该组件的宽高均为auto,根据生成内容的多少自适应。

然后生成完之后, 渲染到页面上之前,想通过css({top:yy,left:xx})给它定位,然后再append到body中。

可结果是我得到的它的宽和高(通过outerWidth()和outerHeight())都是0.

后来发现有两种解决方法:

   1. 先将组件hide(),并appendTo(body),然后定位,然后再show()出来:

         $component.hide().appendTo($('body'));

        locate($component).show(); //locate()方法返回$component以便链式编程

   2. 在css中指定组件的宽高,但这种做法比较局限,只能适用一种规格的宽高,不适用于我这种情况,所以我选择方式1.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值