代码之家  ›  专栏  ›  技术社区  ›  Ray Cheng

显示弹出窗口时在模式弹出窗口中打印内容,但隐藏模式弹出窗口时打印正文

  •  0
  • Ray Cheng  · 技术社区  · 11 年前

    我使用下面的CSS使模式弹出窗口可打印,但有一个问题。问题是,由于CSS被添加到页面中,因此只有模态弹出窗口是可打印的,而其他页面内容是不可打印的。

    我想要的是,当模态弹出窗口可见(由单击按钮触发)时,只有模态内容可以打印,但当模态不可见时,只有页面内容可以打印。

    @media print {
        body * { visibility: hidden; }
        #search-result, #search-result * { visibility: visible; }
        #search-result{ position: absolute; left: 0px; top: 0px; }
    }
    

    使现代化

    谢谢你的提示!这是我所做的。

    css格式

    .print { visibility: visible; }
    .no-print { visibility: hidden; }
    

    js文件

    $('#search-result').on('hidden.bs.modal', function (e) {
        $('body').addClass('print').removeClass('no-print');
        $('#search-result').addClass('no-print').removeClass('print');
    });
    
    $('#search-result').on('shown.bs.modal', function (e) {
        $('body').addClass('no-print').removeClass('print');
        $('#search-result').addClass('print').removeClass('no-print');
    });
    
    1 回复  |  直到 10 年前
        1
  •  1
  •   user3417400    11 年前

    也许使用一个类来隐藏页面中你不想打印的部分可以让它更容易。

    使用这种CSS规则

    @media print {
      .no-print {
        visiblity: hidden;
      }
    }
    

    显示模式弹出窗口的按钮的事件处理程序可能会添加 no-print 类添加到不是弹出窗口本身的页面的每个元素。您可能希望将整个页面包装在一个div中,以使其更容易,并且弹出窗口应该位于该包装器之外。

    当弹出窗口关闭时 不打印 类,并将其从页面的其余部分中删除。

    如果您认为将整个页面包装在一个div中来完成这一操作太过困难,请将模态弹出窗口作为body元素的子项放置,当您希望只打印弹出窗口时,添加 不打印 类的每个子元素,而不是弹出窗口。当您关闭弹出窗口进行反向操作时,只有弹出窗口应该具有 不打印 类,身体元素的所有休息的孩子都不应该。