Top CSS Interview Questions

author image Hirely
at 07 Jan, 2025

Question: What are CSS selectors?

Answer:

CSS selectors are patterns used to select and style HTML elements. They determine which HTML elements will be affected by a particular CSS rule. Selectors allow you to target specific elements or groups of elements based on various attributes, types, or relationships in the document structure.

There are several types of CSS selectors, and they can be combined or used independently to apply styles to specific elements. Below are the different types of CSS selectors:

1. Basic Selectors:

These selectors are the most straightforward and are used to target elements by their name, ID, or class.

  • Universal Selector (*): Selects all elements on the page.

    * {
        color: red;
    }
  • Type Selector (Element Selector): Selects all elements of a particular type (HTML tag).

    p {
        font-size: 16px;
    }
  • ID Selector (#): Selects a single element with a specific id attribute. IDs must be unique within the document.

    #header {
        background-color: blue;
    }
  • Class Selector (.): Selects all elements with a particular class attribute.

    .button {
        background-color: green;
    }

2. Grouping Selectors:

You can group multiple selectors together to apply the same style to different elements.

  • Grouping Selector: Combine multiple selectors with a comma to apply the same style to all matched elements.
    h1, h2, h3 {
        color: purple;
    }

3. Combinator Selectors:

Combinator selectors are used to select elements based on their relationship with other elements in the document structure.

  • Descendant Selector (space): Selects elements that are nested inside other elements (any level deep).

    div p {
        color: red;
    }
  • Child Selector (>): Selects direct child elements of a specific element.

    div > p {
        color: green;
    }
  • Adjacent Sibling Selector (+): Selects the element that is immediately adjacent to a specified element.

    h1 + p {
        font-size: 18px;
    }
  • General Sibling Selector (~): Selects all elements that are siblings of a specified element.

    h1 ~ p {
        color: orange;
    }

4. Attribute Selectors:

Attribute selectors are used to select elements based on the presence or value of an attribute.

  • Presence of an Attribute: Selects elements that have a specific attribute.

    input[type="text"] {
        background-color: lightgray;
    }
  • Substring Matching:

    • ^=: Selects elements whose attribute value starts with a specific value.
      a[href^="https"] {
          color: blue;
      }
    • $=: Selects elements whose attribute value ends with a specific value.
      a[href$=".jpg"] {
          border: 1px solid red;
      }
    • *=: Selects elements whose attribute value contains a specific value.
      a[href*="example"] {
          text-decoration: underline;
      }

5. Pseudo-classes:

Pseudo-classes are used to define special states of elements, such as when an element is being hovered over or when it is the first or last child of a parent.

  • :hover: Selects elements when they are hovered by the user.

    button:hover {
        background-color: yellow;
    }
  • :first-child: Selects the first child of a parent element.

    div > p:first-child {
        font-weight: bold;
    }
  • :nth-child(): Selects elements based on a given pattern or number.

    li:nth-child(odd) {
        background-color: lightblue;
    }
  • :focus: Selects elements when they are in focus (typically form inputs).

    input:focus {
        border-color: red;
    }

6. Pseudo-elements:

Pseudo-elements are used to style specific parts of an element, such as the first letter or line of a block.

  • ::before: Inserts content before the element’s content.

    p::before {
        content: "Note: ";
        font-weight: bold;
    }
  • ::after: Inserts content after the element’s content.

    p::after {
        content: "(end)";
    }
  • ::first-letter: Selects the first letter of an element.

    p::first-letter {
        font-size: 2em;
    }

7. Structural Pseudo-classes:

These selectors allow you to select elements based on their position in the document structure.

  • :nth-child(): Selects elements based on their position in the parent.

    li:nth-child(2) {
        color: red;
    }
  • :last-child: Selects the last child of a parent element.

    div > p:last-child {
        margin-bottom: 0;
    }

8. Descendant Combinator ( ):

A descendant combinator selects elements that are nested within another element. For example:

ul li {
    color: green;
}

In this case, the li elements are selected if they are inside a ul element.

Summary of CSS Selectors:

SelectorDescription
*Universal selector, targets all elements.
elementType selector, targets specific HTML elements by tag name.
#idID selector, targets an element with a specific ID attribute.
.classClass selector, targets elements with a specific class.
element, element, ...Grouping selector, applies the same style to multiple elements.
element elementDescendant selector, selects an element inside another.
element > elementChild selector, selects a direct child of an element.
element + elementAdjacent sibling selector, selects the element immediately after another.
element ~ elementGeneral sibling selector, selects all sibling elements after another.
[attribute]Attribute selector, selects elements with a specific attribute.
:pseudo-classPseudo-class, targets elements in a specific state.
::pseudo-elementPseudo-element, targets a part of an element, such as the first letter.

CSS selectors provide flexibility and power in selecting elements for styling, helping developers create responsive, dynamic, and well-structured web pages.

Question: What is the CSS box model?

Answer:

The CSS box model is a fundamental concept in CSS that describes how the elements on a web page are rendered. It defines the rectangular boxes that are generated for elements and how these boxes interact with each other, including their size, padding, border, and margin.

Each HTML element is essentially a box, and the CSS box model allows you to control the spacing, padding, border, and size of that box. The box model consists of the following areas:

1. Content Box:

  • Definition: This is the innermost part of the box model where the actual content of the element (text, images, etc.) resides.
  • Properties: Width and height are applied to this box (except when using box-sizing: border-box).
    .box {
        width: 200px;
        height: 100px;
    }

2. Padding Box:

  • Definition: The padding area surrounds the content area. Padding creates space between the content and the border, providing extra space within the element but not affecting its outer dimensions.
  • Properties: You can control the padding on all four sides (top, right, bottom, left) using padding properties.
    .box {
        padding: 20px; /* Applies 20px padding to all sides */
    }

3. Border Box:

  • Definition: The border surrounds the padding (if any) and content. Borders can be styled with color, width, and style.
  • Properties: You can control the width, style, and color of the border.
    .box {
        border: 5px solid black; /* Creates a solid black border */
    }

4. Margin Box:

  • Definition: The margin is the outermost area, creating space around the element and separating it from other elements. Margins do not affect the size of the element itself but instead influence its position relative to neighboring elements.
  • Properties: You can control the margin on all four sides using margin properties.
    .box {
        margin: 30px; /* Applies 30px margin to all sides */
    }

CSS Box Model Diagram:

+-------------------------------+
|           Margin               |
|  +-------------------------+   |
|  |         Border           |   |
|  |  +-------------------+  |   |
|  |  |     Padding       |  |   |
|  |  |  +-------------+  |  |   |
|  |  |  |   Content   |  |  |   |
|  |  |  |   Box       |  |  |   |
|  |  |  +-------------+  |  |   |
|  |  +-------------------+  |   |
|  +-------------------------+   |
+-------------------------------+

Properties in the CSS Box Model:

  1. Content:

    • width and height control the size of the content box (the actual content area).
    • These properties define how much space the content inside the box occupies.
  2. Padding:

    • padding: Creates space between the content and the border.
    • Padding can be specified for all sides or individually for top, right, bottom, and left.
      padding: 20px;
      padding-top: 10px;
      padding-right: 15px;
  3. Border:

    • border: Defines the border around the padding area. You can set the width, style, and color of the border.
      border: 2px solid black;
  4. Margin:

    • margin: Creates space outside the element between its border and neighboring elements.
    • Margins can also collapse when adjacent elements have margins touching each other.
      margin: 10px;
      margin-left: 15px;
      margin-bottom: 20px;

Understanding Box-Sizing:

By default, when you set the width and height of an element, they only apply to the content box. This means that the actual space taken up by the element will be larger, as padding and borders are added to the dimensions.

However, you can change this behavior using the box-sizing property:

1. box-sizing: content-box (default):

This is the default value, where the width and height apply only to the content box, and padding and borders are added outside of the element.

  • Example:
    .box {
        width: 200px;
        padding: 20px;
        border: 5px solid black;
        /* Actual rendered width will be 200px (content) + 40px (padding) + 10px (border) = 250px */
    }

2. box-sizing: border-box:

When you use box-sizing: border-box, the width and height include the padding and border, so the total size of the element remains the same, even with padding and borders.

  • Example:
    .box {
        width: 200px;
        padding: 20px;
        border: 5px solid black;
        box-sizing: border-box;
        /* Actual rendered width will still be 200px, with padding and border included inside the box */
    }

Summary of Box Model Properties:

AreaPropertyEffect
Contentwidth, heightDefines the size of the content area.
Paddingpadding-top, padding-right, padding-bottom, padding-left, paddingAdds space inside the element, between the content and the border.
Borderborder-width, border-style, border-color, borderAdds a border around the padding area.
Marginmargin-top, margin-right, margin-bottom, margin-left, marginAdds space outside the element, separating it from other elements.
Box Sizingbox-sizingControls whether width and height include padding and border (border-box), or just content (content-box).

The CSS box model is essential for designing layouts and controlling element spacing. Understanding it is key to properly structuring your HTML elements and achieving precise control over how they appear on the page.

Read More

If you can’t get enough from this article, Aihirely has plenty more related information, such as CSS interview questions, CSS interview experiences, and details about various CSS job positions. Click here to check it out.

Related Posts

Trace Job opportunities

Hirely, your exclusive interview companion, empowers your competence and facilitates your interviews.

Get Started Now