<style type=”text/css” rel=”stylesheet”> h3 { font-size: 36px; color: grey; } </style> . . . <h3>cymiz</h3> <h3>cymiz</h3>
ต้องการให้ข้อความมีการแสดงผลที่แตกต่างไปจาก css ข้างบนที่กำหนด ต้องใส่ ID หรือ Class ให้กับแท็ก <h3>
<style type=”text/css” rel=”stylesheet”> h3 { font-size: 36px; color: grey; } #section_header { font-size: 48px; color: red; } </style> . . . <h3 id=”section_header“>cymiz</h3> <h3>cymiz</h3>
ความแตกต่างระหว่าง ID และ Class
1. วิธีเขียนที่แตกต่างกัน
การเขียน ID ใน CSS จะเริ่มต้นด้วย # แล้วตามด้วยชื่อ ID ที่เราต้องการตั้ง
#main_header เพื่อสั่งแท็ก <h3 id=”main_header”>……..</h3>
#main_menu เพื่อสั่งแท็ก <ul id=”main_menu”>……..</ul>
#sub_menu เพื่อสั่งแท็ก <ul id=”sub_menu”>……..</ul>
#footer เพื่อสั่งแท็ก <div id=”footer”>……..</div>
การเขียน Class ใน CSS จะเริ่มต้นด้วย . แล้วตามด้วยชื่อ Class ที่เราต้องการตั้ง
.sub_header เพื่อสั่งแท็ก <h4 class=”sub_header”>……..</h4>
.main_list เพื่อสั่งแท็ก <ul class=”main_list”>……..</ul>
.content เพื่อสั่งแท็ก <div class=”content”>……..</div>
.details เพื่อสั่งแท็ก <p class=”details”>……..</p>
โดยตัวแรกของชื่อจะต้องเป็นตัวอักษรระหว่าง A ถึง Z เท่านั้น
ห้ามเริ่มต้นชื่อด้วยสัญญลักษณ์หรือตัวเลข
เพราะบราวเซอร์จะไม่ตีความว่าเป็น ID หรือ Class ซึ่งจะมีผลทำให้คำสั่ง CSS ที่เราเขียนไม่มีผลใดๆทั้งสิ้น
CSS จะไม่สนใจว่าจะเป็นตัวเล็กหรือตัวใหญ่ หรือ Case Insensitive
เพราะฉะนั้นการตั้งชื่อว่า SuperAgent กับ superagent จะมีค่าเท่ากัน
2. จำนวนครั้งที่ใช้ได้ต่อหน้าเว็บ
ID ที่ตั้งขึ้นมาจะอนุญาตให้ใช้ได้ครั้งเดียวในหน้า และหนึ่งแท็กจะใส่ ID ได้ตัวเดียว
Class ที่ตั้งขึ้นมาจะอนุญาตให้ใช้ได้หลายครั้งในหน้าเดียวกัน และหนึ่งแท็กจะใส่ Class ได้หลายตัว
<div id=”header”> <h1>cymiz</h1> <ul id=”main_menu”> <li class=”menu”><a class=”menu_link link” href=”home.html” title=”Home”>Home</a></li> <li class=”menu”><a class=”menu_link link” href=”products.html” title=”Products”>Products</a></li> <li class=”menu”><a class=”menu_link link” href=”support.html” title=”Support”>Support</a></li> <li class=”menu”><a class=”menu_link link” href=”contactus.html” title=”Contact Us”>Contact Us</a></li> <li class=”menu”><a class=”menu_link link” href=”sitemap.html” title=”Site Map”>Site Map</a></li> </ul> </div>
<div> และ <ul> ต่างมี ID ของตัวเองคือ header และ main_menu ตามลำดับ และจะถูกเรียกใช้เพียงแค่ครั้งเดียวในหน้า
แต่สำหรับ Class ชื่อ menu ในแท็ก <li> จะได้เรียกใช้ซ้ำได้
ในแท็ก <a> จะเห็นตัวอย่างการใส่ชื่อ Class ได้มากกว่าหนึ่งในแท็กเดียวกัน
โดยในแท็ก <a> นี้จะมีชื่อ Class อยู่ 2 ชื่อด้วยกันคือ menu_link และ link
นอกจากนี้เรายังสามารถใส่ทั้ง ID และ Class ให้กับแท็กๆเดียวกันได้ด้วย เช่น
<li id=”menu_selected” class=”menu”><a class=”menu_link link active” href=”home.html” title=”Home”>Home</a></li>
3. ระดับ Specificity
ID มีความเฉพาะเจาะจงหรือ Specificity ที่สูงกว่า Class ในกรณีที่มีปัญหาคำสั่ง CSS ไปทับซ้อนกันในแท็กเดียวกัน
.menu { background: grey; } #menu_selected { background: white; } <li id=”menu_selected” class=”menu”><a class=”menu_link link active” href=”home.html” title=”Home”>Home</a></li>
คำสั่งซ้ำซ้อนกันในแท็ก <li> แต่เนื่องจาก ID มีระดับ Specificity ที่สูงกว่า Class
จึงทำให้เว็บบราวเซอร์เลือกที่จะแสดงสีพื้นหลังของแท็ก <li> เป็นสีขาวที่สั่งผ่าน #menu_selected
ใช้ ID เมื่อเราต้องการระบุถึงส่วนสำคัญของหน้า ที่ในหน้าหนึ่งๆจะมีแค่หนึ่งเดียวเท่านั้น เช่น
ส่วนหัวด้านบนของหน้า
ส่วนเมนูหลักของหน้า
ส่วนเนื้อหาของหน้า
ส่วนท้ายสุดที่ประกอบในหน้า
หรือเลือกใช้ ID ในส่วนที่เราต้องการใส่ JavaScript หรือ jQuery เพื่อเพิ่มลูกเล่นและความสวยงามให้กับหน้า
#header
#menu
#content
#footer
ใช้ Class เมื่อต้องการใส่สไตล์การแสดงผลที่เป็นรายละเอียดปลีกย่อยที่เราอยากใช้ร่วมกันได้กับหลายๆแท็กในหน้าเดียวกัน เช่น
สีตัวอักษรของพาดหัวหลักพาดหัวรอง
ลักษณะของลิ้งก์เพื่อไปอ่านต่อหน้าใน
การตั้งชื่อ ID และ Class
ให้ตั้งชื่อให้สื่อความหมายของ ID และ Class นั้นๆจริงๆ (เช่น สำหรับ highlight ข้อความ) และยืดหยุ่นพอที่จะให้คุณสามารถเปลี่ยนแปลงคำสั่งได้ในอนาคตได้ ไม่ควรตั้ง yellow เพราะอนาคตอาจอยากให้เป็นสีอื่น หลีกเลี่ยงที่จะตั้งชื่อตามลักษณะการแสดงผลบนหน้าจอ เช่นตั้งชื่อตามสีอย่าง red, black, pink, white หรือตั้งชื่อตามตำแหน่งหรือลักษณะการวางอย่าง left, right, center, bottom ที่แนะนำอย่างนี้เพราะว่าคุณไม่มีทางรู้หรอกว่าในอนาคตคุณอาจจะต้องเปลี่ยนลักษณะการแสดงผลนั้นๆเป็นอย่างอื่นที่ตรงกันข้ามอย่างสิ้นเชิงเลยก็ได้