重置元素的 .style / 恢复为 'initial' 而不覆盖 .style

Resetting the .style of an element / reverting to 'initial' without .style overriding

我在另一个 div (.projectContainer) 中有一个 div (.projectTitle)。当屏幕大于 1000px 宽时,.projectTitle 被初始化为 opacity:0;。当屏幕宽度小于1000px时,初始化为opacity:1;。参见:

@media (min-width: 1000px) {
    .projectTitle {
        opacity:0;
    }
}
@media (max-width: 1000px) {
    .projectTitle {
        opacity:1;
    }
}

现在,如果 .projectContainer 在屏幕宽度超过 1000px 时悬停,.projectTitle 的不透明度应动画为 1,并在未悬停时返回 0。但是,如果在屏幕小于 1000px 时悬停它,则不会发生任何事情;在这种情况下,它应该始终保持在 1。

我有一个变量 (windowState),它会根据屏幕的宽度而变化:

小于 1000px,windowState = 3

大于 1000px,windowState = 2

我有一个看起来像这样的 jQuery 事件来处理悬停,它可以正常工作:

$(".projectContainerr").hover(
    function(){
        if (windowState != 3){
            $('.projectTitle', this).animate({
                opacity:1},100);
        }
    },
    function(){
        if(windowState != 3){
            $('.projectTitle', this).animate({
                opacity:"initial"},100);
        }
    }
);

问题

当不透明度在取消悬停后重置为 initial 的值(也就是媒体查询中定义的值)时,该值将被悬停时已设置为 1 的事实覆盖上。悬停的“1”值被放置到元素的样式中,覆盖 css 的继承值,'initial' 已将它返回到该元素。

如何在不使用元素样式的情况下防止此值被覆盖/重置/设置动画?

你为什么不使用 css3 转换而不是 jQuery

@media (min-width: 1000px) {
  .projectContainer:hover .projectTitle{
    opacity: 1;
    transition: opacity 1s ease-in-out;
    -moz-transition: opacity 1s ease-in-out;
    -webkit-transition: opacity 1s ease-in-out;
  }
  .projectTitle {
    opacity:0;
  }
}
@media (max-width: 1000px) {
  .projectTitle {
    opacity:1;

  }
}

这是一个demo