<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Ebenezer Merdekiyos</title>
    <description>The latest articles on Forem by Ebenezer Merdekiyos (@ebenezer_merdekiyos_72a05).</description>
    <link>https://forem.com/ebenezer_merdekiyos_72a05</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2105280%2Fd59621cb-0618-4af3-bb1c-25855ebb7c11.jpg</url>
      <title>Forem: Ebenezer Merdekiyos</title>
      <link>https://forem.com/ebenezer_merdekiyos_72a05</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ebenezer_merdekiyos_72a05"/>
    <language>en</language>
    <item>
      <title>CSS Smart Selectors &amp; Pseudo Elements</title>
      <dc:creator>Ebenezer Merdekiyos</dc:creator>
      <pubDate>Wed, 29 Oct 2025 05:10:59 +0000</pubDate>
      <link>https://forem.com/ebenezer_merdekiyos_72a05/css-smart-selectors-pseudo-elements-4mcc</link>
      <guid>https://forem.com/ebenezer_merdekiyos_72a05/css-smart-selectors-pseudo-elements-4mcc</guid>
      <description>&lt;h2&gt;
  
  
  🧩 1. Attribute Selectors
&lt;/h2&gt;

&lt;p&gt;Select elements based on their attributes or attribute values.&lt;/p&gt;

&lt;p&gt;💡 Syntax Examples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;input[type="text"] { ... }   /* exact match */
a[href^="https"] { ... }     /* starts with */
a[href$=".pdf"] { ... }      /* ends with */
a[href*="docs"] { ... }      /* contains */
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🧠 Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;input type="text" placeholder="Name"&amp;gt;
&amp;lt;input type="password" placeholder="Password"&amp;gt;
&amp;lt;a href="https://example.com"&amp;gt;Visit&amp;lt;/a&amp;gt;
&amp;lt;a href="manual.pdf"&amp;gt;Manual&amp;lt;/a&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Useful for styling forms, links, or any tag with attributes — no extra classes needed!&lt;/p&gt;




&lt;h2&gt;
  
  
  🪄 2. Pseudo-elements (::before, ::after)
&lt;/h2&gt;

&lt;p&gt;Used to generate content or add decorations using CSS only.&lt;/p&gt;

&lt;p&gt;💡 Syntax:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;h2::before {
  content: "🌟 ";
}
a::after {
  content: " ↗";
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🧠 Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;h2&amp;gt;Welcome&amp;lt;/h2&amp;gt;
&amp;lt;a href="#"&amp;gt;Learn more&amp;lt;/a&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Great for icons, labels, badges, or automatic quotes — adds personality to designs without extra HTML.&lt;/p&gt;




&lt;h2&gt;
  
  
  🖱️ 3. User Action Pseudo-classes
&lt;/h2&gt;

&lt;p&gt;React to user interactions (hover, click, focus, etc.).&lt;/p&gt;

&lt;p&gt;💡 Common ones:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;button:hover { background: #2563eb; color: white; }  /* on hover */
input:focus { border-color: #10b981; }               /* when focused */
a:active { color: red; }                             /* when clicked */
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🧠 Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;button&amp;gt;Hover me&amp;lt;/button&amp;gt;
&amp;lt;input type="text" placeholder="Focus me"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 These make your website feel alive — interactive and dynamic.&lt;/p&gt;




&lt;h2&gt;
  
  
  👶 4. Child Combinator (&amp;gt;)
&lt;/h2&gt;

&lt;p&gt;Targets only direct children of an element (not grandchildren).&lt;/p&gt;

&lt;p&gt;💡 Syntax:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;section &amp;gt; p {
  color: blue;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🧠 Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;section&amp;gt;
  &amp;lt;p&amp;gt;Direct child (styled)&amp;lt;/p&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;p&amp;gt;Nested child (not styled)&amp;lt;/p&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/section&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Helps you keep precise control over which elements get styled.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧱 5. Structural Pseudo-classes
&lt;/h2&gt;

&lt;p&gt;Select elements based on their position in the HTML structure.&lt;/p&gt;

&lt;p&gt;💡 Syntax:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;li:first-child { color: red; }
li:last-child { color: blue; }
p:only-child { font-style: italic; }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🧠 Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;ul&amp;gt;
  &amp;lt;li&amp;gt;First&amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;Middle&amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;Last&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Super handy for lists, tables, grids, and sections — no need for extra classes.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚫 6. Negation Pseudo-class (:not())
&lt;/h2&gt;

&lt;p&gt;Select everything except something specific.&lt;/p&gt;

&lt;p&gt;💡 Syntax:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;button:not(.primary) {
  background: gray;
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🧠 Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;button class="primary"&amp;gt;Save&amp;lt;/button&amp;gt;
&amp;lt;button&amp;gt;Cancel&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Styles all buttons except the one with the .primary class.&lt;br&gt;
Perfect for excluding special elements from general styles.&lt;/p&gt;


&lt;h2&gt;
  
  
  🔢 7. Nth Pseudo-class (:nth-child() / :nth-of-type())
&lt;/h2&gt;

&lt;p&gt;Select elements by their order number.&lt;/p&gt;

&lt;p&gt;💡 Syntax:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;li:nth-child(odd) { background: #f3f4f6; }  /* every odd item */
li:nth-child(even) { background: #e0f2fe; } /* every even item */
li:nth-child(3) { color: red; }             /* third item only */
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🧠 Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;ul&amp;gt;
  &amp;lt;li&amp;gt;Item 1&amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;Item 2&amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;Item 3&amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;Item 4&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Perfect for alternating row colors (like zebra stripes in tables).&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ 8. Validity Pseudo-classes (:valid, :invalid, :required)
&lt;/h2&gt;

&lt;p&gt;Used in forms to style inputs based on whether they’re valid or not.&lt;/p&gt;

&lt;p&gt;💡 Syntax:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;input:valid { border-color: #10b981; }
input:invalid { border-color: #ef4444; }
input:required { background: #fff7ed; }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🧠 Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;input type="email" placeholder="Enter email" required&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Adds real-time visual feedback in forms — no JavaScript needed!&lt;/p&gt;




&lt;h2&gt;
  
  
  🔗 9. Relational Selector (:has())
&lt;/h2&gt;

&lt;p&gt;Select elements based on what they contain.&lt;br&gt;
(Modern browsers only — supported in Chrome, Edge, Safari, Firefox 121+)&lt;/p&gt;

&lt;p&gt;💡 Syntax:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;article:has(img) {
  border: 2px solid #2563eb;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🧠 Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;article&amp;gt;
  &amp;lt;img src="photo.jpg"&amp;gt;
  &amp;lt;p&amp;gt;This article has an image.&amp;lt;/p&amp;gt;
&amp;lt;/article&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Think of :has() as a “parent-aware” selector — CSS can now react to children!&lt;br&gt;
(For example: “style any card that contains a button.”)&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>css</category>
    </item>
  </channel>
</rss>
