CSS Combinators

Tawan_Ait
2 min readOct 12, 2019

--

การกำหนด ว่าจะกำหนดค่าให้กับ element ไหนบ้าง มีค่าเป็นแบบไหน โดยการใช้เครื่องหมาย

descendant selector (space) ทุกตัว
child selector (>) ไม่ที่ผสม
adjacent sibling selector (+) หนึ่งตัว ถัดลงไป
general sibling selector (~) ทุกตัวถัดลงไป

โดยปกติเราก็จะกำหนดค่าให้กับ element แบบนี้ เราจะบอก ชื่อ-class ชื่อ-id หรือชื่อ-element ไปเลย เช่น

ขอ ขอ ขอเล่าเรื่องก่อนนิดนึ่ง ในเรื่องนี้เราจะสมมติให้ <div></div> เป็น แม่ และ <p></p> เป็น ลูกของ <div></div> และมีน้องๆ ของแม่ ที่เป็น <p></p> เหมือนกัน แต่อยู่คนละบ้าน และแม่มีพี่สาวแสนสวยด้วยคนหนึ่ง ที่พึ่งตามหากันเจอ ฮาๆๆ ในภายหลัง

Descendant Selector กำหนดค่าให้ลูกตัวเอง

จากตัวอย่างใน HTML เป็นการกำหนดค่าให้กับ element <div></div> ที่มี element <p></p> ทุกตัว โดยการใช้ space bar

การกำหนดค่าให้กับ element <div></div> ที่มี element <p></p> อยู่ข้างในเท่านั้น

คือ กำหนดค่าให้เฉพาะลูกของตัวเองและ คนที่มาอาศัย อยู่กับแม่ จากที่เห็น HTML ครอบครัวนี้ จะมีคนหนึ่งที่ไม่เหมือนเพื่อน <section><p></p></section> ก็ยังถูกกำหนดให้เข้ากับครอบครัวได้

CSS

div p {
background-color: cornflowerblue;
}

HTML

<h2 class="container p-3">CSS Combinators</h2>
<div class="container">
<p>Paragraph 1 in the div.</p>
<p>Paragraph 2 in the div.</p>
<section><p>Paragraph 3 in the div.</p></section>
</div>
<p class="container">Paragraph 4. Not in a div.</p>
<p class="container">Paragraph 5. Not in a div.</p>

Child Selector กำหนดให้เฉพาะลูกของตัวเอง

จากตัวอย่างใน HTML เป็นการกำหนดค่าให้กับ element <div></div> ที่มี element <p></p> ให้เฉพาะ <p></p> เท่านั้น ไม่เอาที่มี <section><p></p></section> โดยการใช้เครื่องหมายมากกว่า >

กำหนดให้เฉพาะลูกของตัวเอง โดยการใช้เครื่องหมาย >

คือ ครั้งนี้ต่างจาก ครั้งก่อน Descendant Selector ที่เคยกำหนดให้กัน มาตอนนี้เริ่มมีเงื่อนไขเพิ่มขึ้น จะกำหนดให้เฉพาะ ลูกของตัวเองเท่านั้น ไม่เอาผู้อาศัย <section><p></p></section>

CSS

div > p {
background-color: cornflowerblue;
}

Adjacent Sibling Selector กำหนดพี่น้องที่ติดกัน

จากตัวอย่างใน HTML เป็นการกำหนดค่าให้กับ element <p></p> ที่ติดกับ element <div></div> และเป็น element แรกเท่านั้น โดยการใช้เครื่องหมายบวก +

กำหนดให้เฉพาะน้องของแม่

คือ กำหนดให้เฉพาะน้องของแม่ คนแรก เท่านั้น น้องคนต่อไปไม่ได้กำหนด

CSS

div + p {
background-color: cornflowerblue;
}

General Sibling Selector กำหนดให้น้องทุกคน

จากตัวอย่างใน HTML เป็นการกำหนดค่าให้กับ element <p></p> ทุกตัว ที่ถัดจาก element <div></div> แต่ไม่กำหนดให้ element <p></P> ที่อยู่ก่อนหน้า โดยการใช้เครื่องหมาย ประมาณ ~

กำหนดให้น้องทุกคน แต่ไม่รวมพี่สาวของแม่

คือ กำหนดให้น้องทุกคนของแม่ แต่ไม่รวมพี่สาวของแม่

CSS

div ~ p {
background-color: cornflowerblue;
}

HTML

<h2 class="container p-3">CSS Combinators</h2>
<p class="container">Paragraph 1 in the div.</p>
<div class="container">
<p>Paragraph 2 in the div.</p>
<section><p>Paragraph 3 in the div.</p></section>
</div>
<p class="container">Paragraph 4. Not in a div.</p>
<p class="container">Paragraph 5. Not in a div.</p>

Combinators การกำหนดค่าให้กับ element โดยการใช้เครื่องหมาย space , > , + , ~ อาจจะยากไปหน่อย ถัดนัดแบบไหนก็ทำแบบน้ัน บางทีอาจถนัดกำหนดแบบ class หรือ id ก็สามารถทำได้เช่นเดียวกัน

--

--

No responses yet