我要找的是:

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

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

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

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

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


更新:

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


当前回答

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

$(“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>

其他回答

我刚刚完成了插件的开发,每个人都可以使用它!希望你会喜欢。

在GitHub上查看项目-查看项目网站。(这样可以查看所有拆分样式)

用法

首先,确保包含jQuery库。获取最新jQuery版本的最佳方法是使用以下内容更新head标记:

<script src="http://code.jquery.com/jquery-latest.min.js"></script>

下载文件后,确保将其包含在项目中:

<link rel="stylesheet" type="text/css" href="css/splitchar.css">
<script type="text/javascript" src="js/splitchar.js"></script>

加成

您所要做的就是为包装文本的元素添加splitchar类,然后添加所需的样式。例如

<h1 class="splitchar horizontal">Splitchar</h1>

完成所有这些之后,只需确保在文档就绪文件中调用jQuery函数,如下所示:

$(".splitchar").splitchar();

自定义

为了使文本看起来完全符合您的要求,您所要做的就是像这样应用您的设计:

.horizontal { /* Base CSS - e.g font-size */ }
.horizontal:before { /* CSS for the left half */ }
.horizontal:after { /* CSS for the right half */ }

就是这样!现在您已经设置了Splitchar插件。有关它的更多信息,请访问http://razvanbalosin.com/Splitchar.js/.

利用背景剪辑的一个不错的解决方案:文本支持: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;
}

我刚刚玩了@Arbel的解决方案:

var textToHalfStyle=$('.textToHalfStyle').text();var textToHalfStyleChars=textToHalf-Style.split(“”);$('.textToHalfStyle').html('');$.each(textToHalfStyleChars,函数(i,v){$('.textToHalfStyle').append('<span class=“halfStyle”data content=“'+v+'”>'+v+'</span>');});正文{背景色:黑色;}.text转换为半样式{显示:块;边距:200px 0 0;文本对齐:居中;}半样式{字体系列:'Libre Baskerville',衬线;位置:相对;显示:内联块;宽度:1;字体大小:70px;颜色:黑色;溢出:隐藏;空白:pre;文本阴影:1px 2px 0白色;}半样式:之前{显示:块;z指数:1;位置:绝对;顶部:0;宽度:50%;内容:属性(数据内容);/*伪元素的动态内容*/溢出:隐藏;颜色:白色;}<script src=“https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js“></script><span class=“textToHalfStyle”>Dr。Jekyll和M.Hide</span>

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

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

有限的CSS和jQuery解决方案

我不知道这个解决方案有多优雅,但它将所有事情都削减了一半:http://jsfiddle.net/9wxfY/11/

否则,我为您创建了一个很好的解决方案。。。您需要做的就是为HTML设置以下内容:

请查看截至2016年6月13日的最新且准确的编辑:http://jsfiddle.net/9wxfY/43/

至于CSS,它非常有限。。。您只需将其应用于:第n个孩子(偶数)

$(函数){var$hc=$('.half color');var str=$hc.text();$hc.html(“”);变量i=0;var字符;var dupText;而(i<str.length){chars=str[i];如果(chars==“”)chars=“”;dupText=“<span>”+字符+“</span>”;var firstHalf=$(dupText);var secondHalf=$(dupText);$hc.append(前半部分)$hc.append(secondHalf)var width=firstHalf.width()/2;firstHalf.width(宽度);secondHalf.css('text-indent',-width);i++;}});半色跨度{字体大小:2em;显示:内联块;溢出:隐藏;}半色跨度:第n个子级(偶数){颜色:红色;}<script src=“https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js“></script>这是一个句子</div>