更改每个单词的第一个字母的值

我试图使用jQuery,CSS或PHP来增加字符串中每个单词的第一个字母的字体大小。 例如,我将在h1标签中有一个标题,如下所示:

The title of this page goes here

我想要将所有文本文本转换为大写(CSS没有问题),但随后增加字符串中出现的第一个字母的字体大小。 使用CSS或jQuery,有没有办法选择每个单词的第一个字母并进行修改?

 $(document).ready(function() { var words = $('h1').text().split(' '); var html = ''; $.each(words, function() { html += ''+this.substring(0,1)+''+this.substring(1) + ' '; }); $('h1').html(html); }); 

以下是它的实例: http : //jsfiddle.net/hCvsu/1/

我无法得到:first-letter工作,但这是一个可能的解决方案,假设

不包含其他标签或实体:

 $('h1').html(function(i,html){ return html.replace(/(\S)(\S*)/g, '$1$2'); }); 

CSS:

 .FirstLetter {color:green} 

这里可能的好处是,它应该适用于所有浏览器。
正则表达式非常简单: \S代表非空白字符。 它逐字匹配并捕获第一组中每个单词的第一个字母( $1 ),以及第二组中的其余字母( $2 ),以便于替换。

工作示例: http : //jsbin.com/ufovi4

如果您的页面中只有一个h1,则Ajma解决方案有效。

这适用于所有h1:

  $('h1').each(function() { var jqt = $(this); var txt = jqt.text(); jqt.html(''+txt.substring(0,1)+''+ txt.substring(1)); }); 

可能的改进:使用类创建跨度而不是带样式的跨度,并在CSS中创建字体大小:200%。

可能的问题:如果你的h1包含其他标签(它不应该!)那些标签丢失,只保留文本。

希望它有所帮助,西蒙娜

这是JSfiddle

 var h1 = $('h1'), words = h1.html().split(' '), withCaps = ''; for (var i = 0; i < words.length; i++) withCaps += '' + words[i].substring(0, 1).toUpperCase() + '' + words[i].substring(1) + ' '; h1.html(withCaps); 

最简单的方法可能只是直接的CSS,虽然它会为你创建一些额外的标记。 但是,JQuery最终会产生相同数量的额外标记,但需要额外的开销,并且在没有JS支持的情况下会失败。 h1.dropcaps div {float:left; } h1.dropcaps div:first-letter {font-size:300%; font-weight:bold; }

 

Your
text
here

更新:事实certificate:在某些浏览器中,第一个字母在内联元素中不起作用。

解决这个问题的技巧是将它们放在div中,然后浮动div。 我修改了我的标记。 http://jsfiddle.net/MBZaw/

这会奏效。 只需在CSS中设置h1 span {font-size: 125%} ,或其他任何内容。

 $('h1').each(function(){ var $this = $(this); var words = $this.text().split(' '); var newHtml = ''; for (var i = 0; i < words.length; i++) { newHtml += '' + words[i].substring(0, 1) + '' + words[i].substring(1) + ' '; } $this.html(newHtml); });