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