html - @media print 在作用域样式标签内不起作用
问题描述
我正在构建一个 Nuxt 应用程序,不知道为什么这仅在作用域样式标签中不起作用。
这是我通常为风格所做的。
索引.vue
...some code..
<script>
some code here
</script>
<style scoped>
.text1 {
overflow: auto;
}
</style>
上面的代码没有问题。
我想做的是在 dialog 中打印东西。
详细地说,我有一个带有长文本的页面(如果打印大约 3 页)和打开对话框的按钮。
在对话框内部,有一些图像和文本以及打印按钮。
当我单击按钮时,我想在对话框中打印东西,但没有别的。
这就是我所做的:
<template>
...some text that I don't want to print..
<v-dialog>
<v-container id="printable">
image and text to print
</v-container>
</v-dialog>
...
</template>
<script lang="ts">
export default Vue.extend({
methods: {
print() {
const modal = document.getElementById('printable');
const cloned = modal!.cloneNode(true);
let section = document.getElementById('print');
if (!section) {
section = document.createElement('div');
section.id = 'print';
document.body.appendChild(section);
}
section.innerHTML = '';
section.appendChild(cloned);
window.print();
},
},
})
</script>
<style scoped>
@media screen {
#print {
display: none;
}
}
@media print {
body * {
visibility: hidden;
}
#print,
#print * {
visibility: visible;
}
#print {
position: absolute;
left: 0;
top: 0;
}
}
.text1 {
overflow: auto;
}
</style>
当我单击打印按钮时,我得到了 3 页应该是不可见的文本。模态中的任何图像和文本也消失了。
现在,如果我改变
<script scoped>
一切<script>
都按预期工作。但我不明白为什么..(如果可能的话,我想使用范围,因为它是推荐的)
此外,即使<script>
我仍然得到 3 页(第一页是模态的东西,然后是第二和第三页的空白页)
有谁知道如何删除第 2 和第 3 页?
解决方案
对于第一部分,您可能需要一些深度选择器,因为我猜您的目标是嵌套组件v-dialog
,您可以在此处查看如何编写它:https ://stackoverflow.com/a/55368933/8816585
像这样包装
>>> .text1 {
overflow: auto;
}
至于它正在打印但不应该打印的事实,它可能来自您单击按钮时的实际状态。附加代码在这里可能有用。
不确定它是否有帮助,但像html2canvas这样的包也可能有帮助。
这是我曾经使用这个包看到的一些问题,可能还有更多。
它们可能更适合打印到 Vue 环境中。
推荐阅读
- spring-boot - Logback.xml 按环境配置
- python - Python进程函数
- ios - 我们可以通过低功耗蓝牙在广告数据时发送简单的字符串吗
- php - 导出 Yii Stuck 服务器中的大数据以工作
- python - 在python中存储8皇后问题板的最佳方法是什么
- sql - 满足我条件的行的 datediff 每行仅一次
- typescript - 如何声明只有抽象类才能继承的基类?
- scikit-learn - sklearn Vectorizer(NLP 任务):生成自定义 NGram,能够按比例放大 n >= 3
- html - 在侧边栏导航 bootstrap4 中的链接之间放置空格
- api - mpv API:如何转到播放列表中的第 n 个元素?