我要找的是:

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

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

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

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

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


更新:

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


当前回答

我刚刚玩了@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>

其他回答

FWIW,这是我对仅使用CSS的看法:http://codepen.io/ricardozea/pen/uFbts/

几个注意事项:

我这样做的主要原因是为了测试自己,看看我是否能够完成一半角色的造型,同时为OP提供一个有意义的答案。我知道,这不是一个理想的或最具扩展性的解决方案,这里的人提出的解决方案对于“现实世界”场景要好得多。我创建的CSS代码是基于我脑海中的第一个想法和我自己解决这个问题的方法。我的解决方案仅适用于对称字符,如X、A、O、M。**它不适用于非对称字符,例如B、C、F、K或小写字母。**然而,这种方法用不对称的字符创造了非常有趣的“形状”。尝试将CSS中的X改为K或小写字母,如h或p:)

HTML

<span class="half-letter"></span>

SCSS

.half-character { 
  display: inline-block;
  font: bold 350px/.8 Arial;
  position: relative;

  &:before, &:after {
    content: 'X'; //Change character here
    display: inline-block;
    width: 50%;
    overflow: hidden;
    color: #7db9e8;
  }
  &:after {
    position: absolute;
    top: 0;
    left: 50%;
    color: #1e5799;
    transform: rotateY(-180deg);
  }
}

有限的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>

您可以使用以下代码。在此示例中,我使用了h1标记,并添加了一个属性数据title text=“Display text”,它将在h1标记文本元素上显示不同颜色的文本,这会产生如下示例所示的半彩色文本效果

正文{文本对齐:居中;边距:0;}h1小时{颜色:#111;字体系列:arial;位置:相对;字体系列:“Oswald”,无衬线;显示:内联块;字体大小:2.5em;}h1::之后{content:attr(数据标题文本);颜色:#e554e;位置:绝对;左:0;顶部:0;剪辑:矩形(0,1000px,30px,0);}<h1 data title text=“显示文本”>显示文本</h1>


JSFiddle演示

我们将只使用CSS伪选择器来实现!

该技术将使用动态生成的内容和不同的字体大小和宽度。

HTML格式:

<div class='split-color'>Two is better than one.</div>

CSS:

.split-color > span {
    white-space: pre-line;
    position: relative;
    color: #409FBF;
}

.split-color > span:before {
    content: attr(data-content);
    pointer-events: none;  /* Prevents events from targeting pseudo-element */
    position: absolute;
    overflow: hidden;
    color: #264A73;
    width: 50%;
    z-index: 1;
}

要包装动态生成的字符串,可以使用如下函数:

// Wrap each letter in a span tag and return an HTML string
// that can be used to replace the original text
function wrapString(str) {
  var output = [];
  str.split('').forEach(function(letter) {
    var wrapper = document.createElement('span');
    wrapper.dataset.content = wrapper.innerHTML = letter;

    output.push(wrapper.outerHTML);
  });

  return output.join('');
}

// Replace the original text with the split-color text
window.onload = function() {
    var el  = document.querySelector('.split-color'),
        txt = el.innerHTML;
    
    el.innerHTML = wrapString(txt);
}

这可以通过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