更改每个单词的第一个字母的值
我试图使用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); });