使用CSS剪切文本

时间:2014-03-23 15:28:20

标签: html css button styles

我尝试为CSS中的按钮创建悬停效果 How it should look like finished

基本上,文本应该被“剪掉”其父元素,使其透视到网站背景 我会用渐变做条纹,但我的问题是为字体添加透明度 我查看了背景剪辑,但这与我试图实现的相反,并且会使事情变得更复杂。 有没有一种简单的方法来实现这种效果?我不介意使用JS,但如果可能的话,不要使用jQuery。

3 个答案:

答案 0 :(得分:5)

按照我的评论和链接,使用svg,你可以得到这样的东西: http://codepen.io/gc-nomade/pen/Dqcio/

svg {
  position:absolute;
  background:repeating-linear-gradient(-45deg,
    transparent,
    transparent 5px,
    black 5px,
    black 10px
    );
  width:600px;
  height:300px;
  box-sizing:border-box;
  background-clip: content-box; 
  padding:60px 70px;
}
text {
  font-size:8em;
  fill:url(#textpattern);
  stroke: white;
  border:solid;
  }
div {
  position:relative;
  width:600px;
  margin:auto;
}

和标记:

    <div>
  <svg>
    <defs>
      <pattern id="textpattern" patternUnits="userSpaceOnUse" width="600" height="300" >
        <image xlink:href="http://lorempixel.com/600/300/nature/9" width="600" height="300"  x="-70px" y="-60px"/>
      </pattern>
    </defs>
    <text  y="120px" x="140px">test </text>
  </svg>
  <img src="http://lorempixel.com/600/300/nature/9" />
</div>

使用CSS,您甚至可以添加透明边框和半径,使其看起来更奇怪http://codepen.io/gc-nomade/pen/wsfvg/

答案 1 :(得分:3)

在下面的示例中,我使用的是mix-blend-mode,其混合模式为difference

@import url(http://fonts.googleapis.com/css?family=Raleway:900,600,500,800,700);
* {
  box-sizing: border-box;
}
body {
  font-family: 'Raleway', sans-serif;
  background-color: white;
}
div {
  position: relative;
}
img {
  width:100%;
}
h1 {
  color: #000;
  background-color: #9c9c9c;
  padding: .5em 1em;
  position: absolute;
  bottom: 0;
  width: 100%;
  font-size: 10vw;
  font-weight: 900;
  text-transform: uppercase;
  mix-blend-mode: difference;
}
<div>
  <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/9674/isolation-destination.jpg" alt="" />
  <h1>Let the sun shine!</h1>
</div>

View on CodePen
View my blog post on compositing and blending

答案 2 :(得分:0)

尝试使用Photoshop创建只有轮廓而没有背景颜色的文本,然后将其保存为.png格式,然后将该文本放在div中并使用渐变装饰此div。 希望这在某种程度上有所帮助

检查以下在Photoshop中创建的图像....... this is a PNG Image...