为打印视图隐藏除一个div之外的所有元素

mat*_*ode 35 css

我的打印样式有以下CSS:

* {
 display:none;
}

#printableArea {
 display:block;
}
Run Code Online (Sandbox Code Playgroud)

我希望这可以隐藏所有元素,只显示printableArea,但是一切都被隐藏了.在打印视图中,我得到的只是一个空白页面.

我把它包含在HEAD中,media="print"在这个特定的样式表上.

Que*_*tin 29

如果未显示元素,则不显示其子项(无论其显示属性设置为何值).

*匹配<html>元素,因此隐藏整个文档.

你需要对你隐藏的东西更有选择性.


Cha*_*her 15

您正在采用正确的通用方法,但您希望使用visibility: hidden而不是display: none使您可以将子元素设置为可见.

请仅查看Print <div id = printarea> </ div>?


PHL*_*LAK 8

html body * {
 display:none;
}

#printableArea {
 display:block;
}
Run Code Online (Sandbox Code Playgroud)

此外,您可能需要#printableArea上的!important,但可能不需要.

  • 这只有在#printableArea是身体的直接子项时才有效. (26认同)

Tar*_*dam 6

您可以尝试将其弹出到所有内容之上。这解决了我 90% 的问题,然后我只需要创建一个.noprint类并将其添加到一些零散的元素中。

.print_area{
    position: fixed;
    top: 0px;
    left: 0px;
    width: 100%;
    z-index: 9999;

    background-color: #ffffff;
}
Run Code Online (Sandbox Code Playgroud)


Cha*_*had 5

如果您想使用 JavaScript,您可以尝试这个简单的代码片段,甚至不需要 jQuery:

document.body.innerHTML=document.getElementById('printableArea').innerHTML;
Run Code Online (Sandbox Code Playgroud)


Sal*_*lix 5

回答是因为我在搜索这个问题时发现了这个问题

您可以使用 'display: none' 代替:

* {
     visibility: hidden;
     margin:0; padding:0;
    }

    #printableArea * {
      visibility: visible;
    }
Run Code Online (Sandbox Code Playgroud)

来源:https : //www.concrete5.org/community/forums/5-7-discussion/need-to-print-a-certain-div-and-ignore-everythign-else-on-the-pa

  • 这是可行的,但是如何使“#printableArea”移动到纸张的左上角,而不是保留它在使用“visibility:hidden”保留的 HTML/CSS 结构中的位置? (2认同)