使字体颜色与背景图片相同

Moh*_*han 2 html css

我正在设计一个带有背景图像的网页。中间有一个白框(使用 div),白框内是一些文本。我想要做的是使文本颜色与正文的背景颜色相同。如果我将文本的 color 属性设置为 transparent ,它就会消失,因为有一个白色的 div。我该怎么做呢?

这是 JSFiddle 的链接:http : //jsfiddle.net/FpJpV/

html是

<div>
    <h1>Title</h1>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS是

body {
    background-color: red;
    font-family: sans-serif;
}

div {
    width: 200px;
    background-color: white;
    margin: auto;
    text-align: center;
    padding: 1em;
}
Run Code Online (Sandbox Code Playgroud)

注意:在 JSFiddle 中,为了简单起见,我使用了红色背景,但在真实网页中,主体的背景是图像。

SJT*_*SJT 5

您可以通过三种方式在 HTML/CSS/JavaScript 中查找内容,其中一些方法比其他方法更复杂。

  1. 使用<canvas>绘制你的形状和类型,以及设置ctx.globalCompositeOperation="xor";在那里ctx是你的画布背景。

var c=document.getElementById('myCanvas');
var ctx=c.getContext('2d');
ctx.font = "bold 36px Proxima Nova";
ctx.fillStyle='blue';
ctx.fillText("MORE",100,87);
ctx.globalCompositeOperation='xor';
ctx.beginPath();
ctx.fillStyle='white';
ctx.arc(150,75,75,0,2*Math.PI);
ctx.fill();
Run Code Online (Sandbox Code Playgroud)
body{
  background: -webkit-radial-gradient(top left,rgb(23, 39, 34) 4%,rgb(56, 99, 99) 37%,rgb(22, 27, 15) 73%,rgb(22, 27, 14) 93%,#232323 100%);
  width:100%;
  height:100%;
}

html{
  height:100%
}
Run Code Online (Sandbox Code Playgroud)
<canvas id='myCanvas'></canvas>
Run Code Online (Sandbox Code Playgroud)

  1. 使用mix-blend-mode: screen并将文本的颜色设置为黑色。

.blend-mode {
  background:white;
  border-radius:100%;
  width:150px;
  height:150px;
  line-height:155px;
  float:left;
  margin:20px;
  font-family: "Proxima Nova", Hevetica, sans-serif;
  font-weight:bold;
  color:black;
  text-align:center;
  vertical-align:middle;
  font-size:36px;
  mix-blend-mode: screen;
}

body{
  background: -webkit-radial-gradient(top left,rgb(23, 39, 34) 4%,rgb(56, 99, 99) 37%,rgb(22, 27, 15) 73%,rgb(22, 27, 14) 93%,#232323 100%);
  width:100%;
  height:100%;
}

html{
  height:100%;
}
Run Code Online (Sandbox Code Playgroud)
<div class="blend-mode">MORE</div>
Run Code Online (Sandbox Code Playgroud)

  1. 使用-webkit-text-fill-color:transparent和-webkit-background-clip:text显示其背后的背景副本。这需要对背景副本进行一些对齐以匹配“原始”背景。

.wrap{
  margin:20px;
  float:left;
  position:relative;
}

.background {
  width: 150px;
  height: 150px;
  border-radius: 100%;
  background: white;
  position:absolute;
  top:0;
  left:0;
  z-index:4;
  
}

.text {
  position:absolute;
  top: 25px;
  left: 25px;
  z-index:5;
  background: -webkit-radial-gradient(top left, rgb(23, 39, 34) 4%, rgb(56, 99, 99) 37%, rgb(22, 27, 15) 73%, rgb(22, 27, 14) 93%, #232323 100%);
  font-family: Proxima Nova, Helvetica, sans-serif;
  font-weight:bold;
  line-height:100px;
  font-size: 36px;
  color: #666;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

body{
  background: -webkit-radial-gradient(top left,rgb(23, 39, 34) 4%,rgb(56, 99, 99) 37%,rgb(22, 27, 15) 73%,rgb(22, 27, 14) 93%,#232323 100%);
  width:100%;
  height:100%;
}

html{
  height:100%;
}
Run Code Online (Sandbox Code Playgroud)
<div class="wrap">
  <div class="background"></div>
  <div class="text">MORE</div>
</div>
Run Code Online (Sandbox Code Playgroud)

这些都不太可能在跨浏览器中工作得那么好,我还没有测试过它们!