我有一个特定的页面容器一些信息与特定的设计
此设计存在于单独的页面print.css
我想用同样的样式打印这一页,这一页也包含一个图像
function printContent() {
var divContents = document.getElementById("terms").innerHTML;
var a = window.open('', '', 'height=1000, width=1000');
a.document.write('<html>');
a.document.write("<link rel=\"stylesheet\" href=\"print.css\" type=\"text/css\" media=\"print\"/>");
a.document.write('<body >');
a.document.write(divContents);
a.document.write('</body></html>');
a.document.close();
a.focus();
setTimeout(function () {
a.print();
}, 1000);
a.print();
}
p {
display: inline-block;
}
.container header .top {
display: flex;
align-items: center;
gap: 30px;
margin-top: 30px;
padding-bottom: 20px;
border-bottom: 2px solid #2c2a6b;
}
.container header .top h1 {
color: white;
background-color: #2c2a6b;
padding: 10px 20px;
width: fit-content;
width: -moz-fit-content;
border-top-left-radius: 20px;
}
.container header .top .print-header {
display: flex;
gap: 20px;
}
.container header .top .print-header h2{
color: #2c2a6b;
align-self: flex-end;
}
.container header .print-subheader {
padding: 20px 0;
color: #2c2a6b;
}
.container main .print-content .top {
display: flex;
align-items: flex-end;
gap: 20px;
padding-bottom: 20px;
border-bottom: 1px solid #2c2a6b;
}
.container main .print-content .top img {
width: 50px;
}
.container main .print-content .top h3 {
color: #2c2a6b;
}
.container main .print-content .content{
margin-top: 20px;
}
.container main .print-content .content .inner-box{
display: flex;
align-items: center;
gap: 15px;
margin-bottom: 10px;
}
.container main .print-content .content .inner-box p{
color: #000;
font-weight: 500;
font-size: 16px;
}
<body>
<div class="container" id="terms">
<header>
<div class="top">
<h1>قطاع السياحة</h1>
<div class="print-header">
<img src="images/title-icon.png" alt="title">
<h2> اصدار رخصة الإيواء السياحي</h2>
</div>
</div>
<div class="print-subheader">
<h2>الحصول على رخصة استثمار (المستثمر الاجنبي)</h2>
</div>
</header>
<main>
<div class="print-content">
<div class="top">
<img src="images/terms.png" alt="terms">
<h3>الاشتراطات العامة</h3>
</div>
<div class="content">
</div>
</div>
</main>
</div>
<input type="button" class="btn-print" onclick="printContent()" value="Print">
</body>
问题是,单击“打印”按钮后,图像和样式不会显示
在一次搜索之后,我发现我应该设置一个超时,并且应该包括打印内容。css文件与媒体打印,但毕竟问题仍然存在,我不能打印的图像和css风格的任何人都可以帮助请页面
对于一个非常简单的需求,这似乎是一个过于复杂的解决方案,但也许有一些细节你没有考虑到。
看起来您只是为了打印而动态地包含CSS文件,但是CSS已经有了这方面的功能。我建议删除所有JavaScript,并将CSS包装到打印媒体查询中,如下所示:
@media print {
p {
display: inline-block;
}
/* the rest of your styles here */
}
只需将这些打印样式与页面的其他CSS一起包含,浏览器将负责将它们应用于打印媒体。
如果您必须使用JavaScript完成此操作,则需要等待样式表加载完成。您可以通过创建元素,为onload
事件附加一个事件侦听器,然后将其附加到DOM中来实现这一点。
比如:
let styles = document.createElement('link');
styles.addEventListener('load', function(){
window.print();
});
styles.setAttribute('rel', 'stylesheet');
styles.setAttribute('type', 'text/css');
styles.setAttribute('href', 'print.css');
document.head.appendChild(styles);
也许这会有所帮助
HTML
<body>
<div class="container" id="terms">
<header>
<div class="top">
<h1>قطاع السياحة</h1>
<div class="print-header">
<img src="images/title-icon.png" alt="title">
<h2> اصدار رخصة الإيواء السياحي</h2>
</div>
</div>
<div class="print-subheader">
<h2>الحصول على رخصة استثمار (المستثمر الاجنبي)</h2>
</div>
</header>
<main>
<div class="print-content">
<div class="top">
<img src="images/terms.png" alt="terms">
<h3>الاشتراطات العامة</h3>
</div>
<div class="content">
</div>
</div>
</main>
</div>
<button onclick="window.print();" class="noPrint">
Print Me
</button>
</body>
CSS
@media print {
.noPrint{
display:none;
}
}
h1{
color:#f6f6;
}
p {
display: inline-block;
}
.container header .top {
display: flex;
align-items: center;
gap: 30px;
margin-top: 30px;
padding-bottom: 20px;
border-bottom: 2px solid #2c2a6b;
}
.container header .top h1 {
color: white;
background-color: #2c2a6b;
padding: 10px 20px;
width: fit-content;
width: -moz-fit-content;
border-top-left-radius: 20px;
}
.container header .top .print-header {
display: flex;
gap: 20px;
}
.container header .top .print-header h2{
color: #2c2a6b;
align-self: flex-end;
}
.container header .print-subheader {
padding: 20px 0;
color: #2c2a6b;
}
.container main .print-content .top {
display: flex;
align-items: flex-end;
gap: 20px;
padding-bottom: 20px;
border-bottom: 1px solid #2c2a6b;
}
.container main .print-content .top img {
width: 50px;
}
.container main .print-content .top h3 {
color: #2c2a6b;
}
.container main .print-content .content{
margin-top: 20px;
}
.container main .print-content .content .inner-box{
display: flex;
align-items: center;
gap: 15px;
margin-bottom: 10px;
}
.container main .print-content .content .inner-box p{
color: #000;
font-weight: 500;
font-size: 16px;
}
通过添加class=“noPrint”,您可以删除不希望打印出来的内容!如果这是你的想法,请告诉我
这里是codepen.io链接
问题内容: 打印DIV内容的最佳方法是什么? 问题答案: 与早期版本相比有轻微变化-已在CHROME上测试
问题内容: 通常,如果我们仅使用它,它将显示为。如何在JavaScript中打印对象的所有内容参数? 问题答案: 如果您使用的是Firefox,则只需进行简单的调试即可。
Flex支持使用CSS语法和样式以与CSS到HTML组件相同的方式应用于其UI控件。 方式#1:使用外部样式表文件 您可以参考应用程序类路径中可用的样式表。 例如,考虑一下Hello com/wenjiangs/client folder World.mxml文件所在的com/wenjiangs/client folder中的Style.css文件。 /* CSS file */ @namespa
问题内容: 这是我的代码 此方法有效,但是会打印父页面,我如何才能仅打印iframe? 问题答案: 我不希望它能起作用 试一试 和使用 或者尝试好老 如果jQuery无法破解
问题内容: 如何以易于阅读的格式(对人类读者而言)显示JSON?我主要是在寻找缩进和空格,甚至可能是颜色/字体样式/等等。 问题答案: 打印是在中本地实现的](https://developer.mozilla.org/en- US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify) 。第三个参数启用漂亮的打印并设置要使用的间距
问题内容: 我正在尝试将此代码添加到动态创建的div元素中 创建动态的代码是 我的想法是在之后添加样式,但我不知道该怎么做。 问题答案: 这应该向元素添加内联样式。