html - 根据 css 中特定元素的类更改打印页面大小

标签 html css

我正在开发单页应用程序。我想根据 divclass 横向或纵向打印页面。最难的部分:我只想使用 css,而不使用 javascript。

例如, 我有默认的打印尺寸

@media print {
  @page {
    size: landscape
  }
}

但如果 block “frame”有修饰符“media”

,我想调整它的大小

不幸的是,这不起作用:

@media print {
  @page .frame ._media {
    size: portrait
  }
}

最佳答案

正如您所提到的,您无法使用 @page 添加选择器。只能添加一些伪类。您可以在这里阅读有关它们的更多信息:

https://developer.mozilla.org/en/docs/Web/CSS/@page

最好的解决方案是使用 JS。但因为您只想使用 CSS 来实现。

您无法使用类设置@page 规则。

我的解决方案是: 有两个不同的样式表(例如 style1.css、style2.css),并且在具有 class1 的页面上包含 style1.css,在具有 class2 的页面上包含 style2.css。

style1.css:

@media print {
  @page {
    size: landscape
  }
}

和 style2.css:

@media print {
  @page {
    size: portrait;
  }
}

这是设置两个不同的 @page 规则的唯一方法。

否则请使用Javascript。

关于html - 根据 css 中特定元素的类更改打印页面大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40102784/

相关文章:

javascript - 如何使用带有三元运算符的 <i> 标签?

html - 如何使用 css 和 html 将垂直子菜单添加到水平菜单?

html - 如何在不使用 flexbox 的情况下使 css 三 Angular 形居中?

CSS动画奇怪的跳点

html - 如何仅使用 CSS 删除 html <table> 列?

html - 无法让背景图像出现在 Bootstrap 中,可能是页脚问题

javascript - jQuery 数据表未定义

javascript - 如何定位html元素内文本的中心

html - 响应式设计/视口(viewport)

jquery - 用图形替换文本链接(导航)