layer实现弹出层⾃动调节位置
项⽬中有弹出层的内容是不固定的,根据情况可能变长变短,于是就要求做layer弹出层的⼤⼩⾃适应,查询了api后发现
layer.iframeAuto⽅法可以实现,这⾥吐槽⼀点,ie浏览器的html没有被body撑⼤,⽽iframeAuto⽅法是根据html的⾼度计算的,导致我之前出现在ie下,调⽤iframeAuto后⾼度直接变零。
好了,做好了这⼀点之后,测试⼜提出⼀个问题,因为他是⽤⼩屏幕测试的,上⾯的位置没有变,弹出层变长以后按钮就被挤到下⾯去了。所以我需要做⼀个效果,在弹出层长度改变后重新居中。
这时我就在⽹上开始资料了,发现layer.style可以实现这个效果,但是很⿇烦需要计算然后赋值。
正当我决定⽤这个⽅案时,结果我在chrome控制台测试layer.style时发现⼀个意外的效果。当我移动控制台边界改变⼤⼩时,弹出层⾃动居中了。
html自动弹出公告代码移动前
移动后
实际上是触发了⽗层的$(window).resize()。
然后我开始向这个⽅法实验,但是不管是$(top.window).resize(),$(p).resize(),top.$(window).resize(),$(top).resize()都不能触发top层的$(window).resize()⽅法。
最后还是没有成功,我只好重新使⽤layer.style来计算了
var index = FrameIndex(window.name);//获得layer弹出层索引
top.layer.iframeAuto(index, 30);//layer弹出层⾃适应,改造的代码,源代码加上⾃⼰加的⾼度
var topHeight = ($(top.window).height() - $(window).height())/2;//计算⾼度
top.layer.style(index,{top:topHeight+"px"});//设置弹出层位置
中规中矩解决这个问题,不过还是不知道在弹出层是否能够调⽤⽗页⾯的$(window).resize()
完!
以上这篇layer实现弹出层⾃动调节位置就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论