สร้างอักขระตัวพิมพ์ใหญ่ตัวแรกใน CSS


255

มีวิธีสร้างตัวอักษรตัวพิมพ์ใหญ่ตัวแรกในป้ายกำกับใน CSS หรือไม่

นี่คือ HTML ของฉัน:

<a class="m_title" href="">gorr</a>
<a class="m_title" href="">trro</a>
<a class="m_title" href="">krro</a>
<a class="m_title" href="">yrro</a>
<a class="m_title" href="">gwwr</a>


2
เพื่อระบุ - ตัวอักษรตัวแรกและตัวอักษรตัวแรกเท่านั้น ซึ่งทำให้text-transform: capitalize;ไม่พอเมื่อมีหลายคำ
wiktus239

คำตอบ:


622

มีคุณสมบัติสำหรับที่:

a.m_title {
    text-transform: capitalize;
}

หากลิงก์ของคุณมีหลายคำและคุณต้องการให้อักษรตัวแรกของคำแรกเป็นตัวพิมพ์ใหญ่ให้ใช้:first-letterกับการแปลงที่ต่างออกไปแทน (แม้ว่ามันจะไม่สำคัญก็ตาม) หมายเหตุว่าเพื่อให้:first-letterการทำงานของคุณaองค์ประกอบจะต้องมีภาชนะบล็อก (ซึ่งสามารถdisplay: block, display: inline-blockหรือใด ๆ ของความหลากหลายของชุดอื่น ๆ ของหนึ่งหรือมากกว่าคุณสมบัติ):

a.m_title {
    display: block;
}

a.m_title:first-letter {
    text-transform: uppercase;
}

3
@alanjds: ใช่มันใช้ได้กับ IE ทุกเวอร์ชันที่รองรับ CSS มันเป็นเทคโนโลยีที่เก่ามาก
BoltClock

3
คุณอาจต้องการใช้เครื่องหมายทวิภาคกึ่งคู่ดูcss-tricks.com/almanac/selectors/f/first-letter
ndequeker

5
@Voles: แน่นอนว่าคุณไม่จำเป็นต้องรองรับ IE8 และรุ่นเก่ากว่า ไม่ได้บอกว่าคุณไม่สามารถใช้โคลอนคู่ได้หากต้องการ (สำหรับสิ่งที่คุ้มค่าในช่วงเวลาของคำตอบนี้ซึ่งโพสต์เมื่อ 2 ปีครึ่งที่ผ่านมานโยบายส่วนบุคคลของฉันคือการสนับสนุน IE8 โดยค่าเริ่มต้นวันนี้ฉันไม่ทำ)
BoltClock

1
หมายเหตุหากdisplay: blockข้อกำหนด (ใครจะรู้ว่าเป็นเพราะเหตุใด) จะทำให้เรื่องนี้เป็นไปได้ยาก:first-letterเช่นdisplay: inline-blockกัน
Mitya

1
@Henry Garcia De Guzman: เพราะมันเป็นตัวพิมพ์ใหญ่ทุกอย่างไม่ใช่แค่ตัวอักษรตัวแรก (ของแต่ละคำหรือประโยคหรืออะไรก็ตาม)
BoltClock

55

โปรดทราบว่า::first-letterตัวเลือกไม่ทำงานกับองค์ประกอบแบบอินไลน์ดังนั้นจะต้องเป็นอย่างใดอย่างหนึ่งblockหรือinline-blockดังต่อไปนี้:

.m_title {display:inline-block}
.m_title:first-letter {text-transform: uppercase}

1
ในกรณีของฉันข้อความทั้งหมดอยู่ในเมืองหลวงดังนั้นฉันต้องเพิ่มการแปลงข้อความ: ตัวพิมพ์เล็กเป็น. m_title และตอนนี้มันทำงานได้อย่างสมบูรณ์แบบ!
hjuster


15

ฉันแนะนำให้ใช้

#selector {
    text-transform: capitalize;
}

หรือ

#selector::first-letter {
    text-transform: uppercase;
}

โดยวิธีการตรวจสอบการเชื่อมโยง w3schools นี้: http://www.w3schools.com/cssref/pr_text_text-transform.asp


2
คำตอบที่ดี แต่นั่นไม่ใช่ลิงก์ไปยังเอกสาร w3c
เตฟาน

1
เฮ้โปรดทราบ: การแปลงข้อความ 'เริ่มต้น' ไม่ได้หมายความว่า 'ใช้อักษรตัวพิมพ์ใหญ่' เป็นตัวพิมพ์ใหญ่ แต่หมายถึง 'เปลี่ยนกลับเป็นค่าเริ่มต้นสำหรับคุณสมบัตินี้'
Marcos Buarque

ขอบคุณฉันใช้ทั้งการแก้ไขที่แนะนำแล้ว
Marcos Buarque

5

ทำให้เป็นตัวพิมพ์เล็กก่อน:

.m_title {text-transform: lowercase}

จากนั้นให้เป็นตัวอักษรตัวพิมพ์ใหญ่ตัวแรก:

.m_title:first-letter {text-transform: uppercase}

"text-transform: capitalize" ทำงานเพื่อคำหนึ่ง แต่ถ้าคุณต้องการใช้สำหรับประโยคการแก้ปัญหานี้สมบูรณ์แบบ


2
: ตัวอักษรตัวแรกไม่ทำงานกับinlineองค์ประกอบตั้งdisplay:inline-blockเป็นกรณีของคุณ ( stackoverflow.com/questions/7631722/… )
Fanky

1
<script type="text/javascript">
     $(document).ready(function() {
     var asdf = $('.capsf').text();

    $('.capsf').text(asdf.toLowerCase());
     });
     </script>
<div style="text-transform: capitalize;"  class="capsf">sd GJHGJ GJHgjh gh hghhjk ku</div>

มันเป็นงานของฉัน แนวคิด .. ย่อหน้าแต่ละคำในการแสดงตัวอักษรตัวพิมพ์ใหญ่ตัวแรก
Gnana Sekar

-2

ฉันอยากจะแนะนำให้คุณใช้รหัสต่อไปนี้ใน CSS:

    text-transform:uppercase; 

ตรวจสอบให้แน่ใจว่าคุณใส่ไว้ในชั้นเรียนของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.