layer自适应弹窗

本文介绍了在不使用node管理的Vue项目中,由于无法使用常见框架,面临layer弹窗动画导致高度计算错误的问题。通过指定area的height为auto并计算offset来定位弹窗位置,同时在弹窗成功后调整内部盒子高度,实现layer弹窗的自适应布局。
摘要由CSDN通过智能技术生成

问题情况

此问题发生原因很奇葩,我们公司的vue不使用node管理,而是用httpVueLoader插件支持vue,
这就导致我们用不了大部分的框架。vue项目一般来说使用现成的那些知名框架的弹窗比layer要好得多。

此问题出现在异步加载弹窗页面内容。
当我使用layer.open打开一个窗口,并且再去渲染一个组件页面时,内部content区域想自动撑开弹窗窗口高度。
此时layer的弹窗有三层,最外层layer-page盒子,第二层构造函数盒子,第三层content内容盒子。
其中第二层构造函数生成的盒子会自动获取弹窗打开时的content高度并写死height。

这就会有一个问题,layer弹窗有个半秒左右的动画,会导致获取到的高度不对。
网传方法清一色不知道从哪抄来的博客,写的让我头疼还不好使我也懒得贴了。
解决方法如下。指定区域area的高度部分为auto,这样写会导致弹窗顶边在屏幕50%高度处。
所以需要指定offset。首先获取浏览器显示区域高度,我以前的项目都是习惯打开80%90%宽高的窗口,所以窗口固定占屏幕90%高度。
那么他的top值应该是(100-90)/2。也就是5%。如果习惯窗口从别的位置开始就自己写个算法即可。
然后需要在弹窗成功后的回调里,修改第二层盒子的高度来撑开最外层弹窗高度。设置height为auto就可以把自动生成的高度替换掉。盒子里第三层content内容就能把外部撑开了。

layer.open(<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenLayers是一个用于创建交互式地图的JavaScript库。您提到的"openlayer弹窗"可能是指在OpenLayers地图中创建弹窗窗口的功能。 首先,为了创建OpenLayers弹窗,您需要一个DOM对象来承载弹窗内容。这可以通过在HTML页面中添加一个具有唯一ID的div元素来实现。该div元素将用作OpenLayers弹窗的容器。您可以在该div元素中添加其他元素,以定义弹窗的样式和内容。 为了定义弹窗的样式,您可以使用CSS来设置div元素的样式属性。您可以为弹窗容器div添加类名或直接为其设置样式属性。通过设置宽度、高度、背景颜色、边框样式等属性,您可以自定义弹窗的外观。 一旦您创建了弹窗容器和定义了其样式,您可以使用OpenLayers中的功能来处理弹窗的显示和关闭事件。通过监听地图上的特定事件,例如单击地图上的某个要素或位置,您可以触发弹窗的显示。在弹窗显示之后,您可以向其添加标题和内容。 在OpenLayers中,您可以使用Overlay类来实现弹窗的显示和关闭机制。Overlay类提供了打开和关闭弹窗的方法,以及设置弹窗内容的方法。通过将弹窗容器div作为Overlay的元素,您可以将其与地图关联起来,并实现在特定事件触发时显示弹窗。 总结一下,创建OpenLayers弹窗的步骤如下: 1. 在HTML页面中创建一个div元素,作为弹窗容器,并为其添加唯一的ID。 2. 使用CSS设置div元素的样式,以定义弹窗的外观。 3. 在OpenLayers中创建一个Overlay对象,将弹窗容器div作为其元素。 4. 监听地图上的特定事件,例如单击事件,当事件触发时,调用Overlay的打开方法以显示弹窗。 5. 在弹窗显示后,使用JavaScript动态添加标题和内容。 需要注意的是,弹窗的具体实现可能因您使用的OpenLayers版本和您的需求而有所不同。请确保参考OpenLayers的官方文档和示例代码以获取更详细和准确的信息。 参考资料: 目录 一、定义popup弹窗dom对象二、定义弹窗样式三、定义Overlay四、设置单击地图后弹窗显示信息五、设置弹窗关闭事件 要展示弹窗,我们首先需要一个dom对象来承载。 <div id="popup" class="ol-popup"> <a href="#" id="popup-closer" class="ol-popup-closer" onclick="closePopup();"></a> <div id="popup-title" class="popup-title"></div> <div id="popup-content" class="popup-content"></div> </div> 二、定义弹窗样式 layer弹窗:top.layer弹窗到父页面跨域,通过postMessage方法将子页面的配置对象发送到父页面中,父页面再通过子页面的配置对象打开弹窗,对象内不能存在事件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值