disable all page elements with modal feature using jquery

前端 未结 4 1699
萌比男神i
萌比男神i 2020-12-08 08:41

I wish to disable all page elements upon an action. Like the modal feature that is in the JQuery UI.

Like on an ajax action.. I wish to show a notif

相关标签:
4条回答
  • 2020-12-08 09:06

    One easy way to achieve this is to define a css class like this:

    .dark-class
    {
       background-color: #F0F0F0;
       filter:alpha(opacity=50); /* IE */
       opacity: 0.5; /* Safari, Opera */
       -moz-opacity:0.50; /* FireFox */
       z-index: 20;
       background-repeat:no-repeat;
       background-position:center;
       width: 100%;
       height: 100%;
       position:absolute;
       top: 0px;
       left: 0px;
    }
    

    Use jQuery to add this class to an empty div that is the first child of the body element. Remove the class to disable modal mode.

    Your notification should have a z-index higher than the z-index of the dark-class. All items that need to be disabled must have a lower z-index.

    0 讨论(0)
  • 2020-12-08 09:09

    The page elements are not disabled - doing that would be quite tedious - but rather, a semi-transparent div is overlayed on top of all other page elements. To do this, you would probably do something like

    // Declare this variable in the same scope as the ajax complete function
    overlay = $('<div></div>').prependTo('body').attr('id', 'overlay');
    

    And the CSS:

    #overlay {
      position: fixed;
      height: 100%;
      width: 100%;
      z-index: 1000000;
      background: url('link/to/semitransparent.png');
    }
    

    Then once the action is complete, you simply remove it like this:

    overlay.remove();
    

    No need to include jQuery UI if this is the only thing you need it for.

    0 讨论(0)
  • 2020-12-08 09:25

    Try adding a style of "pointer-events: none;" to the body. To remove it use pointer-events: auto;

    More info here https://css-tricks.com/almanac/properties/p/pointer-events/ Though there may be issues with earlier browsers not supporting it

    0 讨论(0)
  • 2020-12-08 09:29

    I like Jiang's idea but you do not need image with the following overlay style sheet.

    #overlay {
        position: fixed; 
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background: #000;
        opacity: 0.8;
        filter: alpha(opacity=80);
        z-index:50;
    }
    
    0 讨论(0)
提交回复
热议问题