2014-02-06 21 views
2

我試圖用HTML中的彩色div大文本實現掩碼類效果。我想要這個蒙版文本顯示div後面的圖像的一部分。然而;而不是在div本身上使用background-clip屬性和background-image - 我希望簡單地揭示元素下方(在我的情況下,圖像)。 我曾嘗試使用svg圖像與複合路徑,他們證明太難處理。 有沒有其他辦法可以做到這一點? CSS? jQuery插件? A not-so-successful attempt with svg以文本爲掩碼的CSS div

+1

http://css-tricks.com/image-under-text/ – j08691

+0

我已經看到了這,有幫助 - 但不是我要找的東西。我需要文本來簡單地揭示它下面的內容。不想給背景圖片。 – grevin123

+0

下面還有其他圖像嗎? – helion3

回答

2

根據this article for applying a text mask,你可以用一個畫布標籤來做到這一點。

<div id="bg"><canvas id="overlay" width="240" height="70"></canvas></div> 
<script> 
// Get a handle to our canvas 
var ctx = document.getElementById('overlay').getContext("2d"); 

// Choose font 
ctx.font = "Bold 36px 'Helvetica'"; 

// Draw black rectangle 
ctx.fillStyle = "black"; 
ctx.fillRect(0,0,230,70); 

// Punch out the text! 
ctx.globalCompositeOperation = 'destination-out'; 
ctx.fillText("Some Text", 25, 50); 
</script> 

http://jsfiddle.net/6aVGU/

+0

這看起來很有前途,謝謝!是否可以在畫布內設置黑框的高度? – grevin123

+0

請考慮使用d3,最好的JavaScript圖形庫可用 – royhowie

-2

你可以用透明的PNG圖片做文字。

+0

我想我會做到這一點,如果我找不到別的 - 但我希望有一個解決方案,可以讓我輕鬆編輯文本:)謝謝。 – grevin123

1

你可以使用Canvas對象做到這一點: http://jsfiddle.net/JackKalish/g3BDa/3/

var canvas1 = document.getElementById("canvas1"); 
    var canvasContext1 = canvas1.getContext("2d"); 

    // destination-out 
    // Text cuts-out everything under it 
    // background is revealed in the cut-out 
    makeGradientAndFont(canvasContext1, canvas1); 
    canvasContext1.globalCompositeOperation = 'destination-out'; 
    canvasContext1.fillText("Portfolio", 175, 50); 

    function makeGradientAndFont(ctx, canvas) { 
     var grad = ctx.createLinearGradient(0, 0, canvas.width, canvas.height); 
     grad.addColorStop(0, '#0000FF'); 
     grad.addColorStop(.3, '#00FFFF'); 
     grad.addColorStop(.4, '#99FFFF'); 
     grad.addColorStop(.5, '#00FF00'); 
     grad.addColorStop(.6, '#FFFF00'); 
     grad.addColorStop(.8, '#F00000'); 
     ctx.rect(0, 0, canvas.width, canvas.height); 
     ctx.fillStyle = grad; 
     ctx.fill(); 
     ctx.fillStyle = "black"; 
     ctx.font = "55px Arial"; 
     ctx.textAlign = "center"; 
     ctx.textBaseline = "middle"; 
    } 
+0

謝謝!這也看起來類似我所希望的:) – grevin123