เอกสาร HTML มีการประกาศประเภทเอกสารและองค์ประกอบ<html>รูท
องค์ประกอบ<html>มีส่วนหัวและเนื้อหาของเอกสาร
แม้ว่าส่วนหัวของเอกสารจะไม่ปรากฏนอกโค้ด แต่ก็มีความสำคัญ
ต่อการทำงานของเว็บไซต์ โดยมีข้อมูลเมตาทั้งหมด ซึ่งรวมถึง
ข้อมูลสำหรับเครื่องมือค้นหาและผลการค้นหาในโซเชียลมีเดีย ไอคอนสำหรับแท็บเบราว์เซอร์
และทางลัดหน้าจอหลักบนอุปกรณ์เคลื่อนที่ รวมถึงลักษณะการทำงานและการนำเสนอเนื้อหา
ในส่วนนี้ คุณจะได้พบกับคอมโพเนนต์ที่แม้ว่าจะไม่
ปรากฏ แต่ก็มีอยู่ในหน้าเว็บเกือบทุกหน้า
หากต้องการสร้างเว็บไซต์ MachineLearningWorkshop.com (MLW) ให้เริ่มต้นด้วยการรวมคอมโพเนนต์ที่ควรพิจารณาว่าจำเป็นสำหรับทุกหน้าเว็บ ได้แก่ ประเภทเอกสาร ภาษาที่มนุษย์ใช้ในเนื้อหา ชุดอักขระ และแน่นอนว่าชื่อหรือชื่อของเว็บไซต์หรือแอปพลิเคชัน
เพิ่มลงในเอกสาร HTML ทุกรายการ
มีองค์ประกอบหลายอย่างที่จำเป็นสำหรับทุกหน้าเว็บ เบราว์เซอร์จะแสดงผล เนื้อหาหากไม่มีองค์ประกอบเหล่านี้ แต่คุณควรระบุองค์ประกอบดังกล่าว
<!DOCTYPE html>
สิ่งแรกในเอกสาร HTML คือส่วนนำ สำหรับ HTML คุณต้องมีเพียง
<!DOCTYPE html> ซึ่งดูเหมือนองค์ประกอบ HTML แต่จริงๆ แล้วเป็น
โหนดพิเศษที่เรียกว่า doctype DOCTYPE จะบอกเบราว์เซอร์ให้ใช้โหมดมาตรฐาน
หากไม่มีการระบุ เบราว์เซอร์จะใช้โหมดการแสดงผลอื่นที่เรียกว่าโหมดที่ไม่มาตรฐาน
การรวม DOCTYPE จะช่วยป้องกันโหมดที่ไม่มาตรฐาน
<html>
องค์ประกอบ <html> เป็นองค์ประกอบรูทของเอกสาร HTML ซึ่งเป็นองค์ประกอบหลักของ <head> และ <body> ที่มีทุกอย่างในเอกสาร HTML ยกเว้น Doctype หากละเว้นไว้ ระบบจะถือว่าใช้ภาษาที่ระบุ แต่คุณควรระบุเพื่อประกาศภาษาของเอกสาร
ภาษาของเนื้อหา
lang แอตทริบิวต์
ในแท็ก <html> จะกำหนดภาษาหลักของเอกสาร
ค่าคือรหัสภาษา ISO ตามด้วยภูมิภาค (ไม่บังคับ)
เช่น ภาษาฝรั่งเศสในแคนาดาคือ fr-CA ส่วนในบูร์กินาฟาโซคือ
fr-BF การประกาศนี้ช่วยให้โปรแกรมอ่านหน้าจอ เครื่องมือค้นหา และ
บริการแปลระบุภาษาของเอกสารได้
คุณใช้แอตทริบิวต์ lang ในแท็กอื่นๆ เพื่อระบุข้อยกเว้นสำหรับภาษาหลักของเอกสารได้ เช่นเดียวกับการใช้งานในส่วนหัว แอตทริบิวต์ lang
ภายในเนื้อหาจะไม่มีผลต่อภาพ ซึ่งจะเพิ่มความหมายเพื่อให้เทคโนโลยีความช่วยเหลือ
และบริการอัตโนมัติระบุภาษาของเนื้อหาที่เฉพาะเจาะจงได้
นอกเหนือจากการตั้งค่าภาษาสำหรับเอกสารและข้อยกเว้นสำหรับภาษาพื้นฐานนั้นแล้ว คุณยังใช้แอตทริบิวต์ในตัวเลือก CSS ได้ด้วย
<span lang="fr-fr">Ceci n'est pas une pipe.</span>สามารถกำหนดเป้าหมายได้ด้วย
แอตทริบิวต์และตัวเลือกภาษา
[lang|="fr"]
และ :lang(fr)
<head>
เราพบแท็กย่อย 2 แท็กต่อไปนี้อยู่ระหว่างแท็ก <html> เปิดและปิด
<head> และ <body>
<!DOCTYPE html>
<html lang="en-US">
<head>
</head>
<body>
</body>
</html>
<head>มีข้อมูลเมตาสำหรับเว็บไซต์หรือแอปพลิเคชัน ส่วน <body>
มีเนื้อหาที่มองเห็นได้ ส่วนที่เหลือของส่วนนี้จะมุ่งเน้นที่คอมโพเนนต์
ที่ซ้อนอยู่ภายในองค์ประกอบ <head>
คอมโพเนนต์ที่จำเป็นภายใน <head>
ข้อมูลเมตาของเอกสาร ซึ่งรวมถึงชื่อเอกสาร ชุดอักขระ การตั้งค่า Viewport
คำอธิบาย URL ฐาน ลิงก์สไตล์ชีต และไอคอน จะอยู่ในองค์ประกอบ <head> แม้ว่าคุณอาจไม่จำเป็นต้องใช้ฟีเจอร์ทั้งหมดนี้ แต่ควรระบุชุดอักขระ ชื่อ และการตั้งค่า Viewport เสมอ
การเข้ารหัสอักขระ
องค์ประกอบแรกสุดใน <head> ควรเป็นประกาศการเข้ารหัสอักขระ charset
ซึ่งอยู่ก่อนชื่อเพื่อให้มั่นใจว่าเบราว์เซอร์จะแสดงอักขระในชื่อนั้นและอักขระทั้งหมดในส่วนที่เหลือของเอกสารได้
การเข้ารหัสเริ่มต้น
ในเบราว์เซอร์ส่วนใหญ่คือ windows-1252 โดยขึ้นอยู่กับภาษา อย่างไรก็ตาม คุณควร
ใช้ UTF-8 ซึ่งช่วยให้
เข้ารหัสอักขระทั้งหมดได้ตั้งแต่ 1-4 ไบต์
หากต้องการตั้งค่าการเข้ารหัสอักขระเป็น UTF-8 ให้ระบุ
<meta charset="utf-8" />
การประกาศ UTF-8 (ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) จะช่วยให้คุณใส่อีโมจิในชื่อได้ด้วย
การเข้ารหัสอักขระจะสืบทอดไปยังทุกอย่างในเอกสาร แม้กระทั่ง <style> และ <script> การประกาศเล็กๆ นี้หมายความว่าคุณสามารถใส่อีโมจิในชื่อชั้นเรียนและselectorAPIได้ หากใช้อีโมจิ โปรดตรวจสอบว่าใช้อีโมจิในลักษณะที่ช่วยเพิ่มความสามารถในการใช้งานโดยไม่ส่งผลเสียต่อการช่วยเหลือพิเศษ
ชื่อเอกสาร
ทุกหน้า หน้าแรก และหน้าเพิ่มเติมทั้งหมดควรมีชื่อที่ไม่ซ้ำกัน
เนื้อหาสำหรับชื่อเอกสาร ข้อความระหว่างแท็กเปิดและปิด
<title> จะแสดงในแท็บเบราว์เซอร์ รายการหน้าต่างที่เปิดอยู่ ประวัติ ผลการค้นหา และการ์ดโซเชียลมีเดีย เว้นแต่จะมีการกำหนดใหม่ด้วยแท็ก
<meta>
<title>Machine Learning Workshop</title>
ข้อมูลเมตาของวิวพอร์ต
เมตาแท็กวิวพอร์ต มีความสำคัญต่อการตอบสนองของเว็บไซต์ เนื่องจากช่วยให้มั่นใจได้ว่าเนื้อหาจะแสดงผลได้ดีไม่ว่าวิวพอร์ตจะมีความกว้างเท่าใด แม้ว่าเมตาแท็กวิวพอร์ต จะมีมาตั้งแต่ปี 2007 แต่เพิ่งมีการบันทึกไว้ในข้อกำหนดเมื่อไม่นานมานี้ โดยจะควบคุมขนาดและการปรับขนาดวิวพอร์ต เพื่อป้องกันไม่ให้เนื้อหามีขนาดเล็กลงเพื่อให้พอดีกับหน้าจอขนาดเล็ก
<meta name="viewport" content="width=device-width" />
โค้ดก่อนหน้าหมายความว่า "ทําให้เว็บไซต์ตอบสนอง โดยเริ่มจากการทําให้ความกว้าง
ของเนื้อหาเป็นความกว้างของหน้าจอ" นอกจาก width แล้ว คุณยังตั้งค่า
การซูมและความสามารถในการปรับขนาดได้ แต่ทั้ง 2 ค่านี้จะตั้งค่าเริ่มต้นเป็นค่าที่เข้าถึงได้ หากต้องการระบุอย่างชัดเจน ให้ระบุข้อมูลต่อไปนี้
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=1" />
วิวพอร์ตเป็นส่วนหนึ่งของการตรวจสอบการช่วยเหลือพิเศษของ Lighthouse เว็บไซต์จะผ่านการตรวจสอบหากปรับขนาดได้และไม่มีการตั้งค่าขนาดสูงสุด
ตอนนี้โครงร่างสำหรับไฟล์ HTML ของเราคือ
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Machine Learning Workshop</title>
<meta name="viewport" content="width=device-width" />
</head>
<body>
</body>
</html>
เนื้อหา <head> อื่นๆ
<head> ยังมีอีกหลายอย่างที่ต้องพิจารณา ข้อมูลเมตาทั้งหมด
แม้ว่าองค์ประกอบส่วนใหญ่ที่คุณจะเห็นใน <head> จะครอบคลุมอยู่ในโมดูลนี้
แต่เราจะแชร์ข้อมูลเพิ่มเติมในโมดูลข้อมูลเมตา
คุณได้เห็นชุดอักขระเมตาและชื่อเอกสารแล้ว แต่ยังมีข้อมูลเมตาอีกมากนอกแท็ก <meta> ที่ควรใส่ไว้
CSS
<head> คือที่ที่คุณใส่สไตล์สำหรับ HTML ของคุณ มีเส้นทางการเรียนรู้เฉพาะสำหรับ CSS หากคุณต้องการเรียนรู้เกี่ยวกับสไตล์ แต่คุณจำเป็นต้องทราบวิธีใส่สไตล์ในเอกสาร HTML
คุณสามารถรวม CSS ได้ 3 วิธี ได้แก่ <link>, <style> และแอตทริบิวต์ style
วิธีหลักๆ 2 วิธีในการรวมสไตล์ไว้ในไฟล์ HTML คือการรวม
แหล่งข้อมูลภายนอกโดยใช้องค์ประกอบ <link> ที่มีแอตทริบิวต์ rel ตั้งค่าเป็น
stylesheet หรือการรวม CSS ไว้ในส่วนหัวของเอกสารโดยตรงภายใน
แท็กเปิดและปิด <style>
แท็ก <link> เป็นวิธีที่แนะนำในการรวมสไตล์ชีต การลิงก์สไตล์ชีตภายนอกรายการเดียวหรือ 2-3 รายการเป็นวิธีที่ดีทั้งสำหรับประสบการณ์ของนักพัฒนาซอฟต์แวร์และประสิทธิภาพของเว็บไซต์ เนื่องจากคุณสามารถดูแล CSS ได้ในที่เดียวแทนที่จะกระจายอยู่ทุกที่ และเบราว์เซอร์จะแคชไฟล์ภายนอกได้ ซึ่งหมายความว่าไม่ต้องดาวน์โหลดอีกครั้งทุกครั้งที่มีการไปยังหน้าเว็บ
ไวยากรณ์คือ <link rel="stylesheet" href="styles.css"> โดยที่ styles.css คือชื่อไฟล์และตำแหน่งสัมพัทธ์ของชีตสไตล์ คุณอาจเห็นแอตทริบิวต์
type="text/css" แต่ไม่จำเป็นต้องระบุ แอตทริบิวต์ rel จะกำหนด
ความสัมพันธ์ ซึ่งในกรณีนี้คือ stylesheet หากไม่ระบุแอตทริบิวต์ rel
ระบบจะไม่ลิงก์ CSS ของคุณ
คุณจะได้เห็นค่าอื่นๆ ของ rel ในเร็วๆ นี้ แต่ก่อนอื่นคุณจะได้เรียนรู้วิธีอื่นๆ ในการรวม CSS
หากต้องการให้รูปแบบชีตสไตล์ภายนอกอยู่ในเลเยอร์แบบเรียงซ้อน แต่
คุณไม่มีสิทธิ์แก้ไขไฟล์ CSS คุณจะต้องรวม CSS ที่มี@import ไว้ภายใน
<style>
<style>
@import "styles.css" layer(firstLayer);
</style>
เมื่อใช้ @import เพื่อนำเข้าชีตสไตล์ลงในเอกสารของคุณ หรือจะนำเข้าไปยัง
เลเยอร์แบบเรียงซ้อนก็ได้ คำสั่ง @import ต้องเป็นคำสั่งแรกใน <style> หรือชีตสไตล์ที่ลิงก์ นอกการประกาศชุดอักขระ
แม้ว่าเลเยอร์แบบเรียงซ้อนจะยังค่อนข้างใหม่และคุณอาจไม่เห็น
@import ในส่วนหัว <style> แต่คุณมักจะเห็นพร็อพเพอร์ตี้ที่กำหนดเองซึ่งประกาศไว้ใน
บล็อกรูปแบบส่วนหัว
<style>
:root {
--theme-color: #226DAA;
}
</style>
สไตล์ที่เพิ่มด้วย <link>, <style> หรือทั้ง 2 อย่างควรอยู่ในส่วนหัว แม้ว่าสไตล์จะทำงานได้เมื่อรวมอยู่ในส่วนเนื้อหาของเอกสาร แต่คุณควรเพิ่มสไตล์ในส่วนหัวเพื่อประสิทธิภาพ ซึ่งอาจดูขัดแย้งกับสัญชาตญาณเนื่องจากคุณอาจคิดว่าต้องการให้เนื้อหาโหลดก่อน แต่การให้เบราว์เซอร์ทราบวิธีแสดงเนื้อหาเมื่อโหลดแล้วจะดีกว่า การเพิ่มสไตล์ก่อนจะช่วยป้องกันการวาดซ้ำที่ไม่จำเป็นซึ่งเกิดขึ้นหากมีการจัดรูปแบบองค์ประกอบหลังจากที่แสดงผลครั้งแรก
มีวิธีหนึ่งในการรวมสไตล์ที่คุณจะไม่ได้ใช้ใน <head> ของเอกสาร
นั่นคือ สไตล์อินไลน์ คุณอาจไม่เคยใช้สไตล์อินไลน์ในส่วนหัว
เนื่องจากชีตสไตล์ของ User Agent จะซ่อนส่วนหัวโดยค่าเริ่มต้น แต่หากต้องการสร้างเอดิเตอร์ CSS โดยไม่ใช้ JavaScript เช่น เพื่อทดสอบองค์ประกอบที่กำหนดเองของหน้าเว็บ คุณสามารถทำให้ส่วนหัวปรากฏด้วย display: block
จากนั้นซ่อนทุกอย่างในส่วนหัว แล้วใช้แอตทริบิวต์ style แบบอินไลน์เพื่อทำให้บล็อกรูปแบบที่แก้ไขเนื้อหาได้ปรากฏ
<style contenteditable style="display: block; font-family: monospace; white-space: pre;">
head { display: block; }
head * { display: none; }
:root {
--theme-color: #226DAA;
}
</style>
คุณเพิ่มสไตล์อินไลน์ลงในองค์ประกอบ <style> ได้
การใช้งานอื่นๆ ขององค์ประกอบ <link>
องค์ประกอบ link ใช้เพื่อสร้างความสัมพันธ์ระหว่างเอกสาร HTML กับ
แหล่งข้อมูลภายนอก คุณอาจดาวน์โหลดแหล่งข้อมูลบางอย่างได้ แต่บางอย่างก็เป็นเพียงข้อมูล ประเภทความสัมพันธ์กำหนดโดยค่าของแอตทริบิวต์ rel
แอตทริบิวต์ rel มีค่าที่ใช้ได้ 25 ค่า
ซึ่งใช้ได้กับ <link>, <a> และ <area> หรือ <form> โดยมีค่าบางค่าที่ใช้ได้กับแอตทริบิวต์ทั้งหมด เราขอแนะนำให้ใส่ข้อมูลที่เกี่ยวข้องกับข้อมูลเมตาในส่วนหัว และใส่ข้อมูลที่เกี่ยวข้องกับประสิทธิภาพในส่วน <body>
ตอนนี้คุณจะรวมอีก 3 ประเภทไว้ในส่วนหัว ได้แก่ icon, alternate และ canonical ส่วนประเภทที่ 4 คือ rel="manifest" จะเพิ่มในโมดูลถัดไป
ไอคอน Fav
ใช้แท็ก <link> กับ rel="icon" เพื่อระบุ favicon สำหรับเอกสารของคุณ Favicon คือไอคอนขนาดเล็กที่ปรากฏในแท็บเบราว์เซอร์ โดยปกติจะอยู่ทางด้านซ้ายของชื่อเอกสาร เมื่อแท็บมีขนาดเล็กลง ชื่ออาจหายไป แต่ไอคอนจะยังคงปรากฏอยู่ Favicon ส่วนใหญ่เป็นโลโก้ของบริษัทหรือแอปพลิเคชัน
หากไม่ได้ประกาศ favicon เบราว์เซอร์จะค้นหาไฟล์ชื่อ
favicon.ico ในไดเรกทอรีระดับบนสุด (โฟลเดอร์รูทของเว็บไซต์) เมื่อใช้
<link> คุณจะใช้ชื่อไฟล์และตำแหน่งอื่นได้
<link rel="icon" sizes="16x16 32x32 48x48" type="image/png" href="/https/web.developers.google.cn/images/mlwicon.png" />
โค้ดข้างต้นระบุว่า "ใช้ mlwicon.png เป็นไอคอนสำหรับสถานการณ์ที่ขนาด 16 พิกเซล 32 พิกเซล หรือ 48 พิกเซลเหมาะสม" แอตทริบิวต์ sizes ยอมรับค่า any
สำหรับไอคอนที่ปรับขนาดได้ หรือรายการค่าสี่เหลี่ยมจัตุรัส widthXheight ที่คั่นด้วยช่องว่าง
โดยค่าความกว้างและความสูงคือ 16, 32, 48 หรือมากกว่าในลำดับ
เรขาคณิตนั้น ระบบจะละเว้นหน่วยพิกเซล และ X จะไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
<link rel="apple-touch-icon" sizes="180x180" href="/https/web.developers.google.cn/images/mlwicon.png" />
<link rel="mask-icon" href="/https/web.developers.google.cn/images/mlwicon.svg" color="#226DAA" />
เบราว์เซอร์ Safari มีไอคอนพิเศษ 2 ประเภทที่ไม่เป็นไปตามมาตรฐาน ดังนี้
apple-touch-icon สำหรับอุปกรณ์ iOS และ mask-icon สำหรับแท็บที่ปักหมุดใน macOS
apple-touch-icon จะใช้เฉพาะเมื่อผู้ใช้เพิ่มเว็บไซต์ลงในหน้าจอหลัก โดยคุณระบุไอคอนหลายรายการที่มี sizes ต่างกันสำหรับอุปกรณ์ต่างๆ ได้
mask-icon จะใช้เฉพาะในกรณีที่ผู้ใช้ปักหมุดแท็บใน Safari บนเดสก์ท็อป โดยไอคอนเองควรเป็น SVG ขาวดำ และแอตทริบิวต์ color จะเติมสีที่ต้องการลงในไอคอน
แม้ว่าคุณจะใช้ <link> เพื่อกำหนดรูปภาพที่แตกต่างกันโดยสิ้นเชิงในแต่ละหน้า หรือแม้แต่ในแต่ละการโหลดหน้าเว็บได้ แต่ก็ไม่ควรทำ เพื่อให้มีความสอดคล้องและมอบประสบการณ์ของผู้ใช้ที่ดี ให้ใช้รูปภาพเดียว Google ใช้ไอคอน Fav ที่แตกต่างกันสำหรับแอปพลิเคชันต่างๆ ของตน เช่น ไอคอนอีเมลและไอคอนปฏิทิน แต่ไอคอนทั้งหมดของ Google ใช้รูปแบบสีเดียวกัน คุณจะทราบเนื้อหาของแท็บที่เปิดอยู่ได้อย่างชัดเจนจากไอคอน
เว็บไซต์เวอร์ชันอื่น
ใช้ค่า alternate ของแอตทริบิวต์ rel เพื่อระบุการแปล
หรือการนำเสนอเว็บไซต์แบบอื่น
สมมติว่าเรามีเว็บไซต์เวอร์ชันที่แปลเป็นภาษาฝรั่งเศสและภาษาโปรตุเกสแบบบราซิล
<link rel="alternate" href="https://www.machinelearningworkshop.com/fr/" hreflang="fr-FR" />
<link rel="alternate" href="https://www.machinelearningworkshop.com/pt/" hreflang="pt-BR" />
เมื่อใช้ alternate สำหรับการแปล คุณต้องตั้งค่าแอตทริบิวต์ hreflang
ค่าสำรองไม่ได้มีไว้สำหรับการแปลเท่านั้น เช่น แอตทริบิวต์ type
สามารถกำหนด URI สำรองสำหรับฟีด RSS เมื่อตั้งค่าแอตทริบิวต์ type
เป็น application/rss+xml หรือ application/atom+xml
ลิงก์ไปยังเวอร์ชัน PDF ของเว็บไซต์ (สมมติ):
<link rel="alternate" type="application/x-pdf" href="https://machinelearningworkshop.com/mlw.pdf" />
หากrelมีค่าเป็นalternate stylesheet จะเป็นการกำหนดสไตล์ชีตสำรอง
และต้องตั้งค่าแอตทริบิวต์ title เพื่อตั้งชื่อสไตล์สำรองนั้น
ตามรูปแบบบัญญัติ
หากคุณสร้างการแปลหรือเวอร์ชันของเวิร์กช็อปแมชชีนเลิร์นนิงหลายรายการ
เครื่องมือค้นหาอาจไม่สามารถระบุแหล่งข้อมูลที่เชื่อถือได้ ใช้ rel="canonical"
เพื่อระบุ URL ที่ต้องการสำหรับเว็บไซต์หรือแอปพลิเคชัน
ใส่ Canonical URL ในหน้าเว็บที่แปลทั้งหมดและในหน้าแรก โดยระบุ URL ที่เราต้องการดังนี้
<link rel="canonical" href="https://www.machinelearning.com" />
rel="canonical"ลิงก์ Canonical มักใช้สำหรับการโพสต์ข้ามกับสิ่งพิมพ์และแพลตฟอร์มบล็อกเพื่อให้เครดิตแหล่งที่มาเดิม เมื่อเว็บไซต์เผยแพร่เนื้อหา เว็บไซต์ควรใส่ลิงก์ Canonical ไปยังแหล่งที่มาเดิม
สคริปต์
แท็ก <script> มีสคริปต์ ประเภทเริ่มต้นคือ JavaScript หากคุณใช้ภาษาสคริปต์อื่น ให้ใส่แอตทริบิวต์ type พร้อมกับ MIME
type หรือ type="module" สำหรับโมดูล JavaScript
ระบบจะแยกวิเคราะห์และเรียกใช้เฉพาะ JavaScript และโมดูล JavaScript
แท็ก <script> ใช้เพื่อห่อหุ้มโค้ดหรือดาวน์โหลดไฟล์ภายนอกได้
ใน MLW ไม่มีไฟล์สคริปต์ภายนอกเนื่องจากคุณไม่จำเป็นต้องใช้ JavaScript สำหรับเว็บไซต์ที่ใช้งานได้ ซึ่งขัดกับ
ความเชื่อที่นิยมกัน นี่คือเส้นทางการเรียนรู้ HTML ไม่ใช่เส้นทางการเรียนรู้ JavaScript
คุณจะต้องใส่ JavaScript เล็กๆ น้อยๆ เพื่อสร้างไข่อีสเตอร์ในภายหลัง
<script>
document.getElementById('switch').addEventListener('click', function() {
document.body.classList.toggle('black');
});
</script>
ข้อมูลโค้ดนี้จะสร้างตัวแฮนเดิลเหตุการณ์สําหรับองค์ประกอบที่มีรหัส switch
ด้วย JavaScript คุณควรหลีกเลี่ยงการอ้างอิงองค์ประกอบก่อนที่จะมีอยู่ เนื่องจาก switch ยังไม่มีอยู่ เราจึงยังไม่รวมตัวแฮนเดิลเหตุการณ์
เมื่อเพิ่มองค์ประกอบสวิตช์ไฟ เราจะเพิ่ม <script> ที่ด้านล่างของ <body> แทนที่จะเพิ่มใน <head> ทำไมจึงเป็นเช่นนั้น 2 เหตุผล เราต้องการให้มั่นใจว่าองค์ประกอบมีอยู่ก่อนที่จะพบสคริปต์ที่อ้างอิงองค์ประกอบเหล่านั้น เนื่องจากเราไม่ได้
อิงสคริปต์นี้กับเหตุการณ์ DOMContentLoaded
และที่สำคัญ JavaScript ไม่ได้บล็อกการแสดงผลเท่านั้น
แต่เบราว์เซอร์จะหยุดดาวน์โหลดเนื้อหาทั้งหมดเมื่อดาวน์โหลดสคริปต์ และ
จะไม่กลับมาดาวน์โหลดเนื้อหาอื่นๆ จนกว่า JavaScript จะดำเนินการเสร็จสิ้น ด้วยเหตุนี้ คุณจึงมักเห็นคำขอ JavaScript อยู่ที่ส่วนท้าย
ของเอกสารแทนที่จะอยู่ในส่วนหัว
แอตทริบิวต์ 2 รายการที่ช่วยลดลักษณะการบล็อกของการดาวน์โหลดและการเรียกใช้ JavaScript ได้แก่ defer และ async เมื่อใช้ defer การแสดงผล HTML จะไม่ถูกบล็อกระหว่างการดาวน์โหลด และ JavaScript จะทำงานหลังจากที่เอกสารแสดงผลเสร็จแล้วเท่านั้น เมื่อใช้ async การแสดงผลจะไม่ถูกบล็อกในระหว่างการดาวน์โหลดเช่นกัน แต่เมื่อสคริปต์ดาวน์โหลดเสร็จแล้ว ระบบจะหยุดการแสดงผลชั่วคราวขณะที่ดำเนินการ JavaScript

หากต้องการรวม JavaScript ของ MLW ไว้ในไฟล์ภายนอก คุณสามารถเขียนได้ดังนี้
<script src="js/switch.js" defer></script>
การเพิ่มแอตทริบิวต์ defer
จะเลื่อนการดำเนินการของสคริปต์จนกว่าจะแสดงผลทุกอย่างเสร็จ
เพื่อป้องกันไม่ให้สคริปต์ส่งผลเสียต่อประสิทธิภาพ แอตทริบิวต์ async และ defer
ใช้ได้กับสคริปต์ภายนอกเท่านั้น
ฐาน
นอกจากนี้ยังมีองค์ประกอบอีกอย่างหนึ่งที่พบได้ในองค์ประกอบ <head>. The infrequently
used <base> เท่านั้น ซึ่งช่วยให้ตั้งค่า URL และเป้าหมายของลิงก์เริ่มต้นได้ ส่วนแอตทริบิวต์ href จะกำหนด URL ฐานสำหรับลิงก์ที่เกี่ยวข้องทั้งหมด
แอตทริบิวต์ target ซึ่งใช้ได้ใน <base> รวมถึงในลิงก์และแบบฟอร์ม จะกำหนด
ตำแหน่งที่ลิงก์เหล่านั้นควรเปิด โดยค่าเริ่มต้น _self จะเปิดไฟล์ที่ลิงก์ใน
บริบทเดียวกันกับเอกสารปัจจุบัน ตัวเลือกอื่นๆ ได้แก่ _blank ซึ่งจะ
เปิดลิงก์ทุกลิงก์ในหน้าต่างใหม่ _parent ของเนื้อหาปัจจุบัน ซึ่ง
อาจเหมือนกับ self หาก opener ไม่ใช่ iframe หรือ _top ซึ่งอยู่ใน
แท็บเบราว์เซอร์เดียวกัน แต่จะป๊อปอัปออกจากบริบทใดๆ เพื่อใช้ทั้งแท็บ
นักพัฒนาแอปส่วนใหญ่จะเพิ่มแอตทริบิวต์ target ลงในลิงก์ไม่กี่รายการ (หากมี) ที่ต้องการ
เปิดในหน้าต่างใหม่ในลิงก์หรือแบบฟอร์มเอง แทนที่จะใช้
<base>
<base target="_top" href="https://machinelearningworkshop.com" />
หากเว็บไซต์ของเราฝังอยู่ใน iframe บนเว็บไซต์อย่าง Yummly
การรวมองค์ประกอบ <base> จะหมายความว่าเมื่อผู้ใช้คลิกลิงก์ใดก็ตามภายใน
เอกสารของเรา ลิงก์จะโหลดโดยแสดงนอก iframe ซึ่งจะใช้ทั้งหน้าต่างเบราว์เซอร์
ข้อเสียอย่างหนึ่งขององค์ประกอบนี้คือลิงก์ Anchor จะได้รับการแก้ไขด้วย <base> ซึ่งจะแปลงลิงก์ <a href="#ref"> เป็น <a target="_top" href="https://machinelearningworkshop.com#ref"> ซึ่งจะทริกเกอร์คำขอ HTTP ไปยัง URL ฐานพร้อมกับแนบ Fragment<base>
สิ่งสำคัญเพิ่มเติมเกี่ยวกับ <base>
- เอกสารจะมีองค์ประกอบ
<base>ได้เพียง 1 รายการ - โดยควรระบุไว้ก่อนที่จะใช้ URL แบบสัมพัทธ์ รวมถึงการอ้างอิงสคริปต์ หรือสไตล์ชีตที่เป็นไปได้
ตอนนี้โค้ดจะมีลักษณะดังนี้
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Machine Learning Workshop</title>
<meta name="viewport" content="width=device-width" />
<link rel="stylesheet" href="css/styles.css" />
<link rel="icon" type="image/png" href="/https/web.developers.google.cn/images/favicon.png" />
<link rel="alternate" href="https://www.machinelearningworkshop.com/fr/" hreflang="fr-FR" />
<link rel="alternate" href="https://www.machinelearningworkshop.com/pt/" hreflang="pt-BR" />
<link rel="canonical" href="https://www.machinelearning.com" />
</head>
<body>
<!-- <script defer src="scripts/lightswitch.js"></script>-->
</body>
</html>
ความคิดเห็นใน HTML
สคริปต์จะอยู่ในเครื่องหมายวงเล็บปีกกา ขีด และเครื่องหมายอัศเจรีย์ ซึ่งเป็นวิธี
แสดงความคิดเห็นใน HTML ระบบจะไม่แสดงหรือแยกวิเคราะห์ข้อความใดๆ ที่อยู่ระหว่าง <!-- ถึง --> คุณวางความคิดเห็น HTML ไว้ที่ใดก็ได้ในหน้าเว็บ ยกเว้นภายใน
บล็อกสคริปต์หรือสไตล์ ซึ่งคุณควรใช้ความคิดเห็น JavaScript และ CSS
คุณได้เรียนรู้พื้นฐานเกี่ยวกับสิ่งที่อยู่ใน <head> แล้ว แต่ต้องการเรียนรู้
มากกว่าพื้นฐาน ในส่วนถัดไป เราจะมาเรียนรู้เกี่ยวกับเมตาแท็กและ
วิธีควบคุมสิ่งที่แสดงเมื่อเว็บไซต์ของคุณลิงก์ไปยังโซเชียล
มีเดีย
ทดสอบความเข้าใจ
ทดสอบความรู้เกี่ยวกับโครงสร้างเอกสาร
คุณจะระบุภาษาของเอกสารได้อย่างไร
language ลงในแท็ก HTMLlang ลงในแท็ก HTMLAdd the <lang> องค์ประกอบ ไปยัง <head>เลือกองค์ประกอบที่รวมไว้ใน <head> ได้
<p><title><meta>