CodeGym /Java Course /Frontend SELF EN /Improving Design and UX

Improving Design and UX

Frontend SELF EN
Level 30 , Lesson 4
Available

9.1 Enhancing Interactivity with Pseudo-classes

Pseudo-classes and pseudo-elements in CSS are powerful tools for enhancing design and user experience (UX) on web pages. They help create interactive and dynamic elements, improve visual perception, and enhance accessibility.

Let's look at some examples of how pseudo-classes and pseudo-elements can be used for these purposes.

1. Hover Effect

The :hover pseudo-class allows you to change the style of an element when the user hovers over it. This is especially useful for buttons and links.

Example: Changing Button Color on Hover

In this example, the background color of the button changes when the cursor hovers over it, which improves visual feedback and makes the interface more interactive:

CSS
    
      button {
        background-color: #3498db;
        color: white;
        border: none;
        padding: 10px 20px;
        cursor: pointer;
      }

      button:hover {
        background-color: #2980b9;
      }
    
  
HTML
    
      <button>Click Me</button>
    
  

2. Element Focus

The :focus pseudo-class is used for styling form elements when they are in focus. This helps users see which form element they are currently filling out.

Example: Styling Input Field on Focus

In this example, the input field gets a blue border and shadow when focused, which enhances the visibility of the active form element:

CSS
    
      input[type="text"] {
        border: 1px solid #ccc;
        padding: 10px;
      }

      input[type="text"]:focus {
        border-color: #3498db;
        box-shadow: 0 0 5px rgba(52, 152, 219, 0.5);
      }
    
  
HTML
    
      <input type="text">
    
  

3. Active State of an Element

The :active pseudo-class is applied to an element at the moment of its activation (for example, when a mouse button is pressed).

Example: Styling Button on Click

In this example, the button slightly shrinks and changes color when clicked, creating a press effect:

CSS
    
      button:active {
        background-color: #2c3e50;
        transform: scale(0.98);
      }
    
  
HTML
    
      <button>Click Me</button>
    
  

9.2 Enhancing Visual Perception with Pseudo-elements

4. Adding Content: ::before and ::after

The ::before and ::after pseudo-elements allow adding content before and after an element without changing the HTML code.

Example: Adding Icon Before Link

In this example, an icon is added before the link text, enhancing visual perception and indicating to users that it is a link:

CSS
    
      a::before {
        content: "🔗";
        margin-right: 5px;
      }
    
  
HTML
    
      <a href="#">Here</a>
    
  

Example: Adding Decorative Element After Paragraph

In this example, a decorative element is added after the paragraph, improving the visual layout of the page:

CSS
    
      p::after {
        content: "❦";
        display: block;
        text-align: right;
        color: #e74c3c;
      }
    
  
HTML
    
      <p>Content</p>
    
  

5. Styling First Letter and Line: ::first-letter and ::first-line

The ::first-letter and ::first-line pseudo-elements allow styling the first letter and the first line of text, creating typographic effects.

Example: Styling First Letter of Paragraph

In this example, the first letter of a paragraph is enlarged and colored in blue, creating a "drop cap" effect often used in magazine design:

CSS
    
      p::first-letter {
        font-size: 2.5em;
        font-weight: bold;
        color: #3498db;
        float: left;
        margin-right: 0.1em;
      }
    
  
HTML
    
      <p>Content</p>
    
  

Example: Styling First Line of Paragraph

In this example, the first line of a paragraph is bolded and green, improving text readability:

CSS
    
      p::first-line {
        font-weight: bold;
        color: #2ecc71;
      }
    
  
HTML
    
      <p>Content</p>
    
  

9.3 Improving Accessibility with Pseudo-classes and Pseudo-elements

6. Form Element States

Pseudo-classes allow styling form elements based on their state, improving accessibility and user interface.

Example: Styling Checked Checkbox

In this example, a checked checkbox is colored green, improving visual feedback:

CSS
    
      input[type="checkbox"]:checked {
        background-color: #2ecc71;
      }
    
  
HTML
    
      <input type="checkbox" checked>
    
  

Example: Styling Disabled Input Field

In this example, a disabled input field gets a light gray background and text, visually indicating its unavailability:

CSS
    
      input:disabled {
        background-color: #f0f0f0;
        color: #999;
      }
    
  
HTML
    
      <input type="text" disabled>
    
  

Example: Styling Invalid Input Field

In this example, an invalid input field gets a red border, helping users identify errors when entering data:

CSS
    
      input:invalid {
        border-color: #e74c3c;
      }
    
  
HTML
    
      <input type="text">
    
  

9.4 Full Implementation Example

CSS
    
      /* Adding icon before link */

      a::before {
        content: "🔗";
        margin-right: 5px;
      }

      /* Styling first letter of paragraph on hover */

      p:hover::first-letter {
        font-size: 2.5em;
        font-weight: bold;
        color: #3498db;
      }

      /* Styling button */

      button {
        background-color: #3498db;
        color: white;
        border: none;
        padding: 10px 20px;
        cursor: pointer;
      }

      button:hover {
        background-color: #2980b9;
      }

      button:active {
        background-color: #2c3e50;
        transform: scale(0.98);
      }

      /* Styling input field on focus */

      input[type="text"]:focus,
      input[type="email"]:focus {
        border-color: #3498db;
        box-shadow: 0 0 5px rgba(52, 152, 219, 0.5);
      }

      /* Styling checked checkbox */

      input[type="checkbox"]:checked {
        background-color: #2ecc71;
      }

      /* Styling disabled input field */

      input:disabled {
        background-color: #f0f0f0;
        color: #999;
      }

      /* Styling invalid input field */

      input:invalid {
        border-color: #e74c3c;
      }
    
  
HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Examples of Using Pseudo-classes and Pseudo-elements</title>
          <link rel="stylesheet" href="styles.css">
        </head>
        <body>
          <a href="#">Link with Icon</a>
          <p>Hover over this paragraph to see the effect on the first letter.</p>
          <button>Button</button>
          <form>
            <label>
              Enter text:
              <input type="text" required>
            </label>
            <br>
            <label>
              Enter email:
              <input type="email" required>
            </label>
            <br>
            <label>
              <input type="checkbox" checked> Checkbox
            </label>
            <br>
            <button type="submit">Submit</button>
            <button type="button" disabled>Disabled Button</button>
          </form>
        </body>
      </html>
    
  

Pseudo-classes and pseudo-elements provide powerful means for improving design and user experience on web pages. Using them allows for creating interactive and dynamic elements, enhancing visual perception, improving accessibility, and making interfaces more user-friendly and enjoyable.

Understanding and correctly applying these tools opens up many opportunities for creating modern and effective web designs.

1
Task
Frontend SELF EN, level 30, lesson 4
Locked
Icon Before Link
Icon Before Link
1
Task
Frontend SELF EN, level 30, lesson 4
Locked
Input Field Focus
Input Field Focus
1
Опрос
Pseudo-elements,  30 уровень,  4 лекция
недоступен
Pseudo-elements
Pseudo-elements
Comments
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION