2012-02-07 120 views
119

我有一個DIV,我想把一個模式作爲背景。這種模式是灰色的。所以爲了讓它更好看一些,我想把一個透明的顏色「層」放在上面。以下是我嘗試過的但沒有奏效的。有沒有辦法將彩色圖層放在背景圖片上?預先感謝您的回覆。乾杯。馬克。背景圖像上的半透明顏色層?

這裏是我的CSS:

background: url('../img/bg/diagonalnoise.png'); 
background-color: rgba(248, 247, 216, 0.7); 

回答

135

這就是:

.background { 
    background:url('../img/bg/diagonalnoise.png'); 
    position: relative; 
} 

.layer { 
    background-color: rgba(248, 247, 216, 0.7); 
    position: absolute; 
    top: 0; 
    left: 0; 
    width: 100%; 
    height: 100%; 
} 

HTML此:

<div class="background"> 
    <div class="layer"> 
    </div> 
</div> 

當然,你需要定義的寬度和高度與.background類,如果裏面沒有其他元素的話

+5

絕對沒有理由相對和絕對定位。 – 2012-02-07 20:08:31

+2

啊,是的,當然,我有點進入模式彈出,不知道爲什麼。你的答案當然更清潔,更容易。 – 2012-02-07 20:11:42

+0

@JohannesKlauß他的答案如何更清晰和更容易?它不起作用,至少對我來說是這樣。 – DannyG 2015-06-04 18:53:52

20

然後,您需要使用bg圖像和它與背景顏色的內容元素的包裝元素:

<div id="Wrapper"> 
    <div id="Content"> 
    <!-- content here --> 
    </div> 
</div> 

和CSS:

#Wrapper{ 
    background:url(../img/bg/diagonalnoise.png); 
    width:300px; 
    height:300px; 
} 

#Content{ 
    background-color:rgba(248,247,216,0.7); 
    width:100%; 
    height:100%; 
} 
5

見我的答案在https://stackoverflow.com/a/18471979/193494進行了全面的概述可能的解決方案:

  1. 使用多個背景的線性梯度,
  2. 帶有生成的PNG的多個背景,或
  3. 樣式:在僞元素之後充當輔助背景層。
+3

請不要張貼鏈接作爲答案。把相關代碼放在這裏,但鏈接到你複製它的源代碼。 – Blazemonger 2014-12-17 16:14:26

11

試試這個。適用於我。

.background { 
    background-image: url(images/images.jpg); 
    display: block; 
    position: relative; 
} 

.background::after { 
    content: ""; 
    background: rgba(45, 88, 35, 0.7); 
    position: absolute; 
    top: 0; 
    left: 0; 
    right: 0; 
    bottom: 0; 
    z-index: 1; 
} 

.background > * { 
    z-index: 10; 
} 
+0

這是一個非常好的答案,不需要額外的HTML元素。謝謝! – patr1ck 2014-02-23 21:15:59

181

我知道這是一個非常古老的線程,但它顯示在谷歌的頂部,所以這裏有另一種選擇。

這是純粹的CSS,不需要任何額外的HTML。

box-shadow: inset 0 0 0 1000px rgba(0,0,0,.2); 

有針對的box-shadow功能使用數量驚人的。

+1

儘管這是一個驚人的可能性,但它僅支持IE 9+,這意味着截至2014年10月,1,8%的網絡用戶無視。 – 2014-11-14 00:54:17

+3

非常好!這是一個好主意性能明智嗎?還沒有研究過box-shadow – Notflip 2014-11-25 15:03:26

+1

@Notflip&others的性能,它是在有限的使用情況下,它絕對不是如果你有超過100個元素的這個集合。渲染過載。來源:個人經驗。 – Tyblitz 2014-12-23 14:40:56

68

從CSS-技巧...有一個一步到位的方式來做到這一點沒有Z-索引和添加僞elements--需要線性漸變,我覺得意味着你需要支持CSS3

.tinted-image { 
    background: 
    /* top, transparent red */ 
    linear-gradient(
     rgba(255, 0, 0, 0.45), 
     rgba(255, 0, 0, 0.45) 
    ), 
    /* your image */ 
    url(image.jpg); 
} 
+0

這個效果很好,但是如果你想脈衝一種顏色,你不能創建漸變效果,不要以爲這是可能的任何方法。 – sricks 2015-09-09 21:48:45

+1

我在這個元素上設置了'background-size:cover;'和'background-position:center center;'。這似乎取消了這種效果。 – Solace 2015-11-03 13:39:01

+0

使用背景大小:封面;後。至少在鉻上。 – davidbonachera 2016-11-07 03:38:00

9

我我已經使用這種方法將顏色色調以及漸變應用於圖像,以便在無法控制圖像顏色配置文件時使動態重疊文本更容易識別。你不必擔心z-index。

HTML

<div class="background-image"></div> 

SASS

.background-image { 
    background: url('../img/bg/diagonalnoise.png') repeat; 
    &:before { 
    content: ''; 
    position: absolute; 
    top: 0; 
    left: 0; 
    right: 0; 
    bottom: 0; 
    background: rgba(248, 247, 216, 0.7); 
    } 
} 

CSS

.background-image { 
    background: url('../img/bg/diagonalnoise.png') repeat; 
} 

.background-image:before { 
    content: ''; 
    position: absolute; 
    top: 0; 
    bottom: 0; 
    right: 0; 
    left: 0; 
    background: rgba(248, 247, 216, 0.7); 
    } 

希望它可以幫助

+0

這有效,但你需要改變第二個「left:0;」到「底部:0」 – 2015-10-13 08:49:49

+1

這應該是公認的答案,因爲它避免了不必要的元素創建。只要確保你的.background-image'div'至少有一個位置:relative – mjsarfatti 2016-09-05 08:52:33

3

爲什麼這麼複雜?你的解決方案几乎是正確的,除了這是一種更容易的方式使圖案透明和背景色固體。 PNG可以包含透明膠片。因此,使用photoshop將圖案設置爲70%並保留圖片以使圖案透明。那麼你只需要一個選擇器。作品跨瀏覽器。

CSS:

.background { 
    background: url('../img/bg/diagonalnoise.png');/* transparent png image*/ 
    background-color: rgb(248, 247, 216); 
} 

HTML:

<div class="background"> 
    ... 
</div> 
+0

你可以應用背景色,例如':hover',並且它會疊加在背景圖片的頂部嗎? – Sir 2015-10-20 03:23:34

+0

啓動Photoshop並執行此操作需要更長的時間,而不是添加幾行代碼。 – nihiser 2017-02-02 20:20:30

2
.background 
{ 
    background: linear-gradient(rgba(248, 247, 216, 0.7), rgba(248, 247, 216, 0.7)), url('../img/bg/diagonalnoise.png') no-repeat center fixed; 
    background-size:cover; 
} 
+2

你能再解釋一下這是怎麼回事? – patrick 2017-08-22 17:09:44

+0

雖然答案總是值得讚賞的,但是這個問題在5 **年前被問過,並且已經有了一個可以接受的解決方案。請儘量避免將問題頂到問題的頂端,除非問題還沒有被標記爲已解決,或者您發現了一個新的改進的問題解決方案。還請記住提供一些[**代碼圍繞您的代碼**](https://meta.stackexchange.com/questions/114762)來幫助解釋它。查看關於如何讓你的答案數的一些技巧的[**寫出很好的答案**](http://stackoverflow.com/help/how-to-answer)上的文檔:) – 2017-08-23 02:17:51

0

可以使用半透明像素,它可以生成例如here,甚至用base64 下面是白色的50%爲例:

background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=), 
url(../img/leftpanel/intro1.png); 
background-size: cover, cover; 
  • 而不上傳

  • 沒有額外的html

  • 我想加載應該比盒子陰影或線性漸變更快