Reputation: 349
I have a task to make nice text with a white line in the middle of text, like in this picture below. Is it possible to make it with css? Here is Fiddle
.container{
height:200px;
width:400px;
background-color:#EB8A1C;
}
.container h1{
color:#2CDB1D;
text-align: center;
padding-top:40px;
font-size:400%;
}
<div class="container">
<h1> filosofia </h1>
</div>
Upvotes: 3
Views: 1132
Reputation: 122087
You could do this with SVG
and Linear Gradient
. Here's another Demo
svg {
border: 1px solid black;
background: #EB8A1C;
}
text {
font-size: 30px;
font-weight: bold;
}
<svg width="250px" height="50px">
<defs>
<linearGradient id="textGradient" x1="0" x2="0" y1="0" y2="1">
<stop offset="0%" stop-color="#A5DE4A" />
<stop offset="45%" stop-color="#A5DE4A" />
<stop offset="50%" stop-color="white" />
<stop offset="60%" stop-color="#A5DE4A" />
<stop offset="100%" stop-color="#A5DE4A" />
</linearGradient>
</defs>
<text fill="url(#textGradient)" x="0" y="35">LOREM IPSUM</text>
</svg>
There is another way to do this with overlapping elements that are that have position: absolute
and fixed height
and most important part is overflow: hidden
on span
's
@import url(https://fonts.googleapis.com/css?family=Montserrat:700);
.text {
width: 200px;
height: 50px;
padding: 10px;
background: #EB8A1C;
color: white;
position: relative;
display: inline-block;
font-family: 'Montserrat', sans-serif;
font-weight: 700;
}
span {
font-size: 45px;
left: 20px;
position: absolute;
overflow: hidden;
}
span:nth-child(1) {
color: #A5DE4A;
height: 50;
}
span:nth-child(2) {
color: white;
height: 33px;
}
span:nth-child(3) {
color: #A5DE4A;
height: 29px;
}
<div class="text">
<span>filosofia</span>
<span>filosofia</span>
<span>filosofia</span>
</div>
Upvotes: 5
Reputation: 36702
This is easy in webkit, as I mentioned in the comment above, thanks to the non-standard -webkit-text-fill-color
. But it's trickier in non-webkit browsers.
You could use an SVG linearGradient to achieve the same effect. This seems to work well in everything I've tested:
body {
background: orange;
}
.svg_text, h1 {
font-size: 72px;
font-weight: bold;
margin: 0;
}
/* webkit-only ... */
.fancy {
background: #8bed89;
background: -moz-linear-gradient(top, #8bed89 0%, #8bed89 45%, #ffffff 51%, #8bed89 56%, #8bed89 100%);
background: -webkit-linear-gradient(top, #8bed89 0%, #8bed89 45%, #ffffff 51%, #8bed89 56%, #8bed89 100%);
background: linear-gradient(to bottom, #8bed89 0%, #8bed89 45%, #ffffff 51%, #8bed89 56%, #8bed89 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
<h4>Webkit only...</h4>
<h1 class="fancy">
filosofia
</h1>
<h4>Others...</h4>
<svg height="60" width="500">
<defs>
<linearGradient id="gradient" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:rgb(139,237,137); stop-opacity:1"/>
<stop offset="45%" style="stop-color:rgb(139,237,137); stop-opacity:1"/>
<stop offset="50%" style="stop-color:rgb(255,255,255); stop-opacity:1"/>
<stop offset="55%" style="stop-color:rgb(139,237,137); stop-opacity:1"/>
<stop offset="100%" style="stop-color:rgb(139,237,137); stop-opacity:1"/>
</linearGradient>
</defs>
<text x="0" y="50" fill="url(#gradient)" class="svg_text">
filosofia
</text>
</svg>
Upvotes: 3
Reputation: 8386
This is how I did it:
.container h1 {
text-align: center;
padding-top: 40px;
font-size: 400%;
background: -webkit-linear-gradient(#2CDB1D 68%, white 70%, #2CDB1D 0%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
Upvotes: 2
Reputation: 149
Add a class to your H1 element.
<h1 class="strike">....</h1>
then add this too your CSS:
.strike{
text-decoration: white line-through;
}
Upvotes: -2