演示:http: //jsfiddle.net/GmvUQ/5/
更新的 HTML
<div>
<div class="buttons">
<button onclick="changeboleto(0)">Click here</button>
<button onclick="changeboleto(500)">Click here</button>
<button onclick="changeboleto(1000)">Click here</button>
</div>
<div class="circle girl">
</div>
<div class="circle lamborghini">
</div>
</div>
请注意,我已经删除了</div>
每个.circle
. 相反,我为每个类添加了一个额外的类,它设置了background-image
(如有必要,还为它们设置了一些定位)。
更新的 CSS
.circle {
width: 250px;
height: 250px;
z-index: 10;
position: absolute;
border-radius: 50%;
overflow: hidden;
margin: 0 auto;
background-repeat: no-repeat;
background-size: cover;
background-origin: content-box;
background-position: center center;
}
.lamborghini {
background-image: url(http://www.hdwallpapers.in/walls/2013_wheelsandmore_lamborghini_aventador-wide.jpg);
}
.girl {
background-image: url(http://www.hdwallpapers.in/walls/colorful_background_girl-normal5.4.jpg);
top: 50%;
}
.buttons {
position: relative;
z-index: 5;
}
我已经将大部分 CSS 移到了.circle
类中,因为这对两个图像集都是通用的。请特别注意background-*
属性的值。
更新了 JQuery
function changeboleto(pix) {
circleHeight = pix;
circleWidth = pix;
$('.circle').animate({
'width' : circleWidth,
'height': circleHeight
}, 1500, 'linear');
//css('width', circleWidth).css('height', circleHeight);
changeCircleBackgroundToWindow();
}
function changeCircleBackgroundToWindow() {
windowWidth = $(window).width();
windowHeight = $(window).height();
$(".circle > div").animate({
'width' : windowWidth,
'height': windowHeight
}, 1500, 'linear');
$(".circle > div").animate({
'width' : windowWidth,
'height': windowHeight
}, 1500, 'linear');
//$(".circle-background").css("width", windowWidth).css("height", windowHeight);
//$(".circle-background2").css("width", windowWidth).css("height", windowHeight);
}
我没有将 JQuery 和 CSS 过渡混合在一起,而是将所有动画集中在 JQuery 中。
我已经使用了该animate()
函数并指定了缓动方法。默认的缓动是swing
,但我已经使用linear
了,因为它以恒定的速度推进动画。
编辑
上面的解决方案包括允许图像随动画缩放的 CSS。但是,您要求图像始终保持相同的“缩放级别”。
要实现这一点,只需从 CSS 中删除一行,即这一行:
.circle {
...
background-size: cover;
...
}