【问题标题】:I have a style set programmatically that I wish to ignore when printing我有一个以编程方式设置的样式,我希望在打印时忽略它
【发布时间】:2023-03-24 10:48:01
【问题描述】:

代码很简单:

page.aspx

<body id ="PageBody" runat ="server">

page.aspx.cs

if ($foo == "foo")
{
    PageBody.Style.Add("background-color", "green");
}

我想在打印页面时完全忽略背景颜色(PC 打印由于各种原因会在其打印设置中打开背景,并且无法禁用)

我在 C# 中没有过多地使用 CSS,所以也许有一种方法可以设置主体以有条件地使用特定的 CSS 对象 ID?如果是这种情况,我可以在 style.css 中设置 BG 颜色,并将其留在 print.css 中。

非常感谢任何帮助。

编辑:

进行了更多搜索,但添加属性“class”似乎可以解决问题。

我只是在满足条件时调用我的绿色背景,而在不满足条件时调用标准样式。两者在打印样式表中都没有背景颜色。

【问题讨论】:

  • 查找“CSS 媒体类型”w3.org/TR/CSS2/media.html 是一个很好的入门参考。
  • 我熟悉在样式表中设置媒体类型。我要做的基本上是在页面被打印的情况下覆盖我的代码。使用 style.add("background-color", "green");完全覆盖样式表。
  • 如果您熟悉 css 媒体类型,那么我不确定问题是什么。只需在正常显示 css 上设置绿色背景样式表,然后在打印样式表上清除它。
  • 样式表根据我最初发布的代码被覆盖。当满足将背景颜色更改为绿色的条件时,它会完全忽略样式表,包括屏幕和打印。
  • 那么不要在代码中覆盖样式,向应用样式的元素添加一个类。然后在打印 css 样式表中覆盖该样式。

标签: c# asp.net styles


【解决方案1】:

body 元素上添加背景颜色作为内联样式属性(您正在做的方式)会由于特殊性而覆盖打印样式表。 (Further worthwhile reading on CSS specificity is here.)

要解决此问题,您可以:

  1. 不将背景颜色设置为内联样式(可能通过将 CSS 类添加到 body 元素并使用 CSS 设置样式),或者
  2. 在打印样式表中定义的背景样式之后添加!important,即在print.css中做:

    body {
        background-color: transparent !important;
    }
    

【讨论】:

  • 这就是我想要的,但是在搜索要添加的属性时,我没想到它像 Attributes.Add("class"... 这么简单
猜你喜欢
  • 2016-04-07
  • 2020-03-11
  • 2022-09-30
  • 1970-01-01
  • 2018-08-17
  • 2015-11-11
  • 2017-03-11
  • 2012-04-12
  • 1970-01-01
相关资源
最近更新 更多