我要找的是:

一种为角色的一半设置样式的方法。(在这种情况下,一半的字母是透明的)

我目前搜索并尝试的内容(运气不佳):

半个字符/字母的样式设置方法使用CSS或JavaScript设置字符的部分样式将CSS应用于50%的字符

下面是我试图获得的一个例子。

对此,是否存在CSS或JavaScript解决方案,还是我必须求助于图像?我宁愿不走图像路线,因为文本最终将动态生成。


更新:

既然很多人都问我为什么要塑造一个角色的一半,这就是为什么。我所在的城市最近花了25万美元为自己定义了一个新的“品牌”。这个标志就是他们想出的。许多人抱怨网站的简单和缺乏创造力,并继续这样做。我的目标是把这个网站当成一个笑话。输入“哈利法克斯”,你就会明白我的意思。


当前回答

这可以通过CSS:before选择器和内容属性值来实现。

减半,减半1{浮动:左侧;}减半,减半1{字体系列:arial;字体大小:300px;字号:粗体;宽度:200px;高度:300px;位置:相对;/*帮助保持内容价值*/溢出:隐藏;颜色:#000;}.halved:之前,.halved1:之前{宽度:50%;/*我们想展示多少*/溢出:隐藏;/*隐藏超出我们维度的内容*/内容:'X';/*半字符*/高度:100%;位置:绝对;颜色:#28507D;}/*对于水平截止*/half-ed1:之前{宽度:100%;高度:55%;}<div class=“half-ed”>X</div><div class=“halved1”>X</div>

>>参见jsFiddle

其他回答

这里是画布上的一个丑陋的实现。我尝试了这个解决方案,但结果比我预期的更糟,所以无论如何,它还是在这里。

$(“div”).each(函数){var CHARS=$(this).text().split(“”);$(this).html(“”);$.each(CHARS,函数(索引,字符){var canvas=$(“<canvas/>”).css(“宽度”,“40px”).css(“高度”,“40px”).get(0);$(“div”).append(画布);var ctx=canvas.getContext(“2d”);var gradient=ctx.createLinearGradient(0,0,130,0);gradient.addColorStop(“0”,“蓝色”);gradient.addColorStop(“0.5”,“蓝色”);gradient.addColorStop(“0.51”,“红色”);gradient.addColorStop(“1.0”,“红色”);ctx.font=“130pt Calibri”;ctx.fillStyle=渐变;ctx.fillText(字符,10,130);});});<script src=“https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js“></script><div>示例文本</div>

另一种仅使用CSS的解决方案(如果您不想编写特定于字母的CSS,则需要数据属性)。这一款更全面(已测试IE 9/10、Chrome最新版本和FF最新版本)

跨度{位置:相对;颜色:rgba(50,50200,0.5);}跨度:之前{content:attr(数据字符);位置:绝对;宽度:50%;溢出:隐藏;颜色:rgb(50,50200);}<span data char=“X”>X</span>

只为历史上的记录!

我在5-6年前为自己的工作提出了一个解决方案,这就是Gradext(纯javascript和纯css,无依赖性)。

技术上的解释是,您可以创建如下元素:

<span>A</span>

现在,如果要在文本上创建渐变,需要创建多个层,每个层都有特定的颜色,创建的光谱将说明渐变效果。

例如,看看这是一个<span>内部的单词lorem,它会导致水平渐变效果(查看示例):

 <span data-i="0" style="color: rgb(153, 51, 34);">L</span>
 <span data-i="1" style="color: rgb(154, 52, 35);">o</span>
 <span data-i="2" style="color: rgb(155, 53, 36);">r</span>
 <span data-i="3" style="color: rgb(156, 55, 38);">e</span>
 <span data-i="4" style="color: rgb(157, 56, 39);">m</span>

你也可以在很长的时间和很长的一段时间内继续这样做。

But!

如果你想在文本上创建垂直渐变效果怎么办?

然后还有另一个可能有用的解决方案。我将详细描述。

再次假设我们的第一个<span>。但内容不应该是单独的字母;内容应该是全文,现在我们将复制相同的内容‍‍<span>一次又一次(跨度数将定义渐变的质量,跨度越大,结果越好,但性能较差)。看看这个:

<span data-i="6" style="color: rgb(81, 165, 39); overflow: hidden; height: 11.2px;">Lorem ipsum dolor sit amet, tincidunt ut laoreet dolore magna aliquam erat volutpat.</span>
<span data-i="7" style="color: rgb(89, 174, 48); overflow: hidden; height: 12.8px;">Lorem ipsum dolor sit amet, tincidunt ut laoreet dolore magna aliquam erat volutpat.</span>
<span data-i="8" style="color: rgb(97, 183, 58); overflow: hidden; height: 14.4px;">Lorem ipsum dolor sit amet, tincidunt ut laoreet dolore magna aliquam erat volutpat.</span>
<span data-i="9" style="color: rgb(105, 192, 68); overflow: hidden; height: 16px;">Lorem ipsum dolor sit amet, tincidunt ut laoreet dolore magna aliquam erat volutpat.</span>
<span data-i="10" style="color: rgb(113, 201, 78); overflow: hidden; height: 17.6px;">Lorem ipsum dolor sit amet, tincidunt ut laoreet dolore magna aliquam erat volutpat.</span>
<span data-i="11" style="color: rgb(121, 210, 88); overflow: hidden; height: 19.2px;">Lorem ipsum dolor sit amet, tincidunt ut laoreet dolore magna aliquam erat volutpat.</span>

再次,但是!

如果你想让这些渐变效果移动并创建一个动画呢?

嗯,还有另一种解决方案。您应该明确检查animation:true或甚至.hollable()方法,该方法将导致基于光标位置的渐变开始!(听起来很酷xD)

这就是我们在文本上创建渐变(线性或径向)的简单方法。如果你喜欢这个想法或想了解更多,你应该查看提供的链接。


也许这不是最好的选择,也许不是最好的表演方式,但它将为创造令人兴奋和愉快的动画开辟一些空间,以激励其他人寻求更好的解决方案。

它将允许您在文本上使用渐变样式,甚至IE8也支持这种样式!

在这里,您可以找到一个工作的实时演示,原始存储库也在GitHub上,开源,随时可以获得一些更新(:D)

这是我第一次(是的,5年后,你没听错)在互联网上的任何地方提到这个存储库,我对此很兴奋!


〔更新-2019年8月:〕Github删除了该存储库的Github页面演示,因为我来自伊朗!这里只有源代码,但。。。

.halfStyle {
    position:relative;
    display:inline-block;
    font-size:68px; /* or any font size will work */
    color: rgba(0,0,0,0.8); /* or transparent, any color */
    overflow:hidden;
    white-space: pre; /* to preserve the spaces from collapsing */
    transform:rotate(4deg);
    -webkit-transform:rotate(4deg);
    text-shadow:2px 1px 3px rgba(0,0,0,0.3);
}
.halfStyle:before {
    display:block;
    z-index:1;
    position:absolute;
    top:-0.5px;
    left:-3px;
    width: 100%;
    content: attr(data-content); /* dynamic content for the pseudo element */
    overflow:hidden;
    color: white;
    transform:rotate(-4deg);
    -webkit-transform:rotate(-4deg);
    text-shadow:0 0 1px black;

}

http://experimental.samtremaine.co.uk/half-style/

你可以把这段代码塞进各种有趣的事情中——这只是我和同事昨晚想出的一个实现。

利用背景剪辑的一个不错的解决方案:文本支持:http://jsfiddle.net/sandro_paganotti/wLkVt/

span{
   font-size: 100px;
   background: linear-gradient(to right, black, black 50%, grey 50%, grey);
   background-clip: text;
   -webkit-text-fill-color: transparent;
}