动画元素在悬停时不会改变样式

Posted

技术标签:

【中文标题】动画元素在悬停时不会改变样式【英文标题】:Animated element does not change the style on hover 【发布时间】:2015-01-12 05:55:29 【问题描述】:

我有这个功能:

$(document).ready(function() 
  function animatexyz() 
    $('.xyz-ico a').animate(
      opacity: '.5'
    ,1000).animate(
      opacity: '.15'
    ,1000, animatexyz); 
  
  animatexyz();

元素(xyz-ico a)会持续闪烁,直到我将鼠标移到它上面,然后它才会完全可见(不透明度 1)。留下元素后,它必须继续闪烁。

在我的 CSS 文件中,“.xyz-ico a:hover”伪元素的不透明度为 1,但只要我使用此动画“循环”,当我将鼠标移到元素上时,什么都不会发生变化。

我的 CSS 代码:

.xyz-ico 
  position:fixed; 
  top:150px; 
  right:30px; 
  z-index:999;


.xyz-ico a 
  opacity: .15;


.xyz-ico a:hover 
  opacity: 1;

我试图实现.hover和mouseover jQuery函数进入我的jQuery代码,但这不起作用(仅在我猜的两个动画步骤之间的非常短的时刻)。似乎循环“覆盖”了各处的不透明度值。也许你知道我可以如何简单地解决这个问题。

非常感谢:)

【问题讨论】:

您的$(document).ready(function () … 也应该以括号结尾:$(document).ready(function () … ); 【参考方案1】:

应该这样做:

.xyz-ico a:hover 
  opacity: 1 !important;

原因是 jquery 直接将样式设置为覆盖样式表中设置的任何样式的元素,这是由于级联样式表 (CSS) 的级联性质,如下所示:

(来自:http://webdesign.about.com/od/css/f/blcssfaqcascade.htm)

共有三种不同类型的样式表:

    作者样式表 这些是由网页作者创建的样式表。大多数人在想到 CSS 样式表时都会想到它们。

    用户样式表 用户样式表由网页的用户设置。这些允许用户更好地控制页面的显示方式。

    用户代理样式表 这些是 Web 浏览器应用于页面以帮助显示该页面的样式。例如,在 Xhtml 中,大多数可视用户代理将 <em> 标记显示为斜体文本。这是在用户代理样式表中定义的。

为了解决冲突,Web 浏览器使用以下排序顺序来 确定哪种样式具有优先权并将被使用:

    首先,查找适用于相关元素的所有声明,以及指定的媒体类型。

    然后看看它来自什么样式表。如上所述,作者样式表首先出现,然后是用户,然后是用户代理。 !important 用户样式的优先级高于作者 !important 样式。选择器越具体,它获得的优先级就越高。例如,“div.co p”上的样式将比“p”标签上的样式具有更高的优先级。

    最后,按照定义的顺序对规则进行排序。在文档树中稍后定义的规则的优先级高于之前定义的规则。导入样式表中的规则在样式表中的规则之前被考虑。

【讨论】:

哦,哇,谢谢你,这很管用。不知何故,这一直是我的问题,这有点令人尴尬 xD 非常感谢! :)

以上是关于动画元素在悬停时不会改变样式的主要内容,如果未能解决你的问题,请参考以下文章

悬停元素改变其他元素

使用jQuery动画远离光标时,停止“:悬停”元素保持其状态?

悬停元素时更改背景

在状态改变时,做动画

tailwind css - 在悬停时为另一个元素设置动画

悬停一个元素时更改所有其他元素的样式