DEV Community

Eris Sulistina
Eris Sulistina

Posted on • Edited on

Menyegarkan Mental dengan Fundamental

Problem: Otodidak tanpa doc akan mentok

Sering kali, saya menemui programmer pemula yang hanya mengandalkan materi dari satu sumber otodidak dan tidak memanfaatkan dokumentasi resmi sama sekali. Sebagai pemula, sah-sah saja bergantung pada sumber otodidak, tetapi ini dapat menyebabkan pemahaman kamu terbatas pada materi yang itu-itu saja. Ada beberapa pertimbangan yang perlu kamu perhatikan saat memilih sumber otodidak:

  1. Di platform mana tutorial itu dipublikasikan? Apakah fokusnya pada programming atau tidak?
  2. Apakah materinya terstruktur dengan baik?
  3. Apakah materi tersebut seimbang antara teori dan praktik?
  4. Kapan tutorial tersebut dibuat? Apakah materinya masih relevan dan up-to-date?
  5. Siapa yang membuat tutorial tersebut? Apakah pematerinya memiliki kredibilitas yang baik?

Untuk mengatasi kekurangan-kekurangan di atas, salah satu cara terbaik adalah mengulang materi dengan mengacu pada dokumentasi resmi. Dan itulah yang akan kita bahas di artikel ini.


Dokumentasi Resmi

Meskipun dokumentasi resmi selector ada di W3C, saya pribadi merasa kurang nyaman membaca dokumentasinya. Oleh karena itu, saya lebih menyarankan untuk merujuk ke dokumentasi versi MDN yang lebih mudah dipahami.


Penampakan Selector

Universal Selector

<h1>Styling by Universal Selector</h1>
<h2>Styling by Universal Selector</h2>
<h3>Styling by Universal Selector</h3>
Enter fullscreen mode Exit fullscreen mode
* {
    color: red;
}
Enter fullscreen mode Exit fullscreen mode

Type Selector

<h1>Styling by Type</h1>
<h2>Styling by Type</h2>
<h3>Styling by Type</h3>
Enter fullscreen mode Exit fullscreen mode
h1 {
    color: red;
}

h2 {
    color: yellow;
}

h3 {
    color: green;
}
Enter fullscreen mode Exit fullscreen mode

ID Selector

<h1 id="tagline">Styling by ID</h1>
Enter fullscreen mode Exit fullscreen mode
#tagline {
    color: purple;
}
Enter fullscreen mode Exit fullscreen mode

Class Selector

<h1 class="tagline">Styling by Class</h1>
Enter fullscreen mode Exit fullscreen mode
.tagline {
    color: cyan;
}
Enter fullscreen mode Exit fullscreen mode

Attribute Selector

<h1 data-variant="tagline">Styling by Attribute</h1>
Enter fullscreen mode Exit fullscreen mode
[data-variant="tagline"] {
    color: orange;
}
Enter fullscreen mode Exit fullscreen mode

Pseudo-class Selector

<h1>Styling by Pseudo-class :hover</h1>
Enter fullscreen mode Exit fullscreen mode
h1:hover {
    color: brown;
}
Enter fullscreen mode Exit fullscreen mode

Pseudo-element Selector

<h1>Styling by Pseudo-element ::selection</h1>
Enter fullscreen mode Exit fullscreen mode
h1::selection {
    color: silver;
}
Enter fullscreen mode Exit fullscreen mode

:is() Selector

<div>
    <h1>Styling by :is()</h1>
    <h2>Styling by :is()</h2>
    <h3>Lorem Ipsum</h3>
</div>
Enter fullscreen mode Exit fullscreen mode
div :is(h1, h2) {
    color: gold;
}
Enter fullscreen mode Exit fullscreen mode

:not() Selector

<h1>Styling by :not()</h1>
<h1 class="tagline">Lorem Ipsum</h1>
Enter fullscreen mode Exit fullscreen mode
h1:not(.tagline) {
    color: indigo;
}
Enter fullscreen mode Exit fullscreen mode

:where() Selector

<div>
    <h1>Styling by :where()</h1>
    <h2>Styling by :where()</h2>
    <h3>Lorem Ipsum</h3>
</div>
Enter fullscreen mode Exit fullscreen mode
div :where(h1, h2) {
    color: gold;
}
Enter fullscreen mode Exit fullscreen mode

:has() Selector

<h1>Styling by <span>:has()</span></h1>
<h1>Lorem Ipsum</h1>
Enter fullscreen mode Exit fullscreen mode
h1:has(span) {
    color: violet;
}
Enter fullscreen mode Exit fullscreen mode

Combinator & Separator

1. Descendent Combinator

<main>
    <h1>Styling by Descendant Selector</h1>
    <section>
        <h1>Styling by Descendant Selector</h1>
        <h2>Lorem Ipsum</h2>
        <h3>Lorem Ipsum</h3>
    </section>
</main>
Enter fullscreen mode Exit fullscreen mode
/* Semua <h1> di dalam <main>, meskipun bersarang */
main h1 {
    color: magenta;
}
Enter fullscreen mode Exit fullscreen mode

2. Child Combinator >

<main>
    <h1>Styling by Child Selector</h1>
    <section>
        <h1>Lorem Ipsum</h1>
        <h2>Lorem Ipsum</h2>
        <h3>Lorem Ipsum</h3>
    </section>
</main>
Enter fullscreen mode Exit fullscreen mode
/* Hanya <h1> yang langsung berada dalam <main> */
main > h1 {
    color: magenta;
}
Enter fullscreen mode Exit fullscreen mode

3. Next-sibling Combinator +

<main>
    <h1>Lorem Ipsum</h1>
    <section>
        <h1>Lorem Ipsum</h1>
        <p>Styling by Next-sibling Selector</p>
        <p>Lorem Ipsum</p>
    </section>
</main>
Enter fullscreen mode Exit fullscreen mode
/* <p> yang TEPAT setelah <h1> (saudara kandung langsung) */
h1 + p {
    color: darkred;
}
Enter fullscreen mode Exit fullscreen mode

4. Subsequent-sibling Combinator ~

<main>
    <h1>Lorem Ipsum</h1>
    <section>
        <h1>Lorem Ipsum</h1>
        <p>Styling by Subsequent-sibling Selector</p>
        <p>Styling by Subsequent-sibling Selector</p>
    </section>
</main>
Enter fullscreen mode Exit fullscreen mode
/* SEMUA <p> yang saudara kandung dari <h1> */
h1 ~ p {
    color: darkred;
}
Enter fullscreen mode Exit fullscreen mode

5. Selector List ,

<main>
    <h1>Styling by Selector List</h1>
    <section>
        <h1>Styling by Selector List</h1>
        <h2>Styling by Selector List</h2>
        <h3>Styling by Selector List</h3>
    </section>
</main>
Enter fullscreen mode Exit fullscreen mode
/* Hanya <h1> yang langsung berada dalam <main> */
h1, h2, h3 {
    color: lime;
}
Enter fullscreen mode Exit fullscreen mode

6. Namespace separator |

7. Column Combinator || (Experimental)


Struktur Selector

1. Simple Selector

Simple selector adalah selector dasar tanpa selector lain, combinator, atau separator.

/* Simple selector: type */
p {...}

/* Simple selector: class */
.title {...}

/* Simple selector: id */
#header {...}

/* Simple selector: attribute */
[disabled] {...}

/* Simple selector: universal selector */
* {...}

Enter fullscreen mode Exit fullscreen mode

2. Compound Selector

Compound selector adalah gabungan dari simple selector tanpa combinator atau selector.

button.primary:hover {...}

input[type="email"].required:focus {...}
Enter fullscreen mode Exit fullscreen mode

3. Complex Selector || Combinator Selector

Complex Selector adalah selector yang memiliki combinator.

main > h1 {...}

form:has(input[type="checkbox"]:checked) button[type="submit"] {...}
Enter fullscreen mode Exit fullscreen mode

4. List Selector || Group Selector

List Selector adalah beberapa selector yang dipisah Selector List ,

h1, h2, h3 {...}

input[type="text"], input[type="email"], textarea {...}
Enter fullscreen mode Exit fullscreen mode

Kalau ada yang ingin ditanyakan, silakan komen di bawah ya, saya siap membantu. Sampai jumpa di tulisan selanjutnya 👋

Top comments (0)