zoukankan      html  css  js  c++  java
  • 用IFrame解决Div显示优先级问题

    在页面中,由于优先级问题,导致一下弹窗无法在页面中显示。例如使用ocx播放组件,ocx组件的优先级在页面是很高的,导致我页面的弹窗无法显示在上面,因此可以用点小技巧来处理这个问题。

    解决办法就是:给层中放一个优先级更高的元素(iframe),具体解决代码如下:

    1、处理dialog弹窗类型。内容是直接在页面代码中写出来的

    1 <el-dialog title="弹窗" width="520px" :visible="true" @close="closeDialog" :close-on-click-modal="false">
    2  <!-- 省略其他代码-->
    3    <iframe src="about:blank" class="iframeCss" frameBorder="0" marginHeight="0" marginWidth="0"></iframe>
    4 </el-dialog>

    2、处理动态生成的组件,例如:时间下拉弹窗,下拉弹出的面板是根据代码自动生成的,不能直接在页面中找到对应的内容,则需要另外处理

     无效方法:因为时间选择面板是动态生成,拼接到html代码尾部,因为iframe并没有插入成功。

    1  <el-date-picker v-model="value3" type="datetime" size="mini" default-time="12:00:00" style=" 280px;">
    2    <iframe src="about:blank" class="iframeCss" frameborder="0" marginheight="0" marginwidth="0"></iframe>
    3  </el-date-picker>

    目前解决方案:(待优化做法)

    1、当时间输入框获取焦点时,触发事件。新建一个iframe元素,插入到时间面板上;

    2、由于只需要插入一次即可,因此可以使用方法this.$once()进行调用;

    PS:以下代码仅供参考思路

    html

    <el-date-picker @focus="handleFocus" v-model="value3" type="datetime" size="mini" default-time="12:00:00" style=" 280px;"></el-date-picker>
    

    script

    export default {
        created() {
            this.$once('appendFrame', () => {
                this.append()
            })
        },
        method:{
         handleFocus() {
           this.$emit("appendFrame");
         },
         append() {
         this.$nextTick(() => {
              const panel = document.querySelector(".el-picker-panel");  // .el-picker-panel是时间弹窗面板的css样式
              const iframe = document.createElement("iframe");
              iframe.src = "about:blank";
              iframe.className = 'iframeCss'
              iframe.frameBorder = 0;
              iframe.marginHeight = 0;
              iframe.marginWidth = 0;
              panel.appendChild(iframe);
           });
       } } }

    ifream的css样式。

    .iframeCss {
      position: absolute;
      visibility: inherit;
      top: 0px;
      left: 0px;
      width: 100%;
      height: 100%;
      z-index: -1;
      filter: alpha(opacity=0);
    }
  • 相关阅读:
    一个经典的页面布局
    巧避new的一个原型设计模式
    讲解关于javascript的继承
    根据指定日期 算出该周的一周日期
    原型实现的一个观察者模式
    减少类之间的耦合性
    Android 代码下载
    (转)open gl 实例 demo vs2005 环境
    Tile editor 快捷键
    这是第一篇博客~
  • 原文地址:https://www.cnblogs.com/luoxuemei/p/13571646.html
Copyright © 2011-2022 走看看