javascript - 使用 Object-Fit 时的悬停缩放效果 : Cover

标签 javascript jquery html css

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

.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;
}

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

我遇到的问题是将此技术与 object-fit: cover 结合使用。我希望图像适合固定大小的框(高度:250 像素;宽度:25%),同时保持其纵横比(使用 object-fit: cover 实现)。

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

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

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

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

最佳答案

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/

关于javascript - 使用 Object-Fit 时的悬停缩放效果 : Cover,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31810179/

相关文章:

javascript - 如何反转包含复杂表情符号的字符串?

javascript - 如何访问 jQuery 事件中的对象方法

javascript - 如果我更改 outerHTML,事件监听器将不起作用

php - 如何保存对 DOM 元素所做的修改?

jquery - 当用户使用自定义弹出表单更改数据时如何重新加载数据jqGrid

html - Textarea(错误地?)从父类继承空白 css 属性

javascript - javascript 中的 .length 是否遍历整个数组?

javascript - 如何计算表格中的所有值?

javascript - onload 事件处理程序是否在执行后自动释放?

html - 为什么位置的 div 默认值是静态的而不是相对的?