有没有可能以一种简单的方式在整个html页面上将光标设置为"等待"?其 idea 是在Ajax调用正在完成时向用户显示正在发生的事情.下面的代码显示了我try 的简化版本,还演示了我遇到的问题:

  1. 如果元素(#id1)设置了游标样式,它将忽略Body上设置的游标样式(显然)
  2. 某些元素具有默认光标样式(A),不会在悬停时显示等待光标
  3. Body元素根据内容有一定的高度,如果页面很短,光标将不会显示在页脚下方

测试:

<html>
    <head>
        <style type="text/css">
            #id1 {
                background-color: #06f;
                cursor: pointer;
            }

            #id2 {
                background-color: #f60;
            }
        </style>
    </head>
    <body>
        <div id="id1">cursor: pointer</div>
        <div id="id2">no cursor</div>
        <a href="#" onclick="document.body.style.cursor = 'wait'; return false">Do something</a>
    </body>
</html>

稍后编辑.
它可以在Firefox和IE中使用:

div#mask { display: none; cursor: wait; z-index: 9999; 
position: absolute; top: 0; left: 0; height: 100%; 
width: 100%; background-color: #fff; opacity: 0; filter: alpha(opacity = 0);}

<a href="#" onclick="document.getElementById('mask').style.display = 'block'; return false">
Do something</a>

这个解决方案的问题(或功能)是,由于div重叠,它会阻止点击(谢谢Kibbee)

稍后编辑.
多沃德提供了一个更简单的解决方案:

.wait, .wait * { cursor: wait !important; }

然后

<a href="#" onclick="document.body.className = 'wait'; return false">Do something</a>

此解决方案仅显示等待光标,但允许单击.

推荐答案

我知道您可能无法控制这一点,但是您可以 Select 一个"掩蔽"div,该div覆盖整个身体,z-index大于1.如果您愿意,div的中心部分可以包含一条加载消息.

然后,您可以将光标设置为在div上等待,而不必担心链接,因为它们在您的掩蔽div"下面".以下是用于"掩蔽div"的一些示例CSS:

body { height: 100%; }
div#mask { cursor: wait; z-index: 999; height: 100%; width: 100%; }

Html相关问答推荐

将小文本放在输入字段的右侧

Chrome中是否有一个本地显示密码功能,用于`input type = password/`?""<"">

如何将FlexBox项目zoom 到其包含图像的大小

将CSS应用于TD标记内的div

垂直页眉,每行只显示一个使用css的字母

用于删除页面页眉上的超链接的CSS

为什么在添加文本时网格区域会调整大小?

未知高度正在应用于前标记

如何在R rmarkdown中创建循环中的分页表?

如何使div填充父项的剩余高度

CSS:双面元素未正确显示边框

在移动屏幕上显示时分支树视图的响应能力问题

如何使粘性导航栏能够跨其他组件工作?

在 flexbox 中使用 spacer 是否有效

在选项标签中如何添加Django模板的条件

为什么使用 Css 只能看到 1 列而不是 3 列?

修复 Vue 3 Component 中的 CSS 以显示后面的 Select 器样式而无需 !important

为什么 text-align 应用于 span 而不是 CSS 中的 img

如何使用 CSS Flex 设计一个导航栏,其中一组项目左对齐而另一组项目右对齐?

水平滚动框不显示所有元素