【问题标题】:Bootstrap : Mouse-enter animation issue with img-responsive [Opera only]Bootstrap:img-responsive [Opera only] 的鼠标输入动画问题
【发布时间】:2016-01-10 08:53:07
【问题描述】:

情况:我有以下简单的 jQuery 代码:

 $('img').each(function()
        {
            $(this).mouseenter(function()
            {
                $(this).css('opacity','1');
            });
            $(this).mouseleave(function()
            {
                $(this).css('opacity','0.4');
            });
        });

使用 CSS 规则:

    img
    {
        opacity: 0.4;
        transition: all 0.5s;
        -webkit-transition: all 0.5s;
    }

用于向图像添加简单的不透明度更改动画(悬停时):

<div class="well"><img src="" class="img-responsive" alt=""></div>

https://jsfiddle.net/k4afv6fk/1/

问题: img-responsive 类在这里似乎有点小错误 - 每次动画继续播放时,图像都会重新缩放(大约 1px)几次,然后返回到原始大小。看起来不太好。

问题: 有什么方法可以防止在动画响应 img 的对象时出现 1px 缩放?如果没有 img-responsive 类,问题不会发生,但我希望这张图片能够响应:)

@Edit :我刚刚发现,这个问题只发生在 Opera 浏览器下。有什么方法可以改进代码以在 Opera 上正常工作吗?

【问题讨论】:

  • 为什么不使用:hover? Mouseenter 和 mouseleave 仍然保持 :hover 不变,除非您为此严格定义了不同的行为。更不用说,你并没有告诉它做任何事情。您不希望人们使用标签时出现不透明效果吗?
  • 不是说它与解决方案有关,但你为什么要使用那个 jQuery 代码呢?看起来你根本不需要它。这是一个简单的悬停效果,可以通过 CSS 中的一行代码轻松实现。

标签: jquery css twitter-bootstrap twitter-bootstrap-3


【解决方案1】:

这可以像前面所说的那样不用javascript来完成

CSS:

   img
    {
        opacity: 0.4; //include this css lastly, and if this doesn't work add !important
        transition: all 0.5s;
        -webkit-transition: all 0.5s;
    }
 img:hover{
    opacity:1; //include this css lastly, and if this doesn't work add !important after 1
    }

HTML:

<img class="img-responsive" src="http://joombig.com/demo-extensions1/images/gallery_slider/Swan_large.jpg">

小提琴:https://jsfiddle.net/k4afv6fk/

【讨论】:

  • 我已将 jQuery 代码更改为这个简单的 :hover 规则,但问题仍然存在。也许这与图像在
    部分内的事实有关?
  • 我不相信,请从这段代码中获取 jquery,使用 css 会更快,因为您使用的是硬件加速 :)
  • 我已经用 CSS 替换了 jQuery 代码,但是正如你在这里看到的 jsfiddle.net/k4afv6fk/1 ,当图像在
    里面时它的错误:(
  • 你寄给我的小提琴完美无缺:)
  • 我刚刚在 Firefox 中打开它,它就像一个魅力......看起来这个错误只在 Opera 浏览器中可见。我认为由于浏览器故障,这是不可能改善的?
【解决方案2】:

试试这个:

img
{
    opacity: 0.4;
    -webkit-transition: opacity 0.5s;
    transition: opacity 0.5s;
}

P.S. 带前缀的属性应该在不带前缀的属性之前。 (请检查我们的 cmets 是否使用 :hover 而不是那个 jQuery 代码。)

【讨论】:

  • 我已将 jQuery 代码更改为这个简单的 :hover 规则,但问题仍然存在。也许这与图像在
    部分内的事实有关?
猜你喜欢
相关资源
最近更新 更多
热门标签