2013-07-03 72 views
15

Tôi muốn Viết hoa chữ cái đầu tiên chỉ và khác nên nhỏ sử dụng CSSLàm thế nào để Viết hoa chữ cái đầu tiên chỉ sử dụng CSS trong từng trường hợp

String là:

SOMETHING BETTER 
sOMETHING bETTER 
Something better 

nhưng kết quả nên

Something Better 

Điều này có thể sử dụng CSS không? Để viết hoa chữ cái đầu tiên Tôi đang sử dụng

text-transform: capitalize; 

Nhưng không thể viết hoa trong mỗi trường hợp. "Tôi muốn sử dụng CSS vì trong ứng dụng của tôi nó đã viết mọi nơi được mã hóa cứng nhưng một lớp đã được gọi ở khắp mọi nơi."

+1

Không thể chỉ với CSS. Thậm chí cố gắng để thác một 'text-transform: lowercase' thành' text-transform: capitalize' sẽ không hoạt động. Nếu bạn muốn sử dụng javascript, đây là liên kết đến câu trả lời cho điều đó: http://stackoverflow.com/questions/196972/convert-string-to-title-case-with-javascript – kalley

+1

Trong PHP - 'ucwords (" UPPERCASE WORD HERE ");', và kết quả: 'Uppercase Word Here" '- http: //www.php.net/manual/en/function.ucwords.php Bạn không thể làm điều đó chỉ bằng CSS, bởi vì bạn không thể làm 'chữ thường' và sau đó là' viết hoa'. –

+0

có thể trùng lặp của [tạo chữ hoa đầu tiên trong css] (http://stackoverflow.com/questions/5577364/make-the-first-character-uppercase-in-css) – yoeriboven

Trả lời

7

Không thể thực hiện với CSS một mình nhưng bạn có thể làm điều đó với Javascript hoặc PHP chẳng hạn.

Trong PHP

ucwords() 

Và trong Javascript

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

Trích từ Convert string to title case with JavaScript

36

bạn sẽ có thể sử dụng :first-letter giả yếu tố:

.fl { 
display: inline-block; 
} 

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

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

sản lượng:

gì đó tốt hơn

+2

Điều này là đúng, nhưng có nghĩa là mỗi từ cần phải được bọc trong một 'span', đó là xấu xí – naththedeveloper

+6

có, nó là xấu xí, nhưng nó sử dụng CSS :) – mzmm56

+0

Thêm một số [javascript ma thuật] (http://stackoverflow.com/a/17451072/561731)^_^@ mzmm56 – Neal

6

Bạn có thể thử một sự kết hợp của this answer và một số javascript (sử dụng 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; 
} 

Demo: http://jsfiddle.net/maniator/ZHhqj/

+0

Cảm ơn, nó giúp tôi. –

2

Tại sao không bạn chỉ cần sử dụng: yếu tố giả đầu tiên chữ trong css?

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

} 

h2{ 

*your general code for h2 goes here;* 

} 
0

Có, CSS không trợ giúp ở đây. Chào mừng bạn đến với thế giới JavaScript, nơi mọi thứ đều có thể.

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> 
Các vấn đề liên quan