我以为这很简单,但我一直在挣扎。
我想把.content
的可见度和不透明度转换为0。(这是)。
然后在点击按钮时重新渲染(计数器c=1),然后将其可见度+ .content
的不透明度转换为0。(这只是不起作用-我甚至试图"中性"的过渡。
(JSFiddle)
谢谢你的帮助。
var c = 0;
var $content = $('.content');
$('.button').click(function() {
$content
// .removeClass('hidden-transition')
// .addClass('neuter-transition')
// .addClass('visible')
.html('new stuff: ' + c)
.removeClass('visible')
.addClass('hidden-transition');
c += 1;
});
.actionWrapper {
width: 10em;
background: cadetblue;
color: white;
}
.content {
padding: 1em;
overflow: auto;
height: 4em;
}
.button {
background-color: lightsalmon;
height: 2em;
width: 5em;
line-height: 2em;
text-align: center;
margin-top: 1em;
}
.button:hover {
cursor: pointer;
}
.hidden-transition {
visibility: hidden;
opacity: 0;
-webkit-transition: visibility 0s 5s, opacity 5s linear;
-moz-transition: visibility 0s 5s, opacity 5s linear;
-o-transition: visibility 0s 5s, opacity 5s linear;
transition: visibility 0s 5s, opacity 5s linear;
}
.neuter-transition {
-webkit-transition: none;
-moz-transition: none;
-o-transition: none;
transition: none;
}
.visible {
visibility: visible;
opacity: 1;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="actionWrapper">
<div class="content">
</div>
</div>
<div class="button">click</div>
你有3个选项
第一次使用超时,如
var c = 0;
var $content = $('.content');
$('.button').click(function () {
var rmc = 'visible',
adc = 'hidden-transition';
if (c == 0) {
setTimeout(function () {
c = 0;
adc = 'visible';
rmc = 'hidden-transition';
$content.html('new stuff: ' + c)
.removeClass(rmc)
.addClass(adc);
}, 5000);
}
$content.html('new stuff: ' + c)
.removeClass(rmc)
.addClass(adc);
c++;
});
var c = 0;
var $content = $('.content');
$('.button').click(function() {
var rmc = 'visible',
adc = 'hidden-transition';
if (c == 0) {
setTimeout(function() {
c = 0;
adc = 'visible';
rmc = 'hidden-transition';
$content.html('new stuff: ' + c)
.removeClass(rmc)
.addClass(adc);
}, 5000);
}
$content.html('new stuff: ' + c)
.removeClass(rmc)
.addClass(adc);
c++;
});
.actionWrapper {
width: 10em;
background: cadetblue;
color: white;
}
.content {
padding: 1em;
overflow: auto;
height: 3em;
}
.button {
background-color: lightsalmon;
height: 2em;
width: 5em;
line-height: 2em;
text-align: center;
margin-top: 1em;
}
.button:hover {
cursor: pointer;
}
.hidden-transition {
visibility: hidden;
opacity: 0;
-webkit-transition: visibility 0s 5s, opacity 5s linear;
-moz-transition: visibility 0s 5s, opacity 5s linear;
-o-transition: visibility 0s 5s, opacity 5s linear;
transition: visibility 0s 5s, opacity 5s linear;
}
.neuter-transition {
-webkit-transition: none;
-moz-transition: none;
-o-transition: none;
transition: none;
}
.visible {
visibility: visible;
opacity: 1;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="actionWrapper">
<div class="content"></div>
</div>
<div class="button">click</div>
按键为clicked
时不等待第二次复位c
,
var c = 0;
var $content = $('.content');
$('.button').click(function () {
var rmc = 'visible',
adc = 'hidden-transition';
if (c >= 5) {
c = 0;
adc = 'visible';
rmc = 'hidden-transition';
}
$content.html('new stuff: ' + c)
.removeClass(rmc)
.addClass(adc);
c++;
});
var c = 0;
var $content = $('.content');
$('.button').click(function() {
var rmc = 'visible',
adc = 'hidden-transition';
if (c >= 5) {
c = 0;
adc = 'visible';
rmc = 'hidden-transition';
}
$content.html('new stuff: ' + c)
.removeClass(rmc)
.addClass(adc);
c++;
});
.actionWrapper {
width: 10em;
background: cadetblue;
color: white;
}
.content {
padding: 1em;
overflow: auto;
height: 3em;
}
.button {
background-color: lightsalmon;
height: 2em;
width: 5em;
line-height: 2em;
text-align: center;
margin-top: 1em;
}
.button:hover {
cursor: pointer;
}
.hidden-transition {
visibility: hidden;
opacity: 0;
-webkit-transition: visibility 0s 5s, opacity 5s linear;
-moz-transition: visibility 0s 5s, opacity 5s linear;
-o-transition: visibility 0s 5s, opacity 5s linear;
transition: visibility 0s 5s, opacity 5s linear;
}
.neuter-transition {
-webkit-transition: none;
-moz-transition: none;
-o-transition: none;
transition: none;
}
.visible {
visibility: visible;
opacity: 1;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="actionWrapper">
<div class="content"></div>
</div>
<div class="button">click</div>
第三(我发现它是上面2个中最好的)参考使用JavaScript检测CSS动画完成
/* From Modernizr */
function whichTransitionEvent(){
var t;
var el = document.createElement('fakeelement');
var transitions = {
'transition':'transitionend',
'OTransition':'oTransitionEnd',
'MozTransition':'transitionend',
'WebkitTransition':'webkitTransitionEnd'
}
for(t in transitions){
if( el.style[t] !== undefined ){
return transitions[t];
}
}
}
var c = 0;
var $content = $('.content');
/* Listen for a transition! */
var transitionEvent = whichTransitionEvent();
transitionEvent && $content.on(transitionEvent, function() {
c=0;
$content.html('new stuff: ' + c)
.removeClass('hidden-transition')
.addClass('visible');
});
$('.button').click(function () {
$content.html('new stuff: ' + c)
.removeClass('visible')
.addClass('hidden-transition');
c++;
});
.actionWrapper {
width: 10em;
background: cadetblue;
color: white;
}
.content {
padding: 1em;
overflow: auto;
height: 3em;
}
.button {
background-color: lightsalmon;
height: 2em;
width: 5em;
line-height: 2em;
text-align: center;
margin-top: 1em;
}
.button:hover {
cursor: pointer;
}
.hidden-transition {
visibility: hidden;
opacity: 0;
-webkit-transition: visibility 0s 5s, opacity 5s linear;
-moz-transition: visibility 0s 5s, opacity 5s linear;
-o-transition: visibility 0s 5s, opacity 5s linear;
transition: visibility 0s 5s, opacity 5s linear;
}
.neuter-transition {
-webkit-transition: none;
-moz-transition: none;
-o-transition: none;
transition: none;
}
.visible {
visibility: visible;
opacity: 1;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="actionWrapper">
<div class="content"></div>
</div>
<div class="button">click</div>
你可以阅读更多关于css动画回调在这里