如何在每种情况下仅使用CSS来首字母大写

时间:2013-07-03 14:12:07

标签: css word capitalization

我想只使用CSS

来大写第一个字母和其他应该是小

字符串是:

SOMETHING BETTER 
sOMETHING bETTER
Something better

但结果应为

Something Better

这可以使用CSS吗?要资本化我使用的第一个字母

text-transform: capitalize;

但不能在每种情况下都有资本化。 “我想使用CSS,因为在我的应用程序中,它已经编写了每个硬编码的地方,但是到处都有一个类。”

5 个答案:

答案 0 :(得分:36)

您应该能够使用:first-letter伪元素:

.fl {
 display: inline-block;
}

.fl:first-letter {
 text-transform:uppercase;
}

<p>
 <span class="fl">something</span> <span class="fl">better</span>
</p>

的产率:

更好的东西

答案 1 :(得分:7)

仅使用CSS是不可能的,但您可以使用Javascript或PHP来实现。

PHP

ucwords()

Javascript

function toTitleCase(str){
    return str.replace(/\w\S*/g, function(txt){
        return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
}

摘自 Convert string to title case with JavaScript

答案 2 :(得分:6)

您可以尝试this answer和一些javascript(使用jQuery)的组合

HTML:

<div class='capitalize'>
    SOMETHING BETTER 
    SOMETHING BETTER 
    SOMETHING BETTER 
</div>

JAVASCRIPT:

$('.capitalize').each(function(){
    var text = this.innerText;
    var words = text.split(" ");
    var spans = [];
    var _this = $(this);
    this.innerHTML = "";
    words.forEach(function(word, index){
        _this.append($('<span>', {text: word}));
    });
});

CSS:

.capitalize {
    text-transform: lowercase;
}

.capitalize span {
    display: inline-block;
    padding-right: 1em  
}

.capitalize span:first-letter {
    text-transform: uppercase !important;
}

演示:http://jsfiddle.net/maniator/ZHhqj/

答案 3 :(得分:2)

为什么不在css中使用:first-letter伪元素?

h2:first-letter{
text-transform: uppercase;

}

h2{

*your general code for h2 goes here;*

}

答案 4 :(得分:0)

是的,CSS在这里没有帮助。欢迎来到JavaScript的世界,一切皆有可能。

window.onload = function(){
  var elements = document.getElementsByClassName("each-word")
  for (var i=0; i<elements.length; i++){
    elements[i].innerHTML = elements[i].innerHTML.replace(/\\b([a-z])([a-z]+)?\\b/gim, "<span class='first-letter'>$1</span>$2")
  }
}



  .first-letter {
    color: red;
  }



<p class="each-word">First letter of every word is now red!</p>