2009-04-19 13 views
18

我有一些簡單的CSS:如何讓Firefox打印背景色樣式?

#someElement { 
    background-color:black; 
    color:white; 
} 

它看起來不錯的瀏覽器,但是當我去打印在Firefox它出來爲白色背景上的黑色文本。我想這是某種節省墨水的功能,但是有沒有辦法解決這個問題?

+0

我建議@musa答案應該被接受,而不是目前的一個,因爲它確實解決了這個問題。 – Namatullah 2016-08-24 10:45:57

+1

嗯...時間的答案差不多兩年前mursa的,這兩個答案使用相同的基本原則(即使用除'background-color'之外的東西來僞造背景顏色)。時間的答案有更多的解釋,但mursa的更簡單...我希望一個明顯更好,但給我所有,我真的不知道我應該接受哪一個。現在我剛剛從Daniel A. White的答案中刪除了選中標記(雖然它在技術上是準確的,但SO上的人正在尋找解決方案)。 – machineghost 2016-08-24 22:42:42

+0

Firefox將[現在認識到'color-adjust'屬性](https://stackoverflow.com/questions/35004690/force-background-color-printing-on-firefox/39710495#39710495)。 'color-adjust:exact';下面有一個答案,提到現在應選擇正確的答案。 – RustyToms 2017-05-08 01:22:23

回答

34

其瀏覽器設置。在你的CSS中沒有什麼可以做的。在Windows中 - File > Page Setup... > Print Background

+0

有沒有一種方法用JavaScript來檢測這個設置是打開還是關閉? – jdavis 2014-07-28 15:55:39

+0

@jdavis不,我不這麼認爲。 – 2014-07-28 15:55:58

+0

正如我在我的回答中提到的,有一個更好的解決方案來執行它 – Musa 2016-08-24 10:46:59

0

也許不是你要找的,但在這裏,這個答案:

我寧願添加一個單獨的樣式表的打印頁面。通常情況下,您希望刪除導航菜單,麪包屑,廣告等內容,並且可能會對屏幕樣式表進行邊距,填充,邊框和字體的小改動。

即使考慮強迫用戶用黑色墨水填充整個頁面並用白色文本看起來很愚蠢。

要添加單獨的打印樣式表,請將另一個樣式表添加到頁面的頭部。

<link rel="stylesheet" href="print.css" type="text/css" media="print"> 
+0

嘿,整個頁面會過多;我只想要一個小區域 – machineghost 2009-04-19 06:19:39

+0

這可能只是,但請記住,它是完全相同的機制,控制它應該瀏覽器檢測網站的表面區域,根據所需的DPI設置在某處進行打印,然後決定是否應用BG顏色?;-) – 2009-04-19 12:31:47

+5

如何解決通用背景顏色問題? – 2015-11-17 14:23:19

24

我發現了一個解決方案,雖然有點亂,但是使用CSS僞元素,您可以使用胖邊框創建背景。即使在「打印背景」關閉的情況下,也可以打印邊框,只需使它們變得非常厚!有一點需要注意的是,Firefox會將所有白色字體顏色設置爲黑色,因此當您創建假黑色背景時,Firefox仍會使文本變黑,從而使文本不可見。反正這裏是:

的HTML:

<div class="redBox"> 
    <div class="content">Black on red</div> 
</div> 

的CSS:

.redBox { 
    /* o no, does not work with print */ 
    background-color: red; 
} 

@media print { 
    .redBox { 
    position: relative; 
    overflow: hidden; /* this might not work well in all situations */ 
    } 
    .redBox:before { 
    content: ''; 
    position: absolute; 
    top: 0; 
    right: 0; 
    left: 0; 
    bottom: 0; 
    /* and here it is, the background color */ 
    border: 99999px red solid; 
    z-index: 0; /* was required in my situation */ 
    } 
    .redBox * { 
    /* was required in my situation */ 
    position: relative; 
    z-index: 1; 
    } 
} 
+1

如果您設置了「z-index:-1」 ''你可以保存'.redbox *'部分 – kernel 2015-01-07 15:07:46

+0

@kernel這對我很有用,但我認爲你需要設置'.redbox'的背景透明f或打印。 – Blazemonger 2015-04-17 16:24:25

+0

我知道這是一箇舊的答案,但嘗試使用「9999cm」而不是「px」。 (我試過這個,這是唯一的工作單位,'10000cm'不會工作) – 2015-05-12 11:15:48

16

有這個一個簡單的解決方案。

對於background-color,而不是使用:

background-color: red 

用途:

background-color: unset; 
box-shadow: inset 0 0 0 1000px red /* 1000px is a random high 
            number that is definitely 
            larger than the box dimension*/ 

也爲color,而不是:

color: grey; 

用途:


你可以限制他們只能通過@media print打印,但你不就得了!


注:有時你應該使用 background-color: transparent;color: transparent;如果 colorbackground-color從父元素繼承。

+0

可能不適用於所有瀏覽器,但修復了FF文字顏色。 – 2016-06-28 10:32:48

+1

爲背景工作,不要忘記在樣式定義中的'box-shadow'後添加':' – userlond 2016-08-22 08:06:57

+0

@userlond謝謝您的修復。 – Musa 2016-08-23 04:13:02

7

這就是我通過將下面兩行添加到特定div來使其工作的情況。 「@@ supports(-moz-appearance:meterbar)」有助於添加特定於Firefox的樣式。

-webkit-print-color-adjust:exact;顏色調整:精確;

@@supports (-moz-appearance:meterbar) { 
    .container { 
     margin: 0; 
     font-size: 0.85em; 
     width: 100%; 
     -webkit-print-color-adjust: exact; 
     color-adjust: exact; 
    } 
} 
+0

這是Firefox中的一項新功能,現在是正確的答案。 [使用顏色調整屬性](https://stackoverflow.com/questions/35004690/force-background-color-printing-on-firefox/39710495#39710495) – RustyToms 2017-05-08 01:20:16