javascript - 悬停时类更改 : CSS vs jQuery (transition glich)

标签 javascript jquery html css

我的网站是用多个 block 构建的,其中包含 IMG、TITLE + TEXT,如下所示(它们在 3 列中):

<div class="element">
  <img class="responsive grey" src="img_src" />
  <article>
    <h1>title</h1>
    <p>text</p>
  </article>
</div>

“.grey”(我想要使用transition)的 css 是:

img.grey {
  -webkit-filter: grayscale(100%);
  filter: grayscale(100%);
  filter: gray;
  filter: url("data:image/svg+xml;utf8,<svg version='1.1' xmlns='http://www.w3.org/2000/svg' height='0'><filter id='greyscale'><feColorMatrix type='matrix' values='0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0' /></filter></svg>#greyscale");

  /* here should go transition */

}

加上对 div:hover 的操作是:

.element:hover img.grey {
  -webkit-filter: none;
  filter: none;

  /* here should go transition */

}

如您所见,将鼠标指向整个 DIV 应该只触发 IMG 的悬停 Action 。

问题是,当我将过渡添加到“img.grey”和“.element:hover img.grey”时,因为我希望它平滑地改变,所以效果变得有点毛刺。我猜这是因为“filter: none”和“transition: transition_options;”有冲突。同时不使用过滤器进行过滤 :) 有时它会变得平滑,有时在悬停后我会得到白色背景,nvm。许多故障效果。

我尝试的是删除“.element:hover img.grey {}”并简单地添加将切换“.grey”类 onmouseover/onmouseout(悬停)的 jQuery 脚本。我在“$('element').hover()”函数中使用了标准的“toggleClass()”。

还有一些我在 css-tricks.com 上发现的:

$('.element').hover(
       function(){ $("img").removeClass('grey') },
       function(){ $("img").addClass('grey') }
)

我认为这会有所帮助,因为我正在避免“过滤器:无 VS 转换”冲突。但是两者都根本不起作用。谁能帮我解决这个问题?

附言没有工作意味着没有悬停效果。悬停 Action 图像保持灰度。

最佳答案

您只是想在图像悬停时进行过渡吗?然后你可以试试这个——http://codepen.io/sergdenisov/pen/GJoyNz .

img {
    width: 300px;
    height: 300px;
}

img#lena-desaturate {
    -webkit-filter: grayscale(1);
    -webkit-filter: grayscale(100%);
    filter: gray;
    filter: url(#greyscale);
    filter: grayscale(100%);
    -webkit-transition: all 0.5s;
    transition: all 0.5s;
}

    img#lena-desaturate:hover {
        -webkit-filter: grayscale(0);
        filter: none;
        filter: grayscale(0);
    }

否则我不明白你的问题。

关于javascript - 悬停时类更改 : CSS vs jQuery (transition glich),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30139040/

相关文章:

html - select 选项值可以是不同的类型吗?

javascript - 为什么我不能在我的 Angular 2 TypeScript 代码中使用 indexOf 函数?

javascript - 如何在 <v-treeview> Vuetify 中添加新节点

jquery - 使用 .wrapAll child 的宽度被忽略

javascript - Youtube 可以很好地与 Turbolinks 一起玩吗?

Javascript、HTML 和 onClick - 函数未定义

javascript - Canvas 预渲染?

javascript - 使用 Javascript 将类插入到元素中

Javascript 改进了原生 for 循环

javascript - 在点击链接之前,点击处理程序是否总是完全执行?