我希望这很简单,但是我一直在努力。
我想将.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>
第二次重置
c
当按钮为clicked
时,无需等待,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中最好的)
/* 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>
您可以阅读有关Detecting CSS Animation Completion with JavaScript的更多信息
关于jquery - 多次应用CSS过渡,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32391229/