我有一个页面显示可以通过jQuery调整大小的人的图片。我正在使用一个精灵图像,显示3个方块,在您选择/悬停它们时会发生变化。我正在使用CSS3 Transition&转换(RotateY)以对更改进行动画处理。 转换和转换适用于Chrome(第22版),但不适用于Firefox(第16版)。
我创建了一个jsFiddle示例:http://jsfiddle.net/WPEbW/7/
<div id="divOptions" runat="server" style="padding: 0 10px; margin: 10px; overflow: hidden; zoom: 1">
<div style="float: left">
<div id="divSmallImage" runat="server" class="ResizeImages Small" title="Small">
</div>
<div id="divMediumImage" runat="server" class="ResizeImages Medium Selected" title="Medium">
</div>
<div id="divLargeImage" runat="server" class="ResizeImages Large" title="Large">
</div>
</div>
</div>
.ResizeImages { cursor: pointer; display: inline-block; background-position: 0; -moz-transform:rotateY(0deg) }
.ResizeImages:hover { box-shadow: #CCC 1px 1px 5px; -webkit-transition: none; -moz-transition: none; -o-transition: none; transition: none; }
.ResizeImages.Selected { -webkit-transition: background-position 0 .4s,-webkit-transform 1s; -webkit-transform: rotateY(180deg); -moz-transition: background-position 0 .4s,-moz-transform 1s; -moz-transform: rotateY(180deg); -o-transition: background-position 0 .4s,-o-transform 1s; -o-transform: rotateY(180deg); transition: background-position 0 .4s,transform 1s; transform: rotateY(180deg); }
.ResizeImages.Small { background: url('https://www.new-innov.com/RMSImages/square_sprite.png') 0 0 no-repeat; width: 12px; height: 12px; }
.ResizeImages.Small:hover { background-position: 0 -12px; }
.ResizeImages.Small.Selected { background-position: 0 -24px; }
.ResizeImages.Medium { background: url('https://www.new-innov.com/RMSImages/square_sprite.png') -12px 0 no-repeat; width: 16px; height: 16px; }
.ResizeImages.Medium:hover { background-position: -12px -16px; }
.ResizeImages.Medium.Selected { background-position: -12px -32px; }
.ResizeImages.Large { background: url('https://www.new-innov.com/RMSImages/square_sprite.png') -28px 0 no-repeat; width: 20px; height: 20px; }
.ResizeImages.Large:hover { background-position: -28px -20px; }
.ResizeImages.Large.Selected { background-position: -28px -40px; }
$(document).ready(function() {
function SetSize(selectedImage) {
if (typeof selectedImage !== 'undefined') {
$('.ResizeImages.Selected').removeClass('Selected');
$(selectedImage).addClass('Selected');
}
}
SetSize();
$('.ResizeImages').click(function() {
SetSize(this);
});
});
我相信我使用的转换和转换应该在Firefox中运行,但不知道为什么它们不适用。
提前致谢,
-Aaron
答案 0 :(得分:3)
background-position 0 .4s
不是http://dev.w3.org/csswg/css3-transitions/#single-transition中定义的有效<single-transition>
,因此CSS解析器会丢弃您的整个-moz-transition
规则。正如错误控制台所说:
[03:47:02.876]解析'-moz-transition'的值时出错。宣言下降。 @ http://fiddle.jshell.net/WPEbW/7/show/:18
它可以在Chrome中使用,因为Chrome实际上并没有真正实现规范来正确解析转换值。
答案 1 :(得分:0)
感谢@Boris Zbarsky,我能够解决自己的问题。我拼写了过渡,而不是尝试使用速记版本。
我更新了jsFiddle示例:http://jsfiddle.net/WPEbW/10/
这是我改变的唯一课程:
.ResizeImages.Selected {
-webkit-transition-property: background-position, -webkit-transform;
-webkit-transition-duration: 0s, 1s;
-webkit-transition-delay: .4s, 0s;
-webkit-transform: rotateY(180deg);
-moz-transition-property: background-position, -moz-transform;
-moz-transition-duration: 0s, 1s;
-moz-transition-delay: .4s, 0s;
-moz-transform: rotateY(180deg);
-o-transition-property: background-position, -o-transform;
-o-transition-duration: 0s, 1s;
-o-transition-delay: .4s, 0s;
-o-transform: rotateY(180deg);
transition-property: background-position, transform;
transition-duration: 0s, 1s;
transition-delay: .4s, 0s;
transform: rotateY(180deg);
}