Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Does opacity:0 have exactly the same effect as visibility:hidden

Tags:

html

css

People also ask

What is an opacity of 0?

The opacity property sets the opacity level for an element. The opacity-level describes the transparency-level, where 1 is not transparent at all, 0.5 is 50% see-through, and 0 is completely transparent.

What does opacity 0 mean in CSS?

Value. Meaning. 0. The element is fully transparent (that is, invisible).

What would an object with an opacity value of 0 look like?

When an element has a value of 0 the element is completely invisible; a value of 1 is completely opaque (solid).

What is the difference between visibility hidden and display none?

display:none means that the tag in question will not appear on the page at all (although you can still interact with it through the dom). ... visibility:hidden means that unlike display:none , the tag is not visible, but space is allocated for it on the page. The tag is rendered, it just isn't seen on the page.


Here is a compilation of verified information from the various answers.

Each of these CSS properties is unique. In addition to rendering an element not visible, they have the following additional effect(s):

  1. Collapses the space that the element would normally occupy
  2. Responds to events (e.g., click, keypress)
  3. Participates in the taborder
                     collapse events taborder
opacity: 0              No     Yes     Yes
visibility: hidden      No     No      No
visibility: collapse   Yes*    No      No
display: none          Yes     No      No

* Yes inside a table element, otherwise No.

No.

Elements with opacity create new stacking context.

Also, CSS spec doesn't define this, but elements with opacity:0 are clickable, and elements with visibility:hidden are not.


No it does not. There is a big difference. They are similar because you can see through the element if visibility is hidden or opacity is 0, however

opacity: 0 : you can not click on elements behind it.

visibility: hidden : you can click on elements behind it.


There are many differences between visibility and opacity. Most of the answers mention some differences, but here is a complete list.

  1. opacity does not inherit, while visibility does

  2. opacity is animatable while visibility is not.
    (Well, technically it is, but there is simply no behaviour defined for, say, "37% collapsed and 63% hidden", so you can consider this as non-animatable.)

  3. Using opacity, you can not make a child element more opaque than its parent. E.G. if you have a p with color:black and opacity:0.5, you can not make any of its children fully black. Valid values for opacity are between 0 and 1, and this example would require 2!
    Consequently, according to Martin's comment, you can have a visible child (with visibility:visible) in an invisible parent (with visibility:hidden). This is impossible with opacity; if a parent has opacity:0; its children are always invisible.

  4. Kornel's answer mentions that opacity values less than 1 create their own stacking context; no value for visibility does.
    (I wish I could think of a way to demonstrate this, but I can't think of any means to show the stacking context of a visibility:hidden element.)

  5. According to philnash's answer, elements with opacity:0 are still read by screen readers, while visible:hidden elements are not.

  6. According to Chris Noe's answer, visibility has more options (such as collapse) and elements that are not visible no longer respond to clicks and cannot be tabbed to.

(Making this a community wiki, since borrowing from the existing answers wouldn't be fair otherwise.)