IIInsiderInterview
Sign in
mediumconcept

Explain the difference between `visibility: hidden` and `display: none`.

Explanation:

  • visibility: hidden and display: none are CSS properties used to control the visibility of HTML elements, but they behave differently.
  • visibility: hidden hides the element, but it still takes up space in the layout.
  • display: none removes the element entirely from the document flow, so it does not take up any space.

Key Talking Points:

  • visibility: hidden:
    • Hides the element.
    • The element still occupies its space.
    • Affects accessibility and screen readers may still read it.
  • display: none:
    • Removes the element from the DOM flow.
    • The element does not occupy any space.
    • Element is ignored by screen readers.

NOTES:

Reference Table:

PropertyVisibilitySpace OccupationAccessibility
visibility: hiddenHiddenSpace is occupiedMay be accessible
display: noneRemovedNo space occupiedNot accessible
 - `visibility: hidden` is like closing the curtain in front of an actor. The actor is still on stage, but the audience can't see them.
 - `display: none` is like removing the actor from the stage entirely. The actor is not there and doesn't take any space.

Pseudocode:

   <style>
     .hidden {
       visibility: hidden;
     }
     .none {
       display: none;
     }
   </style>

   <div class="hidden">I am hidden but still here!</div>
   <div class="none">I am completely gone!</div>

Follow-Up Questions and Answers:

  1. Question: How would using visibility: hidden or display: none affect animation?

    • Answer:
      • With visibility: hidden, you can still animate properties like opacity or transform, as the element is still part of the document flow.
      • With display: none, you cannot animate the element, as it is not part of the document flow and cannot be rendered.
  2. Question: Can you toggle visibility using JavaScript? How?

    • Answer: Yes, you can toggle visibility using JavaScript by changing the style property of an element.
     const element = document.getElementById('myElement');
     element.style.display = element.style.display === 'none' ? 'block' : 'none';
  1. Question: Are there performance considerations when using visibility: hidden vs display: none?
    • Answer:
      • display: none can be more efficient for performance as it does not render the element, reducing the paint and layout operations needed.
      • visibility: hidden still requires layout calculations since the element occupies space, potentially impacting performance if used extensively.
Want all 100 questions?
Practise the full set with grading in the app, or get the book on Amazon.
Practise this role →