Check if element is visible in DOM

后端 未结 18 1691

Is there any way that I can check if an element is visible in pure JS (no jQuery) ?

So, for example, in this page: Performance Bikes, if you hover over Deals (on the

18条回答
  •  抹茶落季
    2020-11-22 07:51

    I've got a more performant solution compared to AlexZ's getComputedStyle() solution when one has position 'fixed' elements, if one is willing to ignore some edge cases (check comments):

    function isVisible(el) {
        /* offsetParent would be null if display 'none' is set.
           However Chrome, IE and MS Edge returns offsetParent as null for elements
           with CSS position 'fixed'. So check whether the dimensions are zero.
    
           This check would be inaccurate if position is 'fixed' AND dimensions were
           intentionally set to zero. But..it is good enough for most cases.*/
        if (!el.offsetParent && el.offsetWidth === 0 && el.offsetHeight === 0) {
            return false;
        }
        return true;
    }
    

    Side note: Strictly speaking, "visibility" needs to be defined first. In my case, I am considering an element visible as long as I can run all DOM methods/properties on it without problems (even if opacity is 0 or CSS visibility property is 'hidden' etc).

提交回复
热议问题