สำหรับการอ้างอิงโซลูชันที่ไม่ใช่ CSS:
ด้านล่างคือ JS บางตัวที่ปรับขนาดแบบอักษรใหม่ตามความยาวข้อความภายในคอนเทนเนอร์
Codepenด้วยรหัสที่ปรับเปลี่ยนเล็กน้อย แต่มีแนวคิดเดียวกันดังนี้:
function scaleFontSize(element) {
var container = document.getElementById(element);
// Reset font-size to 100% to begin
container.style.fontSize = "100%";
// Check if the text is wider than its container,
// if so then reduce font-size
if (container.scrollWidth > container.clientWidth) {
container.style.fontSize = "70%";
}
}
สำหรับฉันฉันเรียกใช้ฟังก์ชันนี้เมื่อผู้ใช้ทำการเลือกในเมนูแบบเลื่อนลงจากนั้น div ในเมนูของฉันจะได้รับการเติมข้อมูล (นี่คือที่ที่ฉันมีข้อความไดนามิกเกิดขึ้น)
scaleFontSize("my_container_div");
นอกจากนี้ฉันยังใช้ CSS ellipses ("... ") เพื่อตัดทอนข้อความที่ยาวขึ้นเช่นกัน:
#my_container_div {
width: 200px; /* width required for text-overflow to work */
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
ดังนั้นในที่สุด:
ข้อความสั้น:เช่น "APPLES"
แสดงผลอย่างเต็มที่ตัวอักษรขนาดใหญ่ที่ดี
ข้อความยาว:เช่น "แอปเปิ้ล & ส้ม"
รับการลดขนาดลง 70% ผ่านฟังก์ชั่นการปรับขนาด JS ด้านบน
ข้อความยาวสุด:เช่น "แอปเปิ้ล & ส้ม & กล้วย ... "
รับลดขนาดลง 70% และถูกตัดทอนด้วย "... " วงรีผ่านฟังก์ชันการปรับขนาด JS ด้านบนพร้อมกับกฎ CSS
คุณสามารถสำรวจการเล่นด้วยระยะห่างระหว่างตัวอักษร CSS เพื่อทำให้ข้อความแคบลงโดยคงขนาดตัวอักษรไว้เหมือนเดิม
width
ในem
สิ่ง s ไปทางรอบอื่น ๆ มันwidth
ขึ้นอยู่กับfont-size
ว่า @JosephSilber นั่นคือสิ่งที่ฉันคิด