Semantic HTML: Best Practices for 2019
เผยแพร่แล้ว: 2019-08-31HTML เชิงความหมายมีความสำคัญมากกว่าที่เคย โดยเฉพาะอย่างยิ่งเมื่อ Google เปลี่ยนแปลงอัลกอริธึมอันดับของหน้าอย่างต่อเนื่อง ตำแหน่งสูงสุดในแต่ละคำถามมีการแข่งขันกันมากขึ้น คุณต้องมีอาวุธลับ และ HTML เชิงความหมายก็เป็นสิ่งที่ดีที่จะมีในคลังแสงของคุณ คุณอาจจะใช้รหัสความหมายบางอย่างเกี่ยวกับเว็บไซต์ของคุณ แต่ที่มากกว่าที่คุณสามารถแทรกสำหรับเนื้อหาที่สำคัญที่ดีกว่าเครื่องมือค้นหาสามารถรวบรวมข้อมูลเว็บไซต์ของคุณและรู้ว่าคุณมีผู้เข้าชมที่คาดหวัง
HTML เชิงความหมายคืออะไร?
โดยสรุป HTML เชิงความหมายคือ HTML ที่มนุษย์สามารถอ่านและทำความเข้าใจได้ มนุษย์ทุกคน ไม่ใช่แค่นักเขียนโค้ดและนักพัฒนา และหากมนุษย์สามารถอ่านได้ง่ายขึ้น หุ่นยนต์ก็สามารถทำได้เช่นกัน หากโรบ็อตสามารถอ่านโครงสร้างของไซต์ของคุณได้ง่ายขึ้น พวกเขาก็สามารถตัดสินใจได้อย่างมีข้อมูลมากขึ้นว่าไซต์ของคุณรองรับคำค้นหาต่างๆ ได้ดีเพียงใด
โดยทั่วไป คุณกำลังบอกโปรแกรมรวบรวมข้อมูลของเครื่องมือค้นหา ว่า "นี่คือโพสต์ในบล็อก" หรือ "นี่คือเมนูนำทาง" หรือ
แต่มันทำอย่างนั้นได้อย่างไร? มันใช้แท็ก HTML5 พิเศษจำนวนมากที่มีความเฉพาะเจาะจงมาก มาดูตัวอย่างกันและคุณจะเห็นเอง
การจัดรูปแบบข้อความ
การจัดรูปแบบข้อความเป็น HTML เชิงความหมายที่พบบ่อยที่สุด และคุณจะเห็นมันทุกวัน ก่อนหน้านี้ ใช้อักษรเดี่ยวเพื่อระบุการจัดรูปแบบ ย่อมาจาก ตัวหนา ตัวเอียง ขีดเส้นใต้ และอื่นๆ
<p>This is <b>bold text</b></p> <p>While <i>this is italics</i>, and this is <u>underlined</u>.</p>
ด้วย HTML เชิงความหมาย คุณจะใช้ข้อความที่ หนักแน่น เป็นตัวหนา และแสดงความสำคัญอย่างยิ่งยวดหรือ em เพื่อทำให้ข้อความเป็นตัวเอียง (หรือเน้นย้ำ) ที่น่าสนใจคือ U ยังคงใช้เพื่อขีดเส้นใต้ข้อความ อย่างไรก็ตาม MDN แนะนำให้ใส่สไตล์ผ่าน CSS ด้วย text-decoration: underline; เพื่อสร้างความแตกต่าง
<p>This is <strong>bold text</strong>, while <em>this is italics</em>.</p> <p>This would be <u style=text-decoration: #222000 wavy underline;">underlined</u>.</p>
เราก็ชอบ เดลที่ จะแสดง ขีดทับ ข้อความที่ถูกลบ
<p>We are also fond of <em>del</em> to show <del>strikethrough</del> deleted text.</p>
และเราคิดว่าเราจะจบการดูการจัดรูปแบบข้อความ HTML เชิงความหมายด้วยไฮไลต์ อย่างแท้จริง. หากคุณใช้ เครื่องหมาย รอบข้อความ คุณจะเน้นสิ่งที่คุณล้อมรอบ
<p>Make sure that you remember <strong>this term for your test</strong>. <p>But you should remember <mark>this information about how to use it in context</mark>.</p> <p>If you do that, you will be fine.</p>
MDN กล่าวว่าไม่ควรใช้ในลักษณะเดียวกับที่คุณใช้ strong คุณใช้ ความแข็งแกร่ง เพื่อระบุสิ่งที่สำคัญในข้อความ และคุณใช้ เครื่องหมาย เพื่อเน้นสิ่งที่เกี่ยวข้องกับความเข้าใจในเนื้อหานั้น
ส่วน ส่วนหัว และเมนู
บางทีวิธีที่ดีที่สุดในการเริ่มต้นคือการใช้ส่วนหัวและส่วนท้าย คุณรู้ไหม ส่วนที่ทุกคนชื่นชอบของเว็บไซต์ในการสร้างและจัดการ ด้วย HTML แบบดั้งเดิม คุณอาจมีส่วนหัวที่เขียนโค้ดดังนี้:
<div> <h1>Page Title Goes here</h1> <p>Tagline!</p> <div> <ul> <li><a href="example.com">Home Page Link</a></li> <li><a href="example.com">Blog Page Link</a></li> <li><a href="example.com">Podcast Page Link</a></li> </ul> </div> </div>
เมื่อดูรหัสนั้น คุณจะเห็นว่าทุกอย่างคืออะไร อย่างไรก็ตาม นั่นก็ต่อเมื่อคุณรู้ว่าคุณกำลังดูอะไรอยู่ คุณมี div ที่ซ้อนกันอยู่สองสามตัว (คอนเทนเนอร์) ที่แยกชื่อ สโลแกน และเมนู (พื้นฐานอย่างเหลือเชื่อ) มีอะไรผิดปกติกับชุดนี้ขึ้น แต่มีอย่างแน่นอนไม่มีอะไรจริงๆที่เหมาะสมเกี่ยวกับเรื่องนี้อย่างใดอย่างหนึ่ง หากคุณก้าวไปอีกขั้น คุณสามารถใช้ CSS id และมาร์กอัปของคลาสเพื่อให้อ่านได้ง่ายขึ้น
<div class="header" id="hero-section"> <h1 class="page-title">Page Title Goes here</h1> <p>Tagline!</p> <div class="header-menu"> <ul> <li><a href="example.com">Home Page Link</a></li> <li><a href="example.com">Blog Page Link</a></li> <li><a href="example.com">Podcast Page Link</a></li> </ul> </div> </div>
ด้วย HTML เชิงความหมาย สิ่งต่างๆ จะดูสะอาดตาและอ่านง่ายขึ้นมาก คุณไม่จำเป็นต้องพึ่งพา divs และคลาสและรหัสที่คุณเลือกก็มี ไว้ สำหรับการจัดสไตล์เท่านั้น
<header> <h1>Page Title Goes Here</h1> <p>Tagline!</p> <nav> <a href="example.com">Home Page Link</a> <a href="example.com">Home Page Link</a> <a href="example.com">Home Page Link</a> </nav> </header>
มันไม่ง่ายเลยที่จะอ่านและบอกว่าเกิดอะไรขึ้น? คุณมีแท็ก ส่วนหัว ที่แจ้งให้คุณทราบว่านี่คือส่วนหัวของหน้าและแท็ก นำทาง ที่ระบุเมนูการนำทาง (แม้จะฉลาดพอที่จะไม่ต้องใส่สไตล์พิเศษเพื่อแสดงรายการในแนวนอน)
ในทางเทคนิค คุณสามารถใช้โค้ดต่อไปนี้ได้ หากต้องการให้แน่ใจว่าสไตล์ของคุณใช้อย่างถูกต้อง รวมทั้งมีวิธีเชื่อมโยงไปยังส่วนใดส่วนหนึ่งของเว็บไซต์ ในกรณีนี้ แท็ก ส่วน ทำงานเหมือนกับแท็ก div ทำงานอย่างไรในตัวอย่างก่อนหน้านี้ ยกเว้นแน่นอนว่าสามารถอ่านได้และสมเหตุสมผลสำหรับสายตามนุษย์
<section id="hero-section"> <header> <h1>Page Title Goes Here</h1> <p>Tagline!</p> <nav> <a href="example.com">Home Page Link</a> <a href="example.com">Home Page Link</a> <a href="example.com">Home Page Link</a> </nav> </header> </section>
นอกจากนี้ โปรดสังเกตการใช้ id=”hero-section” ซึ่งเป็นขั้นตอนทางเลือกสำหรับขั้นตอนทางเลือก แต่คุณสามารถจัดรูปแบบ ส่วน ให้เป็นตัวเลือก CSS ได้ด้วยตัวเอง
ซื้อกลับบ้าน
- ใช้ ส่วน ในสถานที่ที่คุณอาจอยากใช้ div ภายนอก
- ใช้ สามารถใช้ ส่วนหัว เพื่อระบุว่าส่วนใดของหน้าเป็นส่วนหัวของคุณ คุณยังสามารถใช้สิ่งนี้ในบทความหรือโพสต์เพื่อระบุส่วนหัวของโพสต์นั้น ซึ่งแยกจากตัวเว็บไซต์เอง
- ใช้ การนำทาง เมื่อคุณตั้งค่าเมนูการนำทางหลักสำหรับไซต์ Nav ไม่ได้เป็นวิธีสำหรับเครื่องมือค้นหาเพื่อค้นหาเชื่อมโยง แต่จะหาวิธีที่ผู้ใช้หลักสามารถนำทางไปยังเว็บไซต์ของคุณ คอลเล็กชันของลิงก์ใดๆ (เช่น เบรดครัมบ์ ฯลฯ) สามารถรวมไว้ใน nav . ได้
ส่วนท้าย
ไม่จำเป็นต้องพูดมากเกี่ยวกับส่วนท้าย แต่เราต้องพูดถึงมัน ในหลาย ๆ ด้าน เป็นอะนาล็อกโดยตรงกับส่วนหัว ส่วนท้ายพื้นฐานแบบดั้งเดิมอาจมีลักษณะดังนี้:

<div class="site-footer> <p>Designed by <a href="elegantthemes.com">Elegant Themes</a></p> <a href="example.com/contact">Contact Us!</a> <img src="/logo.png"> </div>
ในขณะที่ส่วนท้ายความหมายอาจมีลักษณะดังนี้:
<footer> <p>Designed by <a href="elegantthemes.com">Elegant Themes</a></p> <a href="example.com/contact">Contact Us!</a> <img src="/logo.png"> </footer>
เป็นที่ยอมรับว่าการตั้งค่าพื้นฐานไม่แตกต่างกันมากนัก แต่โรบ็อตที่เห็นไซต์ของคุณจะยินดีกับการชี้แจง นอกจากนี้ โปรดจำไว้ว่า คุณสามารถใช้ ส่วนท้าย สำหรับ ส่วนท้าย ของหน้า โพสต์ หรือส่วนท้ายของเว็บไซต์
หลัก บทความ และส่วนอื่นๆ
องค์ประกอบหลักของ HTML เชิงความหมายก็คือแท็ก บทความ นอกจากนั้น ด้าน ข้าง อีกด้วย ทั้งสองวิธีนี้ช่วยให้คุณสามารถจัดโครงสร้างเนื้อหาจริงของไซต์ของคุณ เพื่อให้เครื่องมือค้นหาทราบว่าข้อความหลักคืออะไร ซึ่งจะทำให้พวกเขาสามารถมุ่งเน้นไปที่ปัญหาที่คุณกำลังแก้ไขและหัวข้อที่คุณมุ่งเน้น
โดยปกติ บล็อกโพสต์หรือหน้าจะเป็นเอกสาร HTML ธรรมดา แต่ส่วนหัว ส่วนท้าย เนื้อหา แถบด้านข้าง ส่วนแทรก ฯลฯ สามารถนำมารวมกันได้
<body> <div class="post-header> <h1>Article title</h1> </div> <div class="post-content> <p>Paragraph 1</p> <p>Paragraph 2</p> <p>Paragraph 3</p> <div class="article-aside"> <p>Text block</p> </div> </div> <div class="post-footer"> <img src="/subscribe.png"> </div> </body>
ตอนนี้โค้ดไม่สวย แต่ใช้งานได้ อย่างไรก็ตาม มันไม่สวย และต้องใช้ CSS ในปริมาณที่เหมาะสมพอสมควรเพื่อให้ดูได้ทุกที่ใกล้จะอ่านได้เมื่อเรนเดอร์ ด้วยการใช้ main , article , และ ข้างกัน คุณสามารถจัดโครงสร้างหน้าให้อ่านได้ง่ายขึ้น
<main> <article> <header> <h1>Article title</h1> </header> <p>Paragraph 1</p> <p>Paragraph 2</p> <p>Paragraph 3</p> <aside> <p>Text block</p> </aside> <footer> <img src="/subscribe.png"> </footer> </article> </main>
อย่างไรก็ตาม คุณควรทราบว่าคุณสามารถระบุเนื้อหาหลักของหน้าได้เพียงครั้งเดียวเท่านั้น หมายความว่าคุณสามารถใช้ หลักได้ เพียงหน้าเดียวเท่านั้น คุณสามารถซ้อน บทความ หลาย บทความ ไว้ใต้ บทความ หลัก เดียวเพื่อระบุสารบัญหรือไดเรกทอรีของเนื้อหาแบบสแตนด์อโลน (คุณยังสามารถใช้แท็ก H1 หลายแท็กด้วยวิธีนี้เพื่อแสดงเครื่องมือค้นหาว่าโพสต์เหล่านั้นเป็นแบบสแตนด์อโลน
ซื้อกลับบ้าน
- ใช้แท็ก หลัก เดียวต่อหน้า
- สามารถใช้แท็ก บทความได้ หลายรายการต่อหน้าเพื่อระบุเนื้อหาแบบสแตนด์อโลนที่แยกจากกัน (รวมถึง H1 หลายรายการต่อหน้า)
- Aside สามารถใช้เป็นแถบด้านข้างหรือแทรกภายในโพสต์หรือหน้าได้
องค์ประกอบอื่น ๆ ที่ใช้น้อย
เป็นที่ยอมรับว่าองค์ประกอบและแท็กที่เรากล่าวถึงข้างต้นเป็นส่วนที่ใช้มากที่สุดของ HTML เชิงความหมาย ท้ายที่สุดแล้ว เกือบทุกเว็บไซต์บนอินเทอร์เน็ตมีองค์ประกอบบางอย่างรวมกัน ในขณะที่แท็กความหมายที่รองรับที่เหลือนั้นมีความเฉพาะเจาะจงและจำกัดมากกว่า อย่างไรก็ตาม สิ่งเหล่านี้มีประโยชน์ไม่น้อยเมื่อตอบสนองวัตถุประสงค์ของพวกเขา และช่วยอย่างมากในการโต้ตอบและการจัดทำดัชนีการค้นหา
รายละเอียดและบทสรุป
รายละเอียด และองค์ประกอบ สรุป สร้างชั้นเนื้อหาที่ขยายออกไปซึ่งสามารถซ่อนให้ผู้ใช้เห็น เว้นแต่พวกเขาจะเปิดใช้งานโดยเฉพาะ (เช่น โมดูลหีบเพลงใน Divi หรือเครื่องมือสร้างเพจอื่นๆ)
<details> <summary>Headline that will be shown and clicked on</summary> <p>Content that will be hidden</p> <a href="example.com">Link that will be hidden</a> </details>
รายการย่อยของ ข้อมูลสรุป จะถูกซ่อนและขยายได้ และคุณสามารถเพิ่มข้อความเพิ่มเติมได้โดยปิดองค์ประกอบ รายละเอียด
รูปและรูปประกอบ
สิ่งเหล่านี้ค่อนข้างอธิบายตนเองได้ รูป เป็นตัวช่วยในการโพสต์ของคุณ รูปภาพ กราฟ วิดีโอ YouTube ที่ฝังไว้ บางที figcaption คือคำอธิบายภาพที่คุณเพิ่มเพื่ออธิบายการใช้รูปด้านบน แม้ว่าสิ่งเหล่านี้จะมีลักษณะทางเทคนิคสำหรับการใช้ความหมาย คุณสามารถใช้สิ่งนี้กับเนื้อหาใดๆ ที่คุณต้องการจัดทำดัชนีโดยเฉพาะเพื่อช่วยในโพสต์หรือหน้าหลัก
<figure> <img src="/chart.jpg"> <figcaption>Explanation of this chart in short text</figcaption> </figure>
แท็กเหล่านี้เป็นวิธีที่ยอดเยี่ยมในการรับตัวอย่างข้อมูลแนะนำบน Google เช่น คุณกำลังระบุวิธีแก้ไขหรือคำอธิบายของปัญหาโดยเฉพาะ เราแนะนำให้ใช้สิ่งเหล่านี้เพราะไม่เพียงแต่จะลดโค้ดที่คุณใช้เพื่อเพิ่มคำอธิบายภาพและจัดรูปแบบเท่านั้น แต่ยังทำให้รูปภาพและคำอธิบายภาพเป็นองค์ประกอบเดียวของหน้า ไม่ใช่แยกกัน
เวลา
เวลา เป็นหนึ่งในแท็กที่ไม่ค่อยได้ใช้ แต่เมื่อคุณมีกิจกรรมหรือโอกาสพิเศษที่คุณต้องการให้เสิร์ชเอ็นจิ้นรู้ว่ามีเวลาหรือวันที่เกี่ยวข้อง ให้ใช้แท็กนี้แทนการใช้ตัวหนาหรือเน้นข้อความ
<article> <h1>Title</h1> <p>The event will begin on <time datetime="2019-12-25">December 25th</time> and last for <time datetime="PT12H30M0S">12 and a half hours</time>.</p> </article>
การใช้ datetime กับองค์ประกอบ เวลา ช่วยให้การพัฒนาของคุณมีเวลามากขึ้น ซึ่งจะช่วยให้คุณสามารถรวมเข้ากับปฏิทินและ API อื่นๆ ได้ คุณจะสามารถส่งการเตือนความจำจากไซต์ของคุณ และผู้คนจะกลับมาบ่อยขึ้น
บทสรุป
แม้ว่าการใช้ HTML ที่ไม่ใช่เชิงความหมายจะไม่ใช่เรื่องผิด แต่หากคุณเริ่มคุ้นเคยกับการทำงาน คุณจะพบว่าอันดับเครื่องมือค้นหาของคุณดีขึ้น นั่นเป็นสิ่งสำคัญ แต่สิ่งที่สำคัญกว่านั้นก็คือ คุณจะประหยัดเวลาในการจัดโครงสร้างและจัดรูปแบบไซต์ของคุณ ตลอดจนป้องกันปัญหาปวดหัวและหนี้สินทางเทคนิคสำหรับผู้ที่ติดตามคุณในโปรเจ็กต์ .
คุณปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดสำหรับ HTML เชิงความหมายใด
ภาพเด่นของบทความโดย whiteMocca / shutterstock.com