我正在打開一個簡單的側欄,當用戶單擊切換按鈕並打開時,我會在圖標旁邊顯示一些文本。淡入淡出或顯示時文本跳起
然而,當我打開側邊欄,並嘗試fadeIn()
或show()
文本,它跳'起來,創建擴大然後放氣的側邊欄,而側邊欄本身正在擴大的不利影響。
有沒有辦法讓這個文本出現在圖標旁邊而不是跳躍效果?
我認爲這是因爲時機,但我不知道如何解決它,我寧可不使用setTimeout()
;
https://jsfiddle.net/dqf8byn9/
我正在打開一個簡單的側欄,當用戶單擊切換按鈕並打開時,我會在圖標旁邊顯示一些文本。淡入淡出或顯示時文本跳起
然而,當我打開側邊欄,並嘗試fadeIn()
或show()
文本,它跳'起來,創建擴大然後放氣的側邊欄,而側邊欄本身正在擴大的不利影響。
有沒有辦法讓這個文本出現在圖標旁邊而不是跳躍效果?
我認爲這是因爲時機,但我不知道如何解決它,我寧可不使用setTimeout()
;
https://jsfiddle.net/dqf8byn9/
你可以嘗試只顯示後的側邊欄擴展的文本。 animate()
可以採取完整的運行時作爲自變量的函數。試着改變,像這樣的代碼:
$('.sidebar').animate({ width: '200px' }, 400, "swing", function(){ $('span').removeClass('hidden'); });
400
和"swing"
是持續時間和寬鬆的默認值。
添加white-space:nowrap;
到.sidebar a
選擇將解決這個問題。它也可以讓你有側邊欄一樣寬,或者只要你喜歡窄。
這段代碼顯示代碼工作。
$('.sidebar-toggle').click(function() {
if ($(this).hasClass('active')) {
$(this).removeClass('active');
$('.sidebar').stop().animate({
width: '50px'
});
$('span').stop().fadeOut();
} else {
$(this).addClass('active');
$('.sidebar').stop().animate({
width: '200px'
});
$('span').stop().fadeIn();
}
});
.sidebar {
width: 50px;
background: #ddd;
}
.sidebar a {
display: block;
white-space: nowrap;
}
span {
position: relative;
top: -1em;
left: 1em;
}
.hidden {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="sidebar">
<a class="sidebar-toggle">
<img src="http://placehold.it/30x30" />
<span class="hidden">Test</span>
</a>
<a>
<img src="http://placehold.it/30x30" />
<span class="hidden">Test</span>
</a>
<a>
<img src="http://placehold.it/30x30" />
<span class="hidden">Test</span>
</a>
</div>
雖然這是做這件事,我的版本允許JavaScript來仍停留幾乎相同(含有少量的改變,就像出發代碼並不完美),因爲它使用了1號線的CSS來解決該問題。 – Daniel