iview弹框一般是使用创建一个Modal组件,通过设置 v-model属性控制弹框显示不显示。实现代码如下:
<Modal
:title="一个简单的弹框"
v-model="isVisible"
:width="500"
>
</Modal>
想要让弹框后不能操作页面的其他内容,实现遮罩效果也很简单,只要在Modal里面增mask-closable属性设置就可以了。iview中Moadl对话框是否有遮罩层默认属性是true,想要关闭设置成false就行。
想要让弹框能够进行拖拽,只要在Modal里面设置draggable属性设置就可以了。iview中Moadl对话框是否可以拖拽属性默认是false,想要开始设置成true就行。
实现代码如下:
<Modal
draggable
:title="一个简单的弹框"
v-model="isVisible"
:width="500"
:mask-closable="true"
>
</Modal>
这时候问题来了,如果想要同时实现拖拽效果和遮罩效果,由于开启了 draggable ,iview 会把弹层强制不显示,使用上面方式没法达到同时实现遮罩效果和拖拽效果。
所以想要实现同时使用拖拽效果和遮罩效果,这时只能手动设置除弹框区域外其他区域不能点击,通过增加ivu style样式实现,具体代码如下:
<Modal
draggable
:title="一个简单的弹框"
v-model="isVisible"
:width="500"
>
</Modal>
<style>
.ivu-modal-no-mask {
pointer-events: auto; /**透设除弹框外其他区域不能点击 */
background-color: rgba(0,0,0,0.3); /**透明的遮罩效果 */
}
</style>