我有以下使用fadeToggle()
的JS工作正常,但它会执行display:none
因此我总是显示的第3个元素会跳起来,因此想知道是否可以更改{{1 }到 opacity
所以理论上块仍然存在,没有任何动作。
JS
0
我可以切换为在切换时将$('.ty-banner__image-item.gt-banner').bind('touchstart touchend', function(e) {
$(this).find('div.image .banner-overlay').fadeToggle('fade');
$(this).find('.content h2, .content p:first-child, .content p:eq(1)').fadeToggle();
});
设置为 opacity
吗?
更新为使用切换类来添加只更改0
的类淡入淡出但需要淡化它的方法。
opacity: 0
答案 0 :(得分:0)
你正确设置display:none
并且元素空间在元素取代之后消失,而你需要使用带有opacity
函数的animate()
,就像这样:
var toggleFlag = true;
$('#btn').on('click', function() {
// if the toggle flag is true, we set the opacity to 0,
// else we set it to 1, and animate the opacity property
var op = (toggleFlag) ? 0 : 1;
$('#second-div').stop().animate({'opacity': op}, 500);
// finally we switch the toggle flag value to keep in control
toggleFlag = !toggleFlag;
});

.divs {
display: block;
width: 150px;
height: 100px;
margin-bottom: 5px;
background-color: orange;
}
#second-div {
background-color: tomato;
}
#third-div {
background-color: skyblue;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div id="first-div" class="divs"></div>
<div id="second-div" class="divs"></div>
<div id="third-div" class="divs"></div>
<button id="btn">animate</button>
&#13;
或者,您可以使用.css()
函数进行CSS转换,如下所示:
var toggleFlag = true;
$('#btn').on('click', function() {
var op = (toggleFlag) ? 0 : 1;
$('#second-div').css({'opacity': op, 'transition': 'opacity 0.5s'});
toggleFlag = !toggleFlag;
});
<强>更新强>
您需要在touchstart
或touchend
上绑定它,但不能同时绑定它们,因为它会对这两个事件做出响应并将其opacity
切换得过快以至于淡入淡出效果赢了# 39;显而易见。
答案 1 :(得分:0)
AFAIK,这是fadeToggle
的行为,你无法做很多事情,但你可以使用更适合你需要的替代方法,例如fadeTo。
fadeTo
只会更改元素的不透明度,而切换部分则是您自己必须实现的内容,但它不应该复杂。
答案 2 :(得分:-1)
使用opacity:0
.hidden {
opacity: 0;
}
使用jQuery在元素上切换类
$("selector").toggleClass("hidden");