【问题标题】:Hover Zoom Effect While Using Object-Fit: Cover使用 Object-Fit 时的悬停缩放效果:Cover
【发布时间】:2015-10-26 21:52:01
【问题描述】:

我的目标是在用户将鼠标悬停在我页面上的图像上时产生放大效果。我找到了具有这种效果的代码;

.transition {
    -webkit-transform: scale(1.6); 
    -moz-transform: scale(1.6);
    -o-transform: scale(1.6);
    transform: scale(1.6);
}
#content {
    -webkit-transition: all .4s ease-in-out;
    -moz-transition: all .4s ease-in-out;
    -o-transition: all .4s ease-in-out;
    -ms-transition: all .4s ease-in-out;
}

当用户将鼠标悬停在图像上时向内容添加过渡。

我遇到的问题是将这种技术与对象匹配结合使用:覆盖。我希望图像适合固定大小的框(高度:250px;宽度:25%),同时保持其纵横比(使用 object-fit:cover 完成)。

但是,当用户将鼠标悬停在带有 object-fit:cover 的图像上时,它会恢复到原来的纵横比,进行缩放,然后再回到正确的纵横比。这导致了一些非常奇怪的视觉效果,可以在下面的小提琴中看到;

http://jsfiddle.net/y4yAP/982/

移除 #content 上的 object-fit:cover 将解决缩放问题,但会扭曲纵横比。

知道如何解决这个问题吗?

【问题讨论】:

  • 对象拟合也发生在我身上,但仅在 Firefox 上。在 Chrome 上完美运行。 IE 和 Edge 甚至不显示页面...

标签: javascript jquery html css


【解决方案1】:

请检查您需要做的就是将宽度设置为“最大宽度”,然后删除对象适配:

www.jsfiddle.net/y4yAP/985/

【讨论】:

  • 此解决方案不保持纵横比。正如我在上面的帖子中提到的,删除对象匹配将允许缩放正常工作,但会扭曲图像的纵横比。换句话说,我需要图像来看看它在我的小提琴中的表现,但我需要缩放功能就像它在你的小提琴中一样。感谢您的回复。
  • 你能给我看完整的html,css吗?或您尝试执行此操作的页面
  • 我无法显示完整的 HTML 或 CSS,但这些小提琴完美地说明了我遇到的问题。使用 object-fit:cover 缩放无法正常工作,但宽高比完美... without object-fit:cover 缩放正常,但宽高比关闭。
  • 给你:jsfiddle.net/y4yAP/986 如果你想保持纵横比,请使用:jsfiddle.net/y4yAP/987
  • 是你想要的吗?
【解决方案2】:

object-fit:cover 没有得到广泛支持,我也不是很熟悉,不知道你是否需要使用它,但我尝试了一些我更熟悉的东西。

如果所有图像都是“风景”,那么您可以使用width: 100%height: auto,CSS 将为您保持纵横比。为了将图像定位在容器的中心位置,我将position: relative 应用于容器并将position: absolute 应用于#content。见:https://css-tricks.com/almanac/properties/p/position/

对于缩放,您可以在 CSS 中使用 #content:hover { ... }(除非您需要 jQuery 用于其他目的)。

HTML:

<div id="imageDiv">
    <img id="content" src="http://upload.wikimedia.org/wikipedia/en/7/78/Small_scream.png" />
</div>

CSS:

#content:hover {
    -webkit-transform: translateX(-50%) translateY(-50%) scale(1.6); 
    -moz-transform: translateX(-50%) translateY(-50%) scale(1.6);
    -o-transform: translateX(-50%) translateY(-50%) scale(1.6);
    transform: translateX(-50%) translateY(-50%) scale(1.6);
}

#content {
    -webkit-transition: all .4s ease-in-out;
    -moz-transition: all .4s ease-in-out;
    -o-transition: all .4s ease-in-out;
    -ms-transition: all .4s ease-in-out;
}

#content {
    position: absolute;
    top: 50%;
    left: 50%;
    height: auto;
    width: 100%;
    -webkit-transform: translateX(-50%) translateY(-50%); 
    -moz-transform: translateX(-50%) translateY(-50%);
    -o-transform: translateX(-50%) translateY(-50%);
    transform: translateX(-50%) translateY(-50%);
}

#imageDiv { 
    position: relative;
    height: 250px;
    width: 450px;
    overflow: hidden;
}

FIDDLE(无 js):http://jsfiddle.net/pqs4vef7/2/

【讨论】:

  • 天哪,看起来这可能正是我所需要的。 Div 是固定的高度/宽度,图像裁剪以适合。图像保持纵横比。缩放效果很好,过渡非常平滑。我将在几个小时内尝试将其实施到我的网站中,如果成功,我将向你投出我所有的赞成票。感谢您的帮助,我会回来报告的。
猜你喜欢
  • 2013-04-18
  • 2014-09-26
  • 1970-01-01
  • 2015-09-05
  • 1970-01-01
  • 1970-01-01
  • 2013-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多