disable all page elements with modal feature using

2019-01-17 04:43发布

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 notification and at the same time to enable the modal feature. And after the request, need to re-enable the page elements back.

Is there any option available in core jquery for that or any plugins?

4条回答
狗以群分
2楼-- · 2019-01-17 05:14

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.

查看更多
兄弟一词,经得起流年.
3楼-- · 2019-01-17 05:16

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

查看更多
趁早两清
4楼-- · 2019-01-17 05:20

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;
}
查看更多
再贱就再见
5楼-- · 2019-01-17 05:25

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.

查看更多
登录 后发表回答