- 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"
HTML:
<p>Hover</p>
CSS:
p::after {
content: " here";
transition: all 1s;
}
p:hover::after {
font-size: 200%;
color: red;
}
现场演示: http://jsfiddle.net/SPHzj/13/ (适用于 Firefox 和 Chrome)
如您所见,我已经在段落的 ::after
伪元素上设置了 CSS 转换。然后,当段落悬停时,两个新样式应用于过渡的伪元素。
这适用于 Firefox 和 Chrome,但不适用于 IE10。我的理由是 IE 不理解 p:hover::after
选择器,因为如果您将鼠标悬停在祖先元素上,它在 IE 中工作,例如div:hover p::after
- 现场演示:http://jsfiddle.net/SPHzj/14/ .
然而,事实并非如此,因为 IE 确实能够理解该选择器。诀窍是还要定义一个 p:hover {}
规则。 (由 @maxw3st 发现。)
p:hover {}
这条规则可以为空。仅此规则的存在将使过渡在 IE10 中起作用。
现场演示: http://jsfiddle.net/SPHzj/15/ (也适用于 IE10)
这是怎么回事?为什么 IE 要求存在该规则才能使转换在伪元素上起作用?这应该被视为错误吗?
最佳答案
这似乎是 Internet Explorer 10 中的合理回归。如 on MSDN 所示,因为 Internet Explorer 7 用户已经能够定位任何元素的悬停状态,而不仅仅是a
。
奇怪的是,我尝试了 :active
伪类,这似乎按预期工作。进一步确定这是一个回归,您可以看到通过将其更改为 a
元素,转换按预期发生(因为历史上,a
和 :悬停
携手并进)。
目前我只能想到几个解决方案(在等待修复此问题时):
p:hover {}
修复。p
的子级上的 ::after
。第一项是您在问题中指定的内容,并且由于其简单性而非常有吸引力。事实上,您可以使用 :hover{}
并获得相同的结果 (probably the best solution)。
第二项也是可行,但不太理想,因为它需要修改标记,这并不总是可行的,坦率地说,有点傻。
最后一个选项有点有趣。如果您将选择器修改为基于兄弟关系,它会神奇地再次开始工作。例如,假设我们在正文中有多个元素:
<h1>Hello, World</h1>
<p>This is my first paragraph. it does not animate.</p>
<p>This animates, with a pseudo-element.</p>
我们现在可以使用组合器来定位第二段:
p+p:hover::after {}
虽然这个选择器将匹配段落之后的任何段落,但这是不可取的。此时我们可以考虑 :nth-child
或 :nth-of-type
来进一步指定我们想要的段落,甚至可以使用通用的兄弟组合器:
h1~p:nth-of-type(2):hover::after {} /* Targets second <p> nearest <h1> */
但更理想的情况是,我们将以类为目标:
h1~.hoverme:hover::after {} /* Targets <p class="hoverme"> */
更进一步,也许您不希望被明确提供通用同级标记所锁定。您还可以使用通用选择器:
*~.hoverme:hover::after {} /* Targets <p class="hoverme"> among siblings */
这要求 p
标签有 sibling ,这通常是预期的。文档很少只包含一个段落标记。
我知道这些并不理想,但它们是目前达到目的的一种手段。我们希望在未来的 Internet Explorer 版本中看到这个问题得到解决。
关于css - 为什么 IE10 要求存在 p :hover {} rule for transitions to work on a pseudo element?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16015371/
我已经为我的项目配置了 tailwindcss,但是在 npm run start 之后我得到了以下错误。 (node:7032) UnhandledPromiseRejectionWarning:错
我使用 create-react-app 创建了一个应用程序并且在尝试构建生产优化版本时遇到错误 yarn build : > yarn build help yarn run v1.9.4 $ re
我正在寻找一种将 :content 伪元素添加到空元素的方法,并遇到了 :empty CSS 伪选择器,它看起来像会达到我正在寻找的目的。基本上,我想添加一个通用消息,如“Nothing found”
Font Awesome 未提供 :after伪。是否可以使用 :after默认情况下而不是 :before伪? 例如,如果我使用:facebook那么图标应该使用:after而不是 :before
我想在禁用时更改切换按钮的颜色。我使用 :before fetaure of css 实现了这个切换。代码位于 https://jsfiddle.net/sachin8085/adm5t7rz/6/
我最近在 Firefox 中发现了一个警告 Warning: Unknown pseudo-class or pseudo-element 'hidden' 这是页面 http://eleven23.
我有一个多项式 data Poly a = Poly [a] 我希望能够做类似 fmap (take 3) polynomial 的事情但我不能,因为 Poly不是真正的仿函数,因为 f我在 fmap
我想将某种样式应用到一个元素的所有后代,除了一些。 这是我正在尝试实现的示例:http://jsfiddle.net/f8FLe/ .root * :not(.nested) { color:
我正在学习 Haskell 中的代数 DT。我想做的是创建一个新的 ADT 来“扩展”现有的 ADT。我找不到如何表达我想要的东西,有人可以建议替代模式或建议解决方案。我希望它们是不同的类型,但复制和
我现在正在通过将所有内容包含在一个函数中,将全局变量变成“伪全局变量”,从而从我的代码中删除大部分全局变量,这些全局变量都可以从该函数 block 内的任何地方访问。 (function(){ var
我正在尝试创建动画时间轴。当时间轴出现时,我正在使用滚动显示来触发动画。每个时间线条目都有一个左边框和一个伪元素 :before 与之关联。 :before 元素是一个标记每个时间线条目开始的点。当动
我的大脑并没有完全围绕这个:我正在使用我的 h1 上的 :before 和 :after 伪元素>。我的 h1 有一个 100% 宽度。 我希望 :after 是一个重复的背景图形,填充空白,后置文本
是否可以在 :before 伪类的内容中添加类或 ID?我知道这行不通,但是类似: #menu { height: 100px; width: 100px; } #menu:befor
假设我有一个带有下划线的跨度: Hello, I'm underlined text .underline { color: #444; font-size: 250%; display:
这个问题在这里已经有了答案: CSS selector with period in ID (3 个答案) 关闭 6 年前。
我正在尝试将 :after 伪元素移动到 div 的末尾,有点像页脚。 Some content here .box { height: 60vh; } .box:after {
在您指定内容之后,:AFTER 和:BEFORE 伪元素的默认display: 属性是什么。 是display: inline还是display: inline-block? 无法在 default
我遇到这样一种情况,我有两个元素在 DOM(邻居)中处于同一级别。当我悬停在 DOM 中之前的元素时,我希望显示它下面的元素。我还想访问我正在显示的元素的子元素并显示其 :before 伪元素。 SC
我有一个样式规则: .tabs li { border: 1px solid transparent; } .tabs li:not(:last-child):not(:nth-child(2
我有两个相同的 CSS 规则,但一个没有覆盖另一个。 我使用了 right 而不是 left 规则,但它不会覆盖 left 规则。另一方面 top 规则正在覆盖。我也使用了 !important 规则
我是一名优秀的程序员,十分优秀!