这可能已经在某个地方得到了解答,但经过一些搜索后我还没有找到。
我有一系列背景图像的div。大小设置为background-size:cover。
但我希望能够让图像放大并在悬停时增长。这种转变似乎与封面属性无关。实际上,图像放大但没有过渡效果。它立即从"封面"在这种情况下,110%。当原始背景大小设置为100%时,它可以正常工作。
但是有了这个,在调整页面大小时,图像似乎有点落后于div,这不是我想要的。封面始终保持中心,我想要的。
任何有关如何进行转换的建议,因为它会以覆盖或相同的效果增长。
Ilmiont
答案 0 :(得分:18)
使用背景大小的CSS动画时,不能使用关键字(例如封面)。
此处有更多信息:https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties
相关文字:
background-size - 是的,作为a的简单列表的可重复列表 长度,百分比或calc();当两个值都是长度时,它们就是 插值为长度;当两个值都是百分比时,它们就是 内插为百分比;否则,两个值都会转换为 一个calc()函数,它是长度和百分比之和(每个 可能为零),这些calc()函数每半插补一次 作为实数。 。 这意味着关键字值无法设置动画。
获得此效果的一种方法是将带背景图像的元素放置在隐藏溢出的包裹元素中并应用缩放变换。
.wrapper {
width:300px;
height:400px;
overflow:hidden;
}
.image {
background:url("http://placekitten.com/g/500/500");
background-size:cover;
width:100%;
height:100%;
transition: transform 2s;
}
.image:hover { transform:scale(1.1) }
<div class="wrapper">
<div class="image"></div>
</div>
答案 1 :(得分:0)
我能够通过将图像加载到子div中来解决此问题。
<div class='slide'>
<div class='img' style='background-image:url(img/slide1.jpg)'></div>
</div>
然后调整图像容器的比例。
#slideshow .slide {
position:absolute;
top:0%;
left:0%;
height:100%;
width:100%;
background-position:center center;
overflow:hidden;
}
#slideshow .img {
position:absolute;
background-size:cover;
top:-5%;
left:-5%;
width:110%;
height:110%;
transition: width 1s, height 1s, top 1s, left 1s;
}
#slideshow .active .img{
width:100%;
height:100%;
top:0;
left:0;
}
完整的幻灯片标记
<div id='slideshow' class='slider' >
<div class='slides'>
<div class='slide'>
<div class='img' style='background-image:url(img/slide1.jpg)'></div>
<div class='caption'>
<hr />
<h1>PRIVATE HAVEN</h1>
</div>
</div>
<div class='slide'>
<div class='img' style='background-image:url(img/slide2.jpg)'></div>
<div class='caption'>
<hr />
<h1>BLISSFUL SATISFACTION</h1>
</div>
</div>
<div class='slide' >
<div class='img' style='background-image:url(img/slide3.jpg)'></div>
<div class='caption'>
<hr />
<h1>LIVE IN NATURE AT THE MOUNTAIN’S DOOR</h1>
</div>
</div>
</div>
</div>