HTML5中的文本高亮显示

4

我正在尝试使用Unicode编写泰卢固语文本,以便根据声音将文本更改为多种颜色进行突出显示。为此,我使用HTML5和JS。

<div  class="pa">&#3114;</div>
<div  class="paa">&#3114;&#3134;</div>

通过使用
$("#paa").animate({ color: "blue" }, 500); 

我可以改变整个字母的颜色,但现在我想突出显示其中的一部分。请建议如何实现?


1
嗨Persijn,谢谢你。但是我只想强调信的一部分。 - priyanka
1
可能是如何将CSS应用于字符的一半?的重复问题。 - James Thorpe
1
你能举一个英文字母的例子吗?因为解决方案将保持不变。这样问题就清楚了。 - Shekhar Pankaj
2
不,我已将那个paa视为id而不是class,所以没有任何问题。 - priyanka
1
你能否发布一个带有实时示例的内容,这样可以帮助我们更好地理解您的需求。 - Mox Shah
显示剩余9条评论
4个回答

3
有一些CSS技巧可以模拟background-clip:text;或类似SVG的效果。

span {
  position:relative;
  color:green;
}
span:before {
  position:absolute;
  top:0;
  left:0;
  overflow:hidden;
  content:attr(data-text);
  color:blue;
  height:0.7em;
  overflow:hidden;
  animation: txtclr 4s infinite;
}
p {
  background:yellow;
  color:rgba(128, 0, 128 , 0.5);
  font-size:2em;
  font-weight:bold;
  background:linear-gradient(to bottom,lightgray 50%,yellow 50%);
  display:table;/* demo purpose to shrink to text size*/
  box-shadow:inset -3em 0 rgba(100,100,100,0.5);
  
}
@keyframes txtclr {
  0% {
    height:50%;
  }
  25%,75%{
    height:0;
    width:0;
  }
  50%{
    height:100%;
  }
}
<p><span data-text="my text">my text</span> and some other text </p>

运行代码片段,并看到绿色的文本从上到下填充为蓝色。

没有添加前缀,后续浏览器不需要它 :)


对于这个问题,我想添加一个参考图片,但由于我的声望低,它不允许我发布。 - priyanka

2

这是一件可行的事情,但对于所有语言来说并不容易。在下面的例子中,我为某些字母着色。

http://jsfiddle.net/07hh3z2n/5/

提示是使用 CSS 获得一个没有宽度的 inline-block

.phantom {
    display: inline-block;
    color: red;
    width: 0;
    overflow: visible;
}

如果您想要突出显示的信件部分是现有的Unicode字符,则可以正常工作。否则,您可以尝试使用(或创建)带有要突出显示的字母部分的特殊字体。

2
你的意思是这样吗?只使用CSS将文本流动在上方,不需要JavaScript。但你可以随时用所需的效果和类进行切换。
它使用了过渡属性,允许在事件(如悬停、点击活动等)之后在不同的CSS状态之间进行动画。
为了突出字母的一部分,需要将HTML元素添加两次。我已经用彩色和纯色来做了。这也适用于单个字母。您需要将它们设置为绝对位置并将它们包裹在相对div中。通过这样做,它们将绝对定位于相对包装器div的左上位置(在我的示例中)。如果您使用<span>作为包装器,那么可以保持文本流。
然后将其中一个设置为宽度为0或者任何你想要覆盖另一半字母的宽度。
在我的示例中,只有Y的一半是红色的,另一半(约一半)不是红色的。
如果您想覆盖上半部分,则可以调整高度。

http://jsfiddle.net/L9L8L966/1/

    #container {
        font-size:40px;
        position:relative;
        background-color:#CCC;
        width:450px;
        height:40px;
    }
    #coloured {
        position:absolute;
        z-index:2;
        top:0px;
        left:0px;
        display:block;
        width:0%;
         -webkit-transition: width 1s ease-in-out;
        -moz-transition: width 1s ease-in-out;
        -o-transition: width 1s ease-in-out;
        transition: width 1s ease-in-out;
        color:red;
        overflow:hidden;
    }
    #container:hover #coloured {
        width:100%;
    }
    #plain {
        position:absolute;
        z-index:1;
        width:100%;
        display:block;
        top:0px;
        left:0px;
        color:black;
    }


    
<div id="container">
        <div id="coloured">
            abcdefghijklmnopqrstuvwxyz
        </div>
        <div id="plain">
            abcdefghijklmnopqrstuvwxyz
        </div>
    </div>


1
如果您想在代码中实时突出显示,我建议使用一个名为Highlight.js的javascript框架。它非常轻巧且易于使用。以下是一个带有jquery和knockout示例的fiddle: $('.searchme').highlight('high'); 示例

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接