javascript - 打印模态窗口而不是页面的其余部分

标签 javascript jquery css

我已经看到了一些答案,但我认为我实际上遇到了 CSS 问题。

这是我的 HTML 的示例片段:

<id=container> children <id="modal">children</modal></container>

如果我弹出打开模式有一个打印按钮。当我单击它时,我使用 jQuery 将 .noprint 应用到 #container 并将 .print 应用到 #modal。但是模态的 .print 被忽略了,无论我应用什么选择器,我都无法让模态内容出现。更糟糕的是,我不能使用 Firebug ,它没有向我显示正在应用的打印样式。我努力了 #container #modal.print {显示: block ; } 等...

谢谢!

最佳答案

从它的声音来看,您的模态元素在容器内部。我猜你有这样的标记。

<div id="container">
    <span>children</span>
    <p>more children>
    <div id="modal">
        Modal text!
    </div>
</div>

像这样的 CSS...

.noprint { display: none;}
.print {display: block;}

你使用 JavaScript 来应用,像这样:

<div id="container" class="noprint">
    <span>children</span>
    <p>more children>
    <div id="modal" class="print">
        Modal text!
    </div>
</div>

在这些示例中,#modal 元素位于隐藏容器内。 CSS 规范规定,如果父元素被隐藏,则所有子元素也将被隐藏,即使它们被设置为 display: block(或任何其他有效的 display 值)或绝对定位。

如果你想隐藏页面上除模态窗口之外的所有内容,你应该做的是让你的标记结构如下:

<div id="modal">
    Modal Text!
</div>
<div id="container">
    <span>children</span>
    <p>more children>
    <div id="modal">
        Modal text!
    </div>
</div>

如果您无法控制模态元素的渲染位置,您可以使用 jQuery 重新定位模态元素。请记住,这可能会影响模态窗口的布局:

// Moves the element outside of the hidden container
$("#container").before($("#modal"));

关于javascript - 打印模态窗口而不是页面的其余部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1247534/

相关文章:

javascript - 使用 AngularJS 过滤 ng-repeat 中的特殊字符?

javascript - 我正在尝试在移动应用程序的 JavaScript 中发送邮件,但它不起作用

javascript - 如何检查下拉列表是否为只读?

水平/垂直对齐下的 CSS 文本

html - 为什么 <fieldset> 不能是 flex 容器?

javascript - 为每个元素设置 `overflow: hidden`

javascript - 使用 Meteor 的 SmartCollection 时的闪烁效果

javascript - 限制输入框中的字数

javascript - 将鼠标悬停在 HTML/JS/JQUERY 中的列表上时弹出图像

html - Foundation 5 Top Bar 全宽,但内部元素包含在网格中