การพิมพ์

หากคุณไม่ได้ระบุรูปแบบใดๆ สำหรับข้อความ เบราว์เซอร์จะใช้รูปแบบเริ่มต้นของตนเอง ไฟล์เหล่านี้เรียกว่าสไตล์ชีต User Agent และอาจแตกต่างกันไปในแต่ละเบราว์เซอร์ ผู้ใช้สามารถตั้งค่ากำหนดสำหรับแสดงข้อความด้วยตนเองได้เช่นกัน

หากไม่ได้ระบุความยาวบรรทัด เบราว์เซอร์จะตัดบรรทัดข้อความที่ขอบหน้าจอ ดังนั้นข้อความบนเว็บจึงปรับเปลี่ยนตามอุปกรณ์โดยค่าเริ่มต้น โดยจะเลื่อนให้พอดีกับวิวพอร์ตของผู้ใช้

แต่การที่ข้อความพอดีกับหน้าจอไม่ได้หมายความว่าจะอ่านได้อย่างสบายตา การจัดรูปแบบตัวอักษรที่ดีคือการนำเสนอข้อความอย่างเหมาะสม การจัดรูปแบบตัวอักษรมีมากกว่าการเลือกแบบอักษรที่เหมาะสม คุณต้องพิจารณาถึงค่ากําหนดของผู้ใช้ ขนาดของข้อความ ความยาวบรรทัด และระยะห่างระหว่างบรรทัดของข้อความ

ขนาดข้อความ

การจะรู้ขนาดข้อความบนเว็บที่เหมาะสมนั้นเป็นเรื่องยาก

หากผู้ใช้ใช้หน้าจอขนาดเล็ก ก็อาจเป็นไปได้ว่าหน้าจอจะอยู่ใกล้กับดวงตาของผู้ใช้พอสมควร ห่างออกไปเพียงระยะเดียวกับความยาวของมือ

แต่เมื่อหน้าจอมีขนาดใหญ่ขึ้น การเชื่อมต่อก็ทำได้ยากขึ้น หน้าจอขนาดแล็ปท็อปอาจอยู่ใกล้ผู้ชมพอสมควร แต่จอภาพเดสก์ท็อปแบบหน้าจอกว้างจะมีขนาดใกล้เคียงกับหน้าจอทีวี ผู้คนสามารถนั่งห่างจากหน้าจอเดสก์ท็อปไปได้ 1 ก้าว แต่ห่างออกไปจากทีวีมาก

อย่างไรก็ตาม แม้ว่าคุณจะไม่ทราบแน่ชัดว่าผู้ใช้อยู่ห่างจากหน้าจอไกลแค่ไหน แต่คุณก็ลองใช้ขนาดข้อความที่น่าจะเหมาะสมได้ ใช้ขนาดข้อความที่เล็กลงสำหรับหน้าจอขนาดเล็กและขนาดข้อความที่ใหญ่ขึ้นสำหรับหน้าจอขนาดใหญ่

คุณใช้คิวรี่สื่อเพื่อเปลี่ยนพร็อพเพอร์ตี้ font-size ได้เมื่อหน้าจอมีขนาดกว้างขึ้น

@media (min-width: 30em) {
  html {
    font-size: 125%;
  }
}

@media (min-width: 40em) {
  html {
    font-size: 150%;
  }
}

@media (min-width: 50em) {
  html {
    font-size: 175%;
  }
}

@media (min-width: 60em) {
  html {
    font-size: 200%;
  }
}

การปรับขนาดข้อความ

การสลับระหว่างข้อความขนาดคงที่ที่เบรกพอยท์เฉพาะนั้นเป็นเรื่องที่ค่อนข้างยาก แนวทางที่ปรับเปลี่ยนได้มากขึ้นคือให้ขนาดข้อความขึ้นอยู่กับความกว้างของอุปกรณ์ของผู้ใช้

หน่วย vw ใน CSS ย่อมาจาก "ความกว้างของวิวพอร์ต" การเชื่อมต่อขนาดแบบอักษรเข้ากับความกว้างของวิวพอร์ตหมายความว่าข้อความจะขยายและย่อตามสัดส่วนความกว้างของเบราว์เซอร์ ซึ่งทำให้คาดเดาขนาดข้อความที่ความกว้างหนึ่งๆ ได้ยาก แต่คุณก็ทราบดีว่าขนาดข้อความจะเหมาะสมกับความกว้างของเบราว์เซอร์ของผู้ใช้

สิ่งสำคัญคืออย่าใช้ vw อย่างเดียวในการประกาศขนาดแบบอักษร

ไม่ควรทำ
html {
  font-size: 2.5vw;
}

หากทำเช่นนี้ ผู้ใช้จะปรับขนาดข้อความไม่ได้ ข้อความจะปรับขนาดได้หากคุณผสมหน่วยแบบสัมพัทธ์ เช่น em, rem หรือ ch ฟังก์ชัน calc() ของ CSS เหมาะสําหรับกรณีนี้

ควรทำ
html {
  font-size: calc(0.75rem + 1.5vw);
}

ปล่อยให้เบราว์เซอร์คำนวณ ซึ่งทำให้คาดเดาขนาดข้อความที่แน่นอนที่ความกว้างหนึ่งๆ ได้ยาก แต่คุณก็ทราบดีว่าขนาดข้อความจะอยู่ในช่วงที่ถูกต้อง โดยเบราว์เซอร์ของผู้ใช้จะเป็นผู้คํานวณขนาดข้อความที่แน่นอน

แต่ตอนนี้มีความเป็นไปได้ว่าข้อความจะเล็กเกินไปในหน้าจอแคบและใหญ่เกินไปบนหน้าจอกว้าง

การจำกัดข้อความ

คุณคงไม่อยากให้ข้อความขยายหรือหดจนสุด คุณควบคุมจุดเริ่มต้นและจุดสิ้นสุดของการขยายขนาดได้โดยใช้ฟังก์ชัน CSS clamp() ซึ่งจะ "จำกัด" การปรับขนาดให้อยู่ในช่วงที่ต้องการ

ฟังก์ชัน clamp() คล้ายกับฟังก์ชัน calc() แต่ใช้ค่า 3 ค่า ค่ากลางจะเหมือนกับค่าที่คุณส่งไปยัง calc() ค่าเปิดจะระบุขนาดขั้นต่ำ ซึ่งในกรณีนี้คือ 1rem เพื่อไม่ให้ต่ำกว่าขนาดแบบอักษรที่ผู้ใช้ต้องการ ค่าปิดจะระบุขนาดสูงสุด

html {
  font-size: clamp(1rem, 0.75rem + 1.5vw, 2rem);
}

ตอนนี้ขนาดข้อความจะขยายหรือหดตามสัดส่วนกับหน้าจอของผู้ใช้ แต่ขนาดข้อความจะไม่ต่ำกว่า 1rem หรือสูงกว่า 2rem

ความยาวของบรรทัด

เว็บไม่ใช่สิ่งพิมพ์ แต่เราเรียนรู้บทเรียนจากโลกสิ่งพิมพ์และนำมาปรับใช้ในเว็บได้

ในหนังสือคลาสสิก The Elements of Typographic Style ของ Robert Bringhurst ได้พูดถึงความยาวบรรทัด (หรือมาตรวัด) ดังนี้

ตัวอักษรทั้งหมดตั้งแต่ 45 ถึง 75 ตัวได้รับการยกย่องอย่างกว้างขวางว่าเป็นความยาวบรรทัดที่น่าพอใจสำหรับหน้าที่คอลัมน์เดียวมีหน้าข้อความแบบ Serif ในขนาดตัวอักษร บรรทัดที่มีความยาว 66 อักขระ (นับทั้งตัวอักษรและการเว้นวรรค) เป็นที่ยอมรับกันโดยทั่วไปว่าเหมาะที่สุด สำหรับงานหลายคอลัมน์ ค่าเฉลี่ยที่ดีกว่าคือ 40-50 อักขระ

คุณไม่สามารถกำหนดความยาวบรรทัดใน CSS โดยตรง ไม่มีพร็อพเพอร์ตี้ line-length แต่คุณสามารถหยุดไม่ให้ข้อความกว้างเกินไปได้โดยจำกัดความกว้างของคอนเทนเนอร์ พร็อพเพอร์ตี้ max-inline-size เหมาะสําหรับกรณีนี้

อย่ากำหนดความยาวบรรทัดด้วยหน่วยคงที่ เช่น px ผู้ใช้สามารถปรับขนาดแบบอักษรขึ้นและลงได้ และความยาวบรรทัดควรปรับตาม ใช้หน่วยสัมพัทธ์ เช่น rem หรือ ch

ไม่ควรทำ
article {
  max-inline-size: 700px;
}
ควรทำ
article {
  max-inline-size: 66ch;
}

การใช้หน่วย ch สำหรับความกว้างจะทำให้บรรทัดใหม่ตัดขึ้นที่ตัวอักษรที่ 66 เมื่อใช้ขนาดแบบอักษรนั้น

ช่องว่างระหว่างบรรทัด

แม้ว่าจะไม่มีพร็อพเพอร์ตี้ line-length ใน CSS แต่ก็มีพร็อพเพอร์ตี้ line-height

บรรทัดข้อความที่สั้นกว่าอาจมีค่า line-height มากกว่า แต่หากใช้ค่า line-height ขนาดใหญ่กับข้อความบรรทัดยาวๆ สายตาของผู้อ่านจะเลื่อนจากท้ายบรรทัดหนึ่งไปยังต้นบรรทัดถัดไปได้ยาก

article {
  max-inline-size: 66ch;
  line-height: 1.65;
}
blockquote {
  max-inline-size: 45ch;
  line-height: 2;
}

ใช้ค่าที่ไม่มีหน่วยสำหรับประกาศ line-height วิธีนี้ช่วยให้ความสูงของบรรทัดสัมพันธ์กับ font-size

ไม่ควรทำ
line-height: 24px;
ควรทำ
line-height: 1.5;

ชุดค่าผสมและมาตราส่วน

อย่าลืมจัดลําดับความสําคัญเมื่อสร้างอินเทอร์เฟซผู้ใช้เพื่อให้หน้าเว็บมีความชัดเจนและใช้งานได้ง่ายขึ้น วิธีที่ดีในการทำเช่นนี้คือการใช้รูปแบบตัวอักษรที่ฝังอยู่ในระบบการออกแบบ

แบบอักษรเว็บ

ตัวอักษรเปรียบเสมือนเสียงของคํา ก่อนหน้านี้ เว็บมีตัวเลือกแบบอักษรเพียงไม่กี่แบบ โดยจะมีเพียงแบบอักษรของระบบเท่านั้น แต่ตอนนี้คุณเลือกแบบอักษรเว็บที่เข้ากับความรู้สึกของเนื้อหาได้แล้ว

ใช้ @font-face เพื่อบอกเบราว์เซอร์ว่าจะค้นหาไฟล์แบบอักษรเว็บได้จากที่ใด ใช้ woff2 เป็นรูปแบบแบบอักษรของเว็บ เนื่องจากได้รับการสนับสนุนอย่างดีและมีประสิทธิภาพสูงสุด

@font-face {
  font-family: Roboto;
  src: url('/fonts/roboto-regular.woff2') format('woff2');
}
body {
  font-family: Roboto, sans-serif;
}

แต่ไฟล์เว็บฟอนต์ทุกไฟล์ที่คุณเพิ่มอาจทำให้ประสบการณ์ของผู้ใช้แย่ลงเนื่องจากจะเพิ่มเวลาในการโหลดหน้าเว็บ โปรดทราบว่าการออกแบบไม่ได้เกี่ยวกับรูปลักษณ์ของพิกเซลสุดท้ายเท่านั้น ความเร็วในการวาดพิกเซลเหล่านั้นเป็นส่วนสําคัญของประสบการณ์ของผู้ใช้ ประสบการณ์การใช้งานที่รวดเร็วคือประสบการณ์ที่ดีของผู้ใช้

การโหลดแบบอักษร

คุณสามารถขอให้เบราว์เซอร์เริ่มดาวน์โหลดไฟล์แบบอักษรโดยเร็วที่สุด เพิ่มองค์ประกอบ link ลงใน head ของเอกสารซึ่งอ้างอิงไฟล์แบบอักษรเว็บ แอตทริบิวต์ rel ที่มีค่าเป็น preload บอกให้เบราว์เซอร์จัดลําดับความสําคัญของไฟล์นั้น แอตทริบิวต์ as ที่มีค่า font จะบอกเบราว์เซอร์ว่าไฟล์นี้เป็นไฟล์ประเภทใด แอตทริบิวต์ type ช่วยให้คุณระบุได้ละเอียดยิ่งขึ้น

<link href="/fonts/roboto-regular.woff2" type="font/woff2" 
  rel="preload" as="font" crossorigin>

คุณต้องใส่แอตทริบิวต์ crossorigin แม้ว่าจะโฮสต์ไฟล์แบบอักษรด้วยตนเองก็ตาม

ใช้พร็อพเพอร์ตี้ font-display ของ CSS เพื่อบอกเบราว์เซอร์ว่าจะจัดการการเปลี่ยนจากแบบอักษรของระบบเป็นแบบอักษรเว็บอย่างไร คุณเลือกที่จะไม่แสดงข้อความเลยจนกว่าเว็บแบบอักษรจะโหลด คุณสามารถเลือกแสดงแบบอักษรของระบบทันที แล้วเปลี่ยนไปใช้แบบอักษรบนเว็บเมื่อโหลดเสร็จ กลยุทธ์ทั้ง 2 รูปแบบมีข้อเสีย หากคุณรอจนกว่าเว็บฟอนต์จะดาวน์โหลดก่อนที่จะแสดงข้อความ ผู้ใช้อาจต้องจ้องมองหน้าเว็บว่างเปล่าเป็นเวลานานจนน่าหงุดหงิด หากคุณแสดงข้อความในแบบอักษรของระบบก่อนแล้วเปลี่ยนไปใช้แบบอักษรเว็บ ผู้ใช้อาจเห็นเนื้อหาในหน้าเว็บเปลี่ยนตำแหน่งอย่างกะทันหัน

วิธีที่ดีในการประนีประนอมคือรอสักครู่ก่อนที่จะแสดงข้อความ หากเว็บแบบอักษรโหลดก่อนหมดเวลาดังกล่าว ข้อความจะแสดงโดยใช้เว็บแบบอักษรโดยไม่มีการเปลี่ยนแปลงเนื้อหา หากเว็บแบบอักษรยังคงไม่โหลดหลังจากหมดเวลา ระบบจะแสดงข้อความโดยใช้แบบอักษรของระบบเพื่อให้ผู้ใช้อ่านเนื้อหาได้อย่างน้อย

ใช้ค่า font-display เป็น swap หากยังคงต้องการให้แบบอักษรเว็บแทนที่แบบอักษรของระบบทุกครั้งที่โหลดแบบอักษรเว็บในท้ายที่สุด

body {
  font-family: Roboto, sans-serif;
  font-display: swap;
}

ใช้ค่า font-display เป็น fallback หากต้องการใช้แบบอักษรของระบบเมื่อแสดงผลข้อความแล้ว

body {
  font-family: Roboto, sans-serif;
  font-display: fallback;
}

แบบอักษรที่ปรับแต่งได้

หากคุณใช้แบบอักษรเดียวกันในน้ำหนักหรือสไตล์ที่แตกต่างกันจำนวนมาก คุณอาจต้องใช้ไฟล์แบบอักษรแยกกันจำนวนมาก ซึ่งก็คือไฟล์แบบอักษรแยกกันสำหรับน้ำหนักหรือสไตล์แต่ละแบบ

แบบอักษรแบบแปรผันช่วยแก้ปัญหานี้ได้โดยใช้ไฟล์เดียว ไฟล์แบบอักษรที่เปลี่ยนแปลงได้จะปรับเปลี่ยนตามขนาดแทนที่จะมีไฟล์แยกต่างหากสำหรับแบบปกติ ตัวหนา ตัวหนาพิเศษ และอื่นๆ ซึ่งมีข้อมูลทั้งหมดที่จำเป็นในการแสดงผลในน้ำหนักหรือสไตล์ต่างๆ

อักษร &quot;ก&quot; ที่แสดงในน้ำหนักที่แตกต่างกัน

ซึ่งหมายความว่าไฟล์แบบอักษรแบบแปรผันไฟล์เดียวจะมีขนาดใหญ่กว่าไฟล์แบบอักษรปกติไฟล์เดียว แต่ไฟล์แบบอักษรแบบแปรผันไฟล์เดียวอาจมีขนาดเล็กกว่าไฟล์แบบอักษรปกติหลายไฟล์ หากคุณใช้แบบอักษรที่มีความหนาหลายแบบ แบบอักษรแบบผันแปรอาจช่วยเพิ่มประสิทธิภาพได้อย่างมาก

การพิมพ์ตัวอักษรที่ดีบนเว็บไม่ใช่แค่ประเภทที่คุณเลือกในฐานะนักออกแบบ การจัดรูปแบบแบบปรับเปลี่ยนได้ยังคำนึงถึงอุปกรณ์และการเชื่อมต่อเครือข่ายของผู้ใช้ด้วย ผลลัพธ์ที่ได้คือการออกแบบที่ลงตัวไม่ว่าจะดูจากอุปกรณ์ใดก็ตาม

เมื่อคุณเข้าใจข้อความที่ปรับเปลี่ยนตามพื้นที่โฆษณาอย่างถ่องแท้แล้ว ก็ถึงเวลาเจาะลึกเรื่องรูปภาพที่ปรับเปลี่ยนตามพื้นที่โฆษณา

ตรวจสอบความเข้าใจ

ทดสอบความรู้เกี่ยวกับการพิมพ์

คุณต้องเพิ่มสไตล์เพื่อให้ข้อความตัดขึ้นบรรทัดใหม่ภายในวิวพอร์ต

จริง
คุณไม่จำเป็นต้องเพิ่มสไตล์
เท็จ
ข้อความจะตัดขึ้นบรรทัดใหม่โดยค่าเริ่มต้นโดยไม่มีสไตล์เพิ่มเติม

clamp() มีประโยชน์สำหรับแบบอักษรแบบยืดหยุ่นเนื่องจาก

ซึ่งช่วยให้ฝังฟังก์ชัน calc() ได้ง่าย
แม้ว่าจะเป็นเช่นนั้น แต่ก็ไม่ได้เป็นเหตุผลที่ดีในการใช้ clamp() สำหรับการจัดรูปแบบตัวอักษร
เบราว์เซอร์รองรับการใช้งานได้ดีมาก
แม้ว่าจะเป็นเช่นนั้น แต่ก็ไม่ได้เป็นเหตุผลที่ดีในการใช้ clamp() สำหรับการจัดรูปแบบตัวอักษร
นอกจากนี้ยังช่วยให้ล็อกขนาดแบบอักษรระหว่างขนาดต่ำสุดและสูงสุดที่เหมาะสมได้ ในขณะเดียวกันก็ระบุค่าตรงกลางที่รองรับการปรับขนาด
ป้องกันข้อความขนาดเล็กหรือใหญ่เกินไป ในขณะเดียวกันก็ปรับขนาดแบบอักษรให้ลื่นไหล
ซึ่งทำให้การคำนวณเป็นเรื่องง่าย
โปรดลองอีกครั้ง

ในคู่มือนี้แนะนําค่า line-height ประเภทใด

24px
โพสต์ดังกล่าวระบุไว้อย่างชัดเจนว่าอย่าใช้ค่าพิกเซลสําหรับ line-height
2rem
แม้ว่า rem จะเป็นค่าสัมพัทธ์ แต่ก็อาจสร้างบรรทัดสูงที่เล็กหรือใหญ่เกินไปได้
1.5
ขอแนะนำให้ใช้ค่าสัมพัทธ์ที่ไม่มีหน่วย
2vw
หน่วยวิวพอร์ตที่ line-height จะเกิดปัญหา

font-display ทำอะไรได้บ้าง

บอกเบราว์เซอร์วิธีจัดการการเปลี่ยนจากแบบอักษรของระบบเป็นแบบอักษรเว็บ
ช่วยในการเปลี่ยนไปใช้แบบอักษรที่กำหนดเอง
อนุญาตให้ตั้งค่าแบบอักษรเป็น block หรือ inline-block
แบบอักษรไม่มีประเภทการแสดงผล
เปลี่ยนแปลงหากซ่อนแบบอักษรไว้หรือไม่
ซ่อนแบบอักษรไม่ได้
ควบคุมเวลาในการโหลดแบบอักษรจากระยะไกลเพื่อประสบการณ์ของผู้ใช้
ช่วยให้ผู้แต่งปรับแต่งประสบการณ์การโหลดแบบอักษรที่กำหนดเองได้