Updates
  • Starting New Weekday Batch for Full Stack Java Development on 27 September 2025 @ 03:00 PM to 06:00 PM
  • Starting New Weekday Batch for MERN Stack Development on 29 September 2025 @ 04:00 PM to 06:00 PM
Join Course

Pseudo elements

CSS pseudo-elements are special keywords that allow you to create virtual elements in your HTML document for styling purposes. Unlike pseudo-classes, which target specific states of existing elements, pseudo-elements target specific parts of an element's content. Pseudo-elements are denoted by a double colon (::) followed by the pseudo-element name.

Syntax:-

selector:pseudo-element {
property: value;
}

Here are some commonly used CSS pseudo-elements:

• ::before: Creates a pseudo-element before the content of an element. It's often used to add decorative elements or icons.

            
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport"content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet"href="style.css">
  <title>before Example</title>
</head>
<body>
    <h1>Welcome to JTC</h1>
    <p>Before Example</p>
    <p>The content is inserted before the content of an element</p>
</body>
</html>
        
            
*{
    margin: 0;
    padding: 0;
    box-sizing: border-box;
  }
  
  h1 , p{
    padding: 10px;
  }

  h1 img{
    height: 50px;
  }
  
  h1::before {
    content: url(logo.png);
  }  

• ::after: Creates a pseudo-element after the content of an element. Similar to ::before, it's used for adding decorative elements.

            
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="style.css">
  <title>after Example</title>
</head>
<body>
    <h1>Welcome to JTC</h1>
    <p>After Example</p>
    <p>The content is inserted after the content of an element</p>
</body>
</html>
        
            
*{
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

h1 , p{
  padding: 10px;
}

h1::after {
  content: url(logo.png);
  position: absolute;
}

• ::first-line: Targets the first line of a block-level element's content.

            
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="style.css">
  <title>First-line Example</title>
</head>
<body>
    <h1>Welcome to JTC</h1>
    <p>First-line Example. <br>
      As you can see that the first line of the paragraph is bold and font-size is 22px.
    </p>
</body>
</html>
        
            
*{
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}
  
h1 , p{
  padding: 10px;
}

p::first-line {
  font-weight: bold; /* Make the first line of paragraphs bold */
  font-size: 22px;   /* set the font-size to 22 of the first line of paragraphs */
}

• ::first-letter: Targets the first letter of a block-level element's content.

            
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="style.css">
  <title>First-letter Example</title>
</head>
<body>
    <h1>Welcome to JTC</h1>
    <p>First-letter Example. <br>
      As you can see that the first letter of the paragraph is bold and font-size is 22px.
    </p>
</body>
</html>
        
            
*{
   margin: 0;
   padding: 0;
   box-sizing: border-box;
}
  
h1 , p{
   padding: 10px;
}
  
p::first-letter {
   font-weight: bold; /* Make the first letter of paragraphs bold */
   font-size: 22px; /* Enlarge the first letter of paragraphs */
}

• ::selection: Targets the portion of text selected by the user.

            
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="style.css">
  <title>selection Example</title>
</head>
<body>
    <h1>Welcome to JTC</h1>
    <p>Selection Examples</p>
</body>
</html>
        
            
*{
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

h1 , p{
  padding: 10px;
}

p::selection {
  background-color: #CCC; /* Change the background color of selected text */
  color: rgb(201, 0, 0); /* Change the text color of selected text */
}

• ::placeholder: Targets the placeholder text in input and textarea elements.

            
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="style.css">
  <title>Placeholder Example</title>
</head>
<body>
    <h1>Welcome to JTC</h1>
    <form action="">
      First name: <input type="text"placeholder="First Name"><br>
      Last name: <input type="text"placeholder="Last Name"><br>
    </form>
</body>
</html>
        
            
*{
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
  
  h1 , p{
  padding: 10px;
}
  
  input::placeholder {
  color: #ff0000; /* Change the color of placeholder text in input fields */
}  

• ::marker: Targets the marker box of a list item in a list.

            
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="style.css">
  <title>Marker Example</title>
</head>
<body>
    <h1>Welcome to JTC</h1>
    <ul>
      <li>This is First Line</li>
      <li>This is Second Line</li>
      <li>This is Third Line</li>
      <li>This is Fourth Line</li>
      <li>This is Fifth Line</li>
    </ul>
</body>
</html>
        
            
*{
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

h1 , p{
   padding: 10px;
}
  
li::marker {
   content: "\2022"; /* Use a bullet point as the list marker */
   color: red;    /* chnages the color of the bullet */
}