- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
全部:
[UPDATE] 我找到了另一种方法来实现这个,不是解决方案,而是一个工作技巧:使用 mousedown 作为事件触发器(因为我需要一个拖动 Action ,所以无论如何应该有一个 mousedown 事件),在里面,将 mouseover 事件绑定(bind)到那个 span(我不知道为什么,但是在 mousedown 里面绑定(bind) mouseover 可以使鼠标悬停在 span 上),给它一个改变背景颜色的新类;
我在 Chrome 40 上遇到的问题是:
I set a style:
span {
background-color:red;
}
span:hover {
background-color:blue;
}
<span>TEST AREA</span>
当我 mousedown 然后 mouseover 时,背景颜色没有改变
It has been addressed here with no solution posted: https://code.google.com/p/chromium/issues/detail?id=122746
我测试了 IE11 Firefox35,它们都运行良好。只有 Chrome 40 不工作:(
任何人都可以帮助应用样式或提供一种方法来触发鼠标悬停在该跨度上并采取拖动操作(我想做的是在其上拖动一些东西并且背景颜色变化表示拖动在目标区域上方。)?谢谢!
最佳答案
有趣的 chrome 错误!在我遇到你的问题之前我没有注意到它。这让我开始思考 FF 是如何处理这个事件的。
所以我继续设计一个简单的代码片段来跟踪悬停和点击事件触发的事件。
你可以找到这个 snippet fiddle here .
现在在 fiddle 中,如果您删除最后一段中的评论,
$(document).mousemove(function () {
console.clear();
console.log('hovered element now: '+hoveredElement+ ' -- & -- '+'clicked element now: '+ clickedElement);
});
然后评论下面的部分,
$(hoveredElement).mouseenter(function () {
$(this).addClass('jsHover');
}).mouseleave(function () {
$(this).removeClass('jsHover');
});
现在代码复制了您提到的问题(在 chrome 中尝试它,FF 我能够在 chrome 41 中复制)。
如果你注意各个浏览器的控制台,我的发现是,当你在 span
元素之外单击,然后拖动鼠标进入该元素时,会发生这样的事情。 .
在 Chrome 中
只需将鼠标悬停在第一个跨度元素之外而不进入跨度空间:控制台输出
hovered element now: BODY -- & -- clicked element now: undefined
现在点击鼠标左键(mousedown 和 mouseup):控制台输出
hovered element now: BODY -- & -- clicked element now: BODY
现在只需稍微移动一下鼠标:控制台输出
hovered element now: BODY -- & -- clicked element now: BODY
现在让我们在 Firefox 中做同样的事情,好吗?
只需将鼠标悬停在第一个跨度元素之外而不进入跨度空间:控制台输出
hovered element now: BODY -- & -- clicked element now: undefined
现在点击鼠标左键(mousedown 和 mouseup):控制台输出
hovered element now: BODY -- & -- clicked element now: undefined
请注意,现在点击的元素显示为 undefined。将其与 chrome 的结果进行比较
现在只需稍微移动一下鼠标:控制台输出
hovered element now: BODY -- & -- clicked element now: BODY
**现在进行下一组测试**
现在在第一个 span 元素外单击,不要松开鼠标,将其拖到 span 元素内,然后松开。释放后不要移动鼠标。 chrome 的控制台输出
hovered element now: SPAN -- & -- clicked element now: BODY
FF 的控制台输出
现在悬停的元素:SPAN -- & -- 现在点击的元素:undefined
还要注意此处输出的差异。
现在如果你问我为什么浏览器之间会发生这种情况,我不知道。我只能说 :hover
的伪类不会在 chrome 中触发,但在 FF 中会触发。
那么你问的解决方案是什么?
这是我的解决方法。
只需在该事件发生时手动添加悬停类。这使得 chrome 动态添加类,而在 FF 中它已经处于幸福状态;)
所以现在在 fiddle再次取消注释这段代码...
$(hoveredElement).mouseenter(function () {
$(this).addClass('jsHover');
}).mouseleave(function () {
$(this).removeClass('jsHover');
});
如果您愿意,可以评论最后一部分控制台输出。
这样做是在触发我们的小问题的特定事件集发生时,将 jsHover 类(与常规的 :hover 伪类一起在 css 中定义)添加到 span 元素。
完整的代码片段在这里...
$(document).ready(function () {
var hoveredElement;
var clickedElement;
$(document).mousemove(function (event) {
hoveredElement = event.target.nodeName;
$(hoveredElement).mouseenter(function () {
$(this).addClass('jsHover');
}).mouseleave(function () {
$(this).removeClass('jsHover');
});
//console.log('hovered element now: ', hoveredElement);
return hoveredElement;
});
$(document).click(function (event) {
clickedElement = event.target.nodeName;
//console.log('clicked element now: ', clickedElement);
return clickedElement;
});
/*
$(document).mousemove(function () {
console.clear();
console.log('hovered element now: '+hoveredElement+ ' -- & -- '+'clicked element now: '+ clickedElement);
});
*/
});
.page {
height:100%;
width:100%;
/*background:rgba(12, 132, 49, 0.3);*/
}
div {
height:200px;
width:250px;
/*background:pink;*/
}
span {
/*background-color:cyan;*/
}
span:hover, span.jsHover {
background-color:blue;
color:white;
font-weight:bold;
}
.activeElement {
background:#bfbfbf;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<span>before page div span element</span>
<br/>
<hr/>
<div class="page">
<div> <span>inside pade div span element </span>
<p>wjhjhewh</p>
</div>
</div>
希望这对您有所帮助。 快乐编码
关于css - 在 Chrome 中按下鼠标按钮时悬停样式无法应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29129742/
我通过 spring ioc 编写了一些 Rest 应用程序。但我无法解决这个问题。这是我的异常(exception): org.springframework.beans.factory.BeanC
我对 TestNG、Spring 框架等完全陌生,我正在尝试使用注释 @Value通过 @Configuration 访问配置文件注释。 我在这里想要实现的目标是让控制台从配置文件中写出“hi”,通过
为此工作了几个小时。我完全被难住了。 这是 CS113 的实验室。 如果用户在程序(二进制计算器)结束时选择继续,我们需要使用 goto 语句来到达程序的顶部。 但是,我们还需要释放所有分配的内存。
我正在尝试使用 ffmpeg 库构建一个小的 C 程序。但是我什至无法使用 avformat_open_input() 打开音频文件设置检查错误代码的函数后,我得到以下输出: Error code:
使用 Spring Initializer 创建一个简单的 Spring boot。我只在可用选项下选择 DevTools。 创建项目后,无需对其进行任何更改,即可正常运行程序。 现在,当我尝试在项目
所以我只是在 Mac OS X 中通过 brew 安装了 qt。但是它无法链接它。当我尝试运行 brew link qt 或 brew link --overwrite qt 我得到以下信息: ton
我在提交和 pull 时遇到了问题:在提交的 IDE 中,我看到: warning not all local changes may be shown due to an error: unable
我跑 man gcc | grep "-L" 我明白了 Usage: grep [OPTION]... PATTERN [FILE]... Try `grep --help' for more inf
我有一段代码,旨在接收任何 URL 并将其从网络上撕下来。到目前为止,它运行良好,直到有人给了它这个 URL: http://www.aspensurgical.com/static/images/a
在过去的 5 个小时里,我一直在尝试在我的服务器上设置 WireGuard,但在完成所有设置后,我无法 ping IP 或解析域。 下面是服务器配置 [Interface] Address = 10.
我正在尝试在 GitLab 中 fork 我的一个私有(private)项目,但是当我按下 fork 按钮时,我会收到以下信息: No available namespaces to fork the
我这里遇到了一些问题。我是 node.js 和 Rest API 的新手,但我正在尝试自学。我制作了 REST API,使用 MongoDB 与我的数据库进行通信,我使用 Postman 来测试我的路
下面的代码在控制台中给出以下消息: Uncaught DOMException: Failed to execute 'appendChild' on 'Node': The new child el
我正在尝试调用一个新端点来显示数据,我意识到在上一组有效的数据中,它在数据周围用一对额外的“[]”括号进行控制台,我认为这就是问题是,而新端点不会以我使用数据的方式产生它! 这是 NgFor 失败的原
我正在尝试将我的 Symfony2 应用程序部署到我的 Azure Web 应用程序,但遇到了一些麻烦。 推送到远程时,我在终端中收到以下消息 remote: Updating branch 'mas
Minikube已启动并正在运行,没有任何错误,但是我无法 curl IP。我在这里遵循:https://docs.traefik.io/user-guide/kubernetes/,似乎没有提到关闭
每当我尝试docker组成任何项目时,都会出现以下错误。 我尝试过有和没有sudo 我在这台机器上只有这个问题。我可以在Mac和Amazon WorkSpace上运行相同的容器。 (myslabs)
我正在尝试 pip install stanza 并收到此消息: ERROR: No matching distribution found for torch>=1.3.0 (from stanza
DNS 解析看起来不错,但我无法 ping 我的服务。可能是什么原因? 来自集群中的另一个 Pod: $ ping backend PING backend.default.svc.cluster.l
我正在使用Hibernate 4 + Spring MVC 4当我开始 Apache Tomcat Server 8我收到此错误: Error creating bean with name 'wel
我是一名优秀的程序员,十分优秀!